{"version":3,"mappings":"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b;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpC;AAAA,EAAY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,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,WAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,WAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,YAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,YAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,WAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,WAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,YAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,YAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,WAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,WAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,YAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,YAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,WAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,WAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,YAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,YAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,WAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,WAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,YAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,YAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,WAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,WAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,YAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,YAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,WAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,WAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,YAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,YAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,WAAM,KAAK,KAAK,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,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,MACF;AAAA,IACF;AAAA,IACD,KAAK;AAAA,MACH,KAAK;AAAA,MACL,QAAQ;AAAA,QACN;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,UACE;AAAA,UACA;AAAA,QACD;AAAA,QACD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C5B;AClFA,MAAM,cAAc,IAAI,YAAY;AAAA,EAChC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;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AAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA;AAAA,IAEA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;A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AAG,eAAe,YAAY,UAAU;AAAA,UAC7E,eAAe,YAAY,UAAU;AAAA,UAAG,eAAe,YAAY,UAAU;AAAA,UAC7E,eAAe,YAAY,UAAU;AAAA,UAAG,eAAe,WAAY,UAAU;AAAA,UAC7E,eAAe,WAAY,UAAU;AAAA,UAAG,eAAe,YAAY,UAAU;AAAA,UAC7E,eAAe,YAAY,UAAU;AAAA,UAAG,eAAe,YAAY,SAAU;AAAA,UAC7E,eAAe,YAAY,SAAU;AAAA,UAAG,eAAe,YAAY,UAAU;AAAA,UAC7E,eAAe,YAAY,UAAU;AAAA,UAAG,eAAe,YAAY,SAAU;AAAA,UAC7E,eAAe,WAAY,UAAU;AAAA,UAAG,eAAe,WAAY,UAAU;AAAA,UAC7E,eAAe,WAAY,UAAU;AAAA,UAAG,eAAe,YAAY,UAAU;AAAA,UAC7E,eAAe,YAAY,UAAU;AAAA,UAAG,eAAe,YAAY,UAAU;AAAA,UAC7E,eAAe,YAAY,UAAU;AAAA,UAAG,eAAe,YAAY,SAAU;AAAA,UAC7E,eAAe,YAAY,UAAU;AAAA,UAAG,eAAe,YAAY,UAAU;AAAA,UAC7E,eAAe,YAAY,UAAU;AAAA,UAAG,eAAe,YAAY,UAAU;AAAA,UAC7E,eAAe,WAAY,UAAU;AAAA,UAAG,eAAe,WAAY,SAAU;AAAA,UAC7E,eAAe,WAAY,UAAU;AAAA,UAAG,eAAe,WAAY,UAAU;AAAA,UAC7E,eAAe,YAAY,UAAU;AAAA,UAAG,eAAe,YAAY,UAAU;AAAA,UAC7E,eAAe,YAAY,UAAU;AAAA,UAAG,eAAe,YAAY,UAAU;AAAA,UAC7E,eAAe,YAAY,UAAU;AAAA,UAAG,eAAe,YAAY,SAAU;AAAA,UAC7E,eAAe,YAAY,UAAU;AAAA,UAAG,eAAe,YAAY,UAAU;AAAA,UAC7E,eAAe,YAAY,UAAU;AAAA,UAAG,eAAe,YAAY,SAAU;AAAA,UAC7E,eAAe,YAAY,UAAU;AAAA,UAAG,eAAe,YAAY,UAAU;AAAA,UAC7E,eAAe,YAAY,UAAU;AAAA,UAAG,eAAe,WAAY,SAAU;AAAA,UAC7E,eAAe,WAAY,UAAU;AAAA,UAAG,eAAe,WAAY,UAAU;AAAA,UAC7E,eAAe,WAAY,UAAU;AAAA,UAAG,eAAe,WAAY,UAAU;AAAA,UAC7E,eAAe,WAAY,UAAU;AAAA,UAAG,eAAe,YAAY,UAAU;AAAA,UAC7E,eAAe,YAAY,UAAU;AAAA,UAAG,eAAe,YAAY,UAAU;AAAA,UAC7E,eAAe,YAAY,UAAU;AAAA,UAAG,eAAe,YAAY,UAAU;AAAA,UAC7E,eAAe,YAAY,UAAU;AAAA,UAAG,eAAe,YAAY,SAAU;AAAA,UAC7E,eAAe,YAAY,SAAU;AAAA,UAAG,eAAe,YAAY,UAAU;AAAA,UAC7E,eAAe,YAAY,UAAU;AAAA,UAAG,eAAe,YAAY,UAAU;AAAA,UAC7E,eAAe,YAAY,UAAU;AAAA,UAAG,eAAe,YAAY,SAAU;AAAA,UAC7E,eAAe,YAAY,UAAU;AAAA,UAAG,eAAe,YAAY,UAAU;AAAA,UAC7E,eAAe,WAAY,UAAU;AAAA,UAAG,eAAe,WAAY,UAAU;AAAA,UAC7E,eAAe,WAAY,UAAU;AAAA,UAAG,eAAe,WAAY,SAAU;AAAA,UAC7E,eAAe,WAAY,SAAU;AAAA,UAAG,eAAe,WAAY,UAAU;AAAA,UAC7E,eAAe,YAAY,SAAU;AAAA,UAAG,eAAe,YAAY,UAAU;AAAA,UAC7E,eAAe,YAAY,UAAU;AAAA,UAAG,eAAe,YAAY,UAAU;AAAA,UAC7E,eAAe,YAAY,SAAU;AAAA,UAAG,eAAe,YAAY,UAAU;AAAA,QACtF;AAGK,YAAI,IAAI;AACR,SAAC,WAAY;AACT,mBAASnxB,KAAI,GAAGA,KAAI,IAAIA,MAAK;AACzB,cAAEA,EAAC,IAAI;UACV;AAAA,QACV;AAKK,YAAI4I,UAAS,OAAO,SAAS,OAAO,OAAO;AAAA,UACvC,UAAU,WAAY;AAClB,iBAAK,QAAQ,IAAI,aAAa,KAAK;AAAA,cAC/B,IAAI,QAAQ,KAAK,YAAY,UAAU;AAAA,cAAG,IAAI,QAAQ,KAAK,YAAY,UAAU;AAAA,cACjF,IAAI,QAAQ,KAAK,YAAY,UAAU;AAAA,cAAG,IAAI,QAAQ,KAAK,YAAY,UAAU;AAAA,cACjF,IAAI,QAAQ,KAAK,YAAY,UAAU;AAAA,cAAG,IAAI,QAAQ,KAAK,YAAY,SAAU;AAAA,cACjF,IAAI,QAAQ,KAAK,WAAY,UAAU;AAAA,cAAG,IAAI,QAAQ,KAAK,YAAY,SAAU;AAAA,YAClG,CAAc;AAAA,UACJ;AAAA,UAED,iBAAiB,SAAU,GAAG,QAAQ;AAElC,gBAAI,IAAI,KAAK,MAAM;AAEnB,gBAAI,KAAK,EAAE,CAAC;AACZ,gBAAI,KAAK,EAAE,CAAC;AACZ,gBAAI,KAAK,EAAE,CAAC;AACZ,gBAAI,KAAK,EAAE,CAAC;AACZ,gBAAI,KAAK,EAAE,CAAC;AACZ,gBAAI,KAAK,EAAE,CAAC;AACZ,gBAAI,KAAK,EAAE,CAAC;AACZ,gBAAI,KAAK,EAAE,CAAC;AAEZ,gBAAI,MAAM,GAAG;AACb,gBAAI,MAAM,GAAG;AACb,gBAAI,MAAM,GAAG;AACb,gBAAI,MAAM,GAAG;AACb,gBAAI,MAAM,GAAG;AACb,gBAAI,MAAM,GAAG;AACb,gBAAI,MAAM,GAAG;AACb,gBAAI,MAAM,GAAG;AACb,gBAAI,MAAM,GAAG;AACb,gBAAI,MAAM,GAAG;AACb,gBAAI,MAAM,GAAG;AACb,gBAAI,MAAM,GAAG;AACb,gBAAI,MAAM,GAAG;AACb,gBAAI,MAAM,GAAG;AACb,gBAAI,MAAM,GAAG;AACb,gBAAI,MAAM,GAAG;AAGb,gBAAI,KAAK;AACT,gBAAI,KAAK;AACT,gBAAI,KAAK;AACT,gBAAI,KAAK;AACT,gBAAI,KAAK;AACT,gBAAI,KAAK;AACT,gBAAI,KAAK;AACT,gBAAI,KAAK;AACT,gBAAI,KAAK;AACT,gBAAI,KAAK;AACT,gBAAI,KAAK;AACT,gBAAI,KAAK;AACT,gBAAI,KAAK;AACT,gBAAI,KAAK;AACT,gBAAI,KAAK;AACT,gBAAI,KAAK;AAGT,qBAAS5I,KAAI,GAAGA,KAAI,IAAIA,MAAK;AACzB,kBAAI;AACJ,kBAAI;AAGJ,kBAAI,KAAK,EAAEA,EAAC;AAGZ,kBAAIA,KAAI,IAAI;AACR,sBAAM,GAAG,OAAO,EAAE,SAASA,KAAI,CAAC,IAAQ;AACxC,sBAAM,GAAG,MAAO,EAAE,SAASA,KAAI,IAAI,CAAC,IAAI;AAAA,cAC7D,OAAwB;AAEH,oBAAI,UAAW,EAAEA,KAAI,EAAE;AACvB,oBAAI,WAAW,QAAQ;AACvB,oBAAI,WAAW,QAAQ;AACvB,oBAAI,WAAa,aAAa,IAAM,YAAY,OAAS,aAAa,IAAM,YAAY,MAAQ,aAAa;AAC7G,oBAAI,WAAa,aAAa,IAAM,YAAY,OAAS,aAAa,IAAM,YAAY,OAAS,aAAa,IAAM,YAAY;AAGhI,oBAAI,UAAW,EAAEA,KAAI,CAAC;AACtB,oBAAI,WAAW,QAAQ;AACvB,oBAAI,WAAW,QAAQ;AACvB,oBAAI,WAAa,aAAa,KAAO,YAAY,OAAS,YAAY,IAAM,aAAa,MAAQ,aAAa;AAC9G,oBAAI,WAAa,aAAa,KAAO,YAAY,OAAS,YAAY,IAAM,aAAa,OAAS,aAAa,IAAM,YAAY;AAGjI,oBAAI,MAAO,EAAEA,KAAI,CAAC;AAClB,oBAAI,OAAO,IAAI;AACf,oBAAI,OAAO,IAAI;AAEf,oBAAI,OAAQ,EAAEA,KAAI,EAAE;AACpB,oBAAI,QAAQ,KAAK;AACjB,oBAAI,QAAQ,KAAK;AAEjB,sBAAM,UAAU;AAChB,sBAAM,UAAU,QAAS,QAAQ,IAAM,YAAY,IAAK,IAAI;AAC5D,sBAAM,MAAM;AACZ,sBAAM,MAAM,WAAY,QAAQ,IAAM,YAAY,IAAK,IAAI;AAC3D,sBAAM,MAAM;AACZ,sBAAM,MAAM,SAAU,QAAQ,IAAM,UAAU,IAAK,IAAI;AAEvD,mBAAG,OAAO;AACV,mBAAG,MAAO;AAAA,cACb;AAED,kBAAI,MAAQ,KAAK,KAAO,CAAC,KAAK;AAC9B,kBAAI,MAAQ,KAAK,KAAO,CAAC,KAAK;AAC9B,kBAAI,OAAQ,KAAK,KAAO,KAAK,KAAO,KAAK;AACzC,kBAAI,OAAQ,KAAK,KAAO,KAAK,KAAO,KAAK;AAEzC,kBAAI,WAAY,OAAO,KAAO,MAAM,MAAS,MAAM,KAAQ,OAAO,MAAQ,MAAM,KAAO,OAAO;AAC9F,kBAAI,WAAY,OAAO,KAAO,MAAM,MAAS,MAAM,KAAQ,OAAO,MAAQ,MAAM,KAAO,OAAO;AAC9F,kBAAI,WAAY,OAAO,KAAO,MAAM,OAAS,OAAO,KAAO,MAAM,OAAS,MAAM,KAAO,OAAO;AAC9F,kBAAI,WAAY,OAAO,KAAO,MAAM,OAAS,OAAO,KAAO,MAAM,OAAS,MAAM,KAAO,OAAO;AAG9F,kBAAI,KAAMmxB,GAAEnxB,EAAC;AACb,kBAAI,MAAM,GAAG;AACb,kBAAI,MAAM,GAAG;AAEb,kBAAI,MAAM,KAAK;AACf,kBAAI,MAAM,KAAK,WAAY,QAAQ,IAAM,OAAO,IAAK,IAAI;AACzD,kBAAI,MAAM,MAAM;AAChB,kBAAI,MAAM,MAAM,OAAQ,QAAQ,IAAM,QAAQ,IAAK,IAAI;AACvD,kBAAI,MAAM,MAAM;AAChB,kBAAI,MAAM,MAAM,OAAQ,QAAQ,IAAM,QAAQ,IAAK,IAAI;AACvD,kBAAI,MAAM,MAAM;AAChB,kBAAI,MAAM,MAAM,OAAQ,QAAQ,IAAM,QAAQ,IAAK,IAAI;AAGvD,kBAAI,MAAM,UAAU;AACpB,kBAAI,MAAM,UAAU,QAAS,QAAQ,IAAM,YAAY,IAAK,IAAI;AAGhE,mBAAK;AACL,mBAAK;AACL,mBAAK;AACL,mBAAK;AACL,mBAAK;AACL,mBAAK;AACL,mBAAM,KAAK,MAAO;AAClB,mBAAM,KAAK,OAAQ,OAAO,IAAM,OAAO,IAAK,IAAI,KAAM;AACtD,mBAAK;AACL,mBAAK;AACL,mBAAK;AACL,mBAAK;AACL,mBAAK;AACL,mBAAK;AACL,mBAAM,MAAM,MAAO;AACnB,mBAAM,MAAM,OAAQ,OAAO,IAAM,QAAQ,IAAK,IAAI,KAAM;AAAA,YAC3D;AAGD,kBAAM,GAAG,MAAQ,MAAM;AACvB,eAAG,OAAQ,MAAM,MAAO,QAAQ,IAAM,OAAO,IAAK,IAAI;AACtD,kBAAM,GAAG,MAAQ,MAAM;AACvB,eAAG,OAAQ,MAAM,MAAO,QAAQ,IAAM,OAAO,IAAK,IAAI;AACtD,kBAAM,GAAG,MAAQ,MAAM;AACvB,eAAG,OAAQ,MAAM,MAAO,QAAQ,IAAM,OAAO,IAAK,IAAI;AACtD,kBAAM,GAAG,MAAQ,MAAM;AACvB,eAAG,OAAQ,MAAM,MAAO,QAAQ,IAAM,OAAO,IAAK,IAAI;AACtD,kBAAM,GAAG,MAAQ,MAAM;AACvB,eAAG,OAAQ,MAAM,MAAO,QAAQ,IAAM,OAAO,IAAK,IAAI;AACtD,kBAAM,GAAG,MAAQ,MAAM;AACvB,eAAG,OAAQ,MAAM,MAAO,QAAQ,IAAM,OAAO,IAAK,IAAI;AACtD,kBAAM,GAAG,MAAQ,MAAM;AACvB,eAAG,OAAQ,MAAM,MAAO,QAAQ,IAAM,OAAO,IAAK,IAAI;AACtD,kBAAM,GAAG,MAAQ,MAAM;AACvB,eAAG,OAAQ,MAAM,MAAO,QAAQ,IAAM,OAAO,IAAK,IAAI;AAAA,UACzD;AAAA,UAED,aAAa,WAAY;AAErB,gBAAI,OAAO,KAAK;AAChB,gBAAI,YAAY,KAAK;AAErB,gBAAI,aAAa,KAAK,cAAc;AACpC,gBAAI,YAAY,KAAK,WAAW;AAGhC,sBAAU,cAAc,CAAC,KAAK,OAAS,KAAK,YAAY;AACxD,uBAAa,YAAY,QAAS,MAAO,KAAK,EAAE,IAAI,KAAK,MAAM,aAAa,UAAW;AACvF,uBAAa,YAAY,QAAS,MAAO,KAAK,EAAE,IAAI;AACpD,iBAAK,WAAW,UAAU,SAAS;AAGnC,iBAAK,SAAQ;AAGb,gBAAI4M,QAAO,KAAK,MAAM,MAAK;AAG3B,mBAAOA;AAAA,UACV;AAAA,UAED,OAAO,WAAY;AACf,gBAAIrD,SAAQ,OAAO,MAAM,KAAK,IAAI;AAClC,YAAAA,OAAM,QAAQ,KAAK,MAAM,MAAK;AAE9B,mBAAOA;AAAA,UACV;AAAA,UAED,WAAW,OAAK;AAAA,QACzB,CAAM;AAgBD,UAAE,SAAS,OAAO,cAAcX,OAAM;AAgBtC,UAAE,aAAa,OAAO,kBAAkBA,OAAM;AAAA,MACnD;AAGC,aAAOmoB,UAAS;AAAA,IAEjB,CAAC;AAAA;;;;;;;;;;ACrUA,KAAC,SAAU,MAAM,SAAS,OAAO;AACA;AAEhC,QAAAjtB,QAAA,UAA2B,QAAQlD,YAAiB,GAAEC,eAAqB,GAAE8H,cAAmB;AAAA,MAShG;AAAA,IACF,GAAE5E,gBAAM,SAAUgtB,WAAU;AAE3B,OAAC,WAAY;AAET,YAAI,IAAIA;AACR,YAAI,QAAQ,EAAE;AACd,YAAI,UAAU,MAAM;AACpB,YAAI,eAAe,MAAM;AACzB,YAAI,SAAS,EAAE;AACf,YAAInoB,UAAS,OAAO;AAKpB,YAAIC,UAAS,OAAO,SAASD,QAAO,OAAO;AAAA,UACvC,UAAU,WAAY;AAClB,iBAAK,QAAQ,IAAI,aAAa,KAAK;AAAA,cAC/B,IAAI,QAAQ,KAAK,YAAY,UAAU;AAAA,cAAG,IAAI,QAAQ,KAAK,YAAY,SAAU;AAAA,cACjF,IAAI,QAAQ,KAAK,YAAY,SAAU;AAAA,cAAG,IAAI,QAAQ,KAAK,WAAY,UAAU;AAAA,cACjF,IAAI,QAAQ,KAAK,YAAY,UAAU;AAAA,cAAG,IAAI,QAAQ,KAAK,YAAY,UAAU;AAAA,cACjF,IAAI,QAAQ,KAAK,YAAY,UAAU;AAAA,cAAG,IAAI,QAAQ,KAAK,YAAY,UAAU;AAAA,YAClG,CAAc;AAAA,UACJ;AAAA,UAED,aAAa,WAAY;AACrB,gBAAIgE,QAAOhE,QAAO,YAAY,KAAK,IAAI;AAEvC,YAAAgE,MAAK,YAAY;AAEjB,mBAAOA;AAAA,UACV;AAAA,QACV,CAAM;AAgBD,UAAE,SAAShE,QAAO,cAAcC,OAAM;AAgBtC,UAAE,aAAaD,QAAO,kBAAkBC,OAAM;AAAA,MACnD;AAGC,aAAOkoB,UAAS;AAAA,IAEjB,CAAC;AAAA;;;;;;;;;;AClFA,KAAC,SAAU,MAAM,SAAS,OAAO;AACA;AAEhC,QAAAjtB,QAAA,UAA2B,QAAQlD,YAAiB,GAAEC,eAAqB;AAAA,MAS3E;AAAA,IACF,GAAEkD,gBAAM,SAAUgtB,WAAU;AAE3B,OAAC,SAAUC,OAAM;AAEb,YAAI,IAAID;AACR,YAAI,QAAQ,EAAE;AACd,YAAI,YAAY,MAAM;AACtB,YAAI,SAAS,MAAM;AACnB,YAAI,QAAQ,EAAE;AACd,YAAI,UAAU,MAAM;AACpB,YAAI,SAAS,EAAE;AAGf,YAAI,cAAc;AAClB,YAAI,aAAc;AAClB,YAAI,kBAAkB;AAGtB,SAAC,WAAY;AAET,cAAI,IAAI,GAAG,IAAI;AACf,mBAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AACzB,wBAAY,IAAI,IAAI,CAAC,KAAM,IAAI,MAAM,IAAI,KAAK,IAAK;AAEnD,gBAAI,OAAO,IAAI;AACf,gBAAI,QAAQ,IAAI,IAAI,IAAI,KAAK;AAC7B,gBAAI;AACJ,gBAAI;AAAA,UACP;AAGD,mBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AACxB,qBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AACxB,yBAAW,IAAI,IAAI,CAAC,IAAI,KAAM,IAAI,IAAI,IAAI,KAAK,IAAK;AAAA,YACvD;AAAA,UACJ;AAGD,cAAI,OAAO;AACX,mBAAS/wB,KAAI,GAAGA,KAAI,IAAIA,MAAK;AACzB,gBAAI,mBAAmB;AACvB,gBAAI,mBAAmB;AAEvB,qBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AACxB,kBAAI,OAAO,GAAM;AACb,oBAAI,eAAe,KAAK,KAAK;AAC7B,oBAAI,cAAc,IAAI;AAClB,sCAAoB,KAAK;AAAA,gBAClD,OAAyD;AAChC,sCAAoB,KAAM,cAAc;AAAA,gBAC3C;AAAA,cACJ;AAGD,kBAAI,OAAO,KAAM;AAEb,uBAAQ,QAAQ,IAAK;AAAA,cAC1C,OAAwB;AACH,yBAAS;AAAA,cACZ;AAAA,YACJ;AAED,4BAAgBA,EAAC,IAAI,QAAQ,OAAO,kBAAkB,gBAAgB;AAAA,UACzE;AAAA,QACV;AAGK,YAAI,IAAI;AACR,SAAC,WAAY;AACT,mBAASA,KAAI,GAAGA,KAAI,IAAIA,MAAK;AACzB,cAAEA,EAAC,IAAI,QAAQ,OAAM;AAAA,UACxB;AAAA,QACV;AAKK,YAAI,OAAO,OAAO,OAAO,OAAO,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UASnC,KAAK,OAAO,IAAI,OAAO;AAAA,YACnB,cAAc;AAAA,UAC3B,CAAU;AAAA,UAED,UAAU,WAAY;AAClB,gBAAIyF,SAAQ,KAAK,SAAS,CAAE;AAC5B,qBAASzF,KAAI,GAAGA,KAAI,IAAIA,MAAK;AACzB,cAAAyF,OAAMzF,EAAC,IAAI,IAAI,QAAQ,KAAI;AAAA,YAC9B;AAED,iBAAK,aAAa,OAAO,IAAI,KAAK,IAAI,gBAAgB;AAAA,UACzD;AAAA,UAED,iBAAiB,SAAU,GAAG,QAAQ;AAElC,gBAAIyF,SAAQ,KAAK;AACjB,gBAAI,kBAAkB,KAAK,YAAY;AAGvC,qBAASzF,KAAI,GAAGA,KAAI,iBAAiBA,MAAK;AAEtC,kBAAI,MAAO,EAAE,SAAS,IAAIA,EAAC;AAC3B,kBAAI,OAAO,EAAE,SAAS,IAAIA,KAAI,CAAC;AAG/B,qBACO,OAAO,IAAO,QAAQ,MAAO,YAC7B,OAAO,KAAO,QAAQ,KAAO;AAEpC,sBACO,QAAQ,IAAO,SAAS,MAAO,YAC/B,QAAQ,KAAO,SAAS,KAAO;AAItC,kBAAI,OAAOyF,OAAMzF,EAAC;AAClB,mBAAK,QAAQ;AACb,mBAAK,OAAQ;AAAA,YAChB;AAGD,qBAASkN,SAAQ,GAAGA,SAAQ,IAAIA,UAAS;AAErC,uBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAExB,oBAAI,OAAO,GAAG,OAAO;AACrB,yBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AACxB,sBAAI,OAAOzH,OAAM,IAAI,IAAI,CAAC;AAC1B,0BAAQ,KAAK;AACb,0BAAQ,KAAK;AAAA,gBAChB;AAGD,oBAAI,KAAK,EAAE,CAAC;AACZ,mBAAG,OAAO;AACV,mBAAG,MAAO;AAAA,cACb;AACD,uBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAExB,oBAAI,MAAM,GAAG,IAAI,KAAK,CAAC;AACvB,oBAAI,MAAM,GAAG,IAAI,KAAK,CAAC;AACvB,oBAAI,SAAS,IAAI;AACjB,oBAAI,SAAS,IAAI;AAGjB,oBAAI,OAAO,IAAI,QAAS,UAAU,IAAM,WAAW;AACnD,oBAAI,OAAO,IAAI,OAAS,UAAU,IAAM,WAAW;AACnD,yBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AACxB,sBAAI,OAAOA,OAAM,IAAI,IAAI,CAAC;AAC1B,uBAAK,QAAQ;AACb,uBAAK,OAAQ;AAAA,gBAChB;AAAA,cACJ;AAGD,uBAAS,YAAY,GAAG,YAAY,IAAI,aAAa;AACjD,oBAAI;AACJ,oBAAI;AAGJ,oBAAI,OAAOA,OAAM,SAAS;AAC1B,oBAAI,UAAU,KAAK;AACnB,oBAAI,UAAU,KAAK;AACnB,oBAAI,YAAY,YAAY,SAAS;AAGrC,oBAAI,YAAY,IAAI;AAChB,yBAAQ,WAAW,YAAc,YAAa,KAAK;AACnD,yBAAQ,WAAW,YAAc,YAAa,KAAK;AAAA,gBAC5E,OAAuD;AAC9B,yBAAQ,WAAY,YAAY,KAAQ,YAAa,KAAK;AAC1D,yBAAQ,WAAY,YAAY,KAAQ,YAAa,KAAK;AAAA,gBAC7D;AAGD,oBAAI,UAAU,EAAE,WAAW,SAAS,CAAC;AACrC,wBAAQ,OAAO;AACf,wBAAQ,MAAO;AAAA,cAClB;AAGD,kBAAI,KAAK,EAAE,CAAC;AACZ,kBAAI,SAASA,OAAM,CAAC;AACpB,iBAAG,OAAO,OAAO;AACjB,iBAAG,MAAO,OAAO;AAGjB,uBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AACxB,yBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAExB,sBAAI,YAAY,IAAI,IAAI;AACxB,sBAAI,OAAOA,OAAM,SAAS;AAC1B,sBAAI,QAAQ,EAAE,SAAS;AACvB,sBAAI,UAAU,GAAI,IAAI,KAAK,IAAK,IAAI,CAAC;AACrC,sBAAI,UAAU,GAAI,IAAI,KAAK,IAAK,IAAI,CAAC;AAGrC,uBAAK,OAAO,MAAM,OAAQ,CAAC,QAAQ,OAAO,QAAQ;AAClD,uBAAK,MAAO,MAAM,MAAQ,CAAC,QAAQ,MAAO,QAAQ;AAAA,gBACrD;AAAA,cACJ;AAGD,kBAAI,OAAOA,OAAM,CAAC;AAClB,kBAAI,gBAAgB,gBAAgByH,MAAK;AACzC,mBAAK,QAAQ,cAAc;AAC3B,mBAAK,OAAQ,cAAc;AAAA,YAC9B;AAAA,UACJ;AAAA,UAED,aAAa,WAAY;AAErB,gBAAI,OAAO,KAAK;AAChB,gBAAI,YAAY,KAAK;AACJ,iBAAK,cAAc;AACpC,gBAAI,YAAY,KAAK,WAAW;AAChC,gBAAI,gBAAgB,KAAK,YAAY;AAGrC,sBAAU,cAAc,CAAC,KAAK,KAAQ,KAAK,YAAY;AACvD,uBAAY8jB,MAAK,MAAM,YAAY,KAAK,aAAa,IAAI,kBAAmB,KAAK,CAAC,KAAK;AACvF,iBAAK,WAAW,UAAU,SAAS;AAGnC,iBAAK,SAAQ;AAGb,gBAAIvrB,SAAQ,KAAK;AACjB,gBAAI,oBAAoB,KAAK,IAAI,eAAe;AAChD,gBAAI,oBAAoB,oBAAoB;AAG5C,gBAAI,YAAY;AAChB,qBAASzF,KAAI,GAAGA,KAAI,mBAAmBA,MAAK;AAExC,kBAAI,OAAOyF,OAAMzF,EAAC;AAClB,kBAAI,UAAU,KAAK;AACnB,kBAAI,UAAU,KAAK;AAGnB,yBACO,WAAW,IAAO,YAAY,MAAO,YACrC,WAAW,KAAO,YAAY,KAAO;AAE5C,yBACO,WAAW,IAAO,YAAY,MAAO,YACrC,WAAW,KAAO,YAAY,KAAO;AAI5C,wBAAU,KAAK,OAAO;AACtB,wBAAU,KAAK,OAAO;AAAA,YACzB;AAGD,mBAAO,IAAI,UAAU,KAAK,WAAW,iBAAiB;AAAA,UACzD;AAAA,UAED,OAAO,WAAY;AACf,gBAAIuJ,SAAQ,OAAO,MAAM,KAAK,IAAI;AAElC,gBAAI9D,SAAQ8D,OAAM,SAAS,KAAK,OAAO,MAAM,CAAC;AAC9C,qBAASvJ,KAAI,GAAGA,KAAI,IAAIA,MAAK;AACzB,cAAAyF,OAAMzF,EAAC,IAAIyF,OAAMzF,EAAC,EAAE,MAAK;AAAA,YAC5B;AAED,mBAAOuJ;AAAA,UACV;AAAA,QACV,CAAM;AAgBD,UAAE,OAAO,OAAO,cAAc,IAAI;AAgBlC,UAAE,WAAW,OAAO,kBAAkB,IAAI;AAAA,MAC7C,GAAC,IAAI;AAGN,aAAOwnB,UAAS;AAAA,IAEjB,CAAC;AAAA;;;;;;;;;;ACrUA,KAAC,SAAU,MAAM,SAAS;AACO;AAEhC,QAAAjtB,kBAA2B,QAAQlD,YAAiB;AAAA,MASpD;AAAA,IACF,GAAEmD,gBAAM,SAAUgtB,WAAU;AAAA,MAE5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWC,OAAC,SAAUC,OAAM;AAEb,YAAI,IAAID;AACR,YAAI,QAAQ,EAAE;AACd,YAAI,YAAY,MAAM;AACtB,YAAI,SAAS,MAAM;AACnB,YAAI,SAAS,EAAE;AAGf,YAAI,MAAM,UAAU,OAAO;AAAA,UACvB;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAC3D;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAK;AAAA,UAC5D;AAAA,UAAG;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAK;AAAA,UAAG;AAAA,UAC3D;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAC5D;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAI;AAAA,QAAE,CAAC;AAClE,YAAI,MAAM,UAAU,OAAO;AAAA,UACvB;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAC3D;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAI;AAAA,UAAI;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAC5D;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAC5D;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAC3D;AAAA,UAAI;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,QAAE,CAAC;AACnE,YAAI,MAAM,UAAU,OAAO;AAAA,UACtB;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAC9D;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAI;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAI;AAAA,UAC3D;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAI;AAAA,UAAI;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAC3D;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAC9D;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAK;AAAA,UAAG;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,QAAC,CAAE;AACnE,YAAI,MAAM,UAAU,OAAO;AAAA,UACvB;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAK;AAAA,UAC5D;AAAA,UAAG;AAAA,UAAI;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAI;AAAA,UAC3D;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAI;AAAA,UAAK;AAAA,UAAG;AAAA,UAAI;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAC5D;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAI;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAC7D;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,QAAE,CAAE;AAEnE,YAAI,MAAO,UAAU,OAAO,CAAE,GAAY,YAAY,YAAY,YAAY,UAAU,CAAC;AACzF,YAAI,MAAO,UAAU,OAAO,CAAE,YAAY,YAAY,YAAY,YAAY,CAAU,CAAC;AAKzF,YAAIK,aAAY,OAAO,YAAY,OAAO,OAAO;AAAA,UAC7C,UAAU,WAAY;AAClB,iBAAK,QAAS,UAAU,OAAO,CAAC,YAAY,YAAY,YAAY,WAAY,UAAU,CAAC;AAAA,UAC9F;AAAA,UAED,iBAAiB,SAAU,GAAG,QAAQ;AAGlC,qBAASpxB,KAAI,GAAGA,KAAI,IAAIA,MAAK;AAEzB,kBAAI,WAAW,SAASA;AACxB,kBAAI,aAAa,EAAE,QAAQ;AAG3B,gBAAE,QAAQ,KACH,cAAc,IAAO,eAAe,MAAO,YAC3C,cAAc,KAAO,eAAe,KAAO;AAAA,YAErD;AAED,gBAAI,IAAK,KAAK,MAAM;AACpB,gBAAI,KAAK,IAAI;AACb,gBAAI,KAAK,IAAI;AACb,gBAAI,KAAK,IAAI;AACb,gBAAI,KAAK,IAAI;AACb,gBAAI,KAAK,IAAI;AACb,gBAAI,KAAK,IAAI;AAGb,gBAAI,IAAI,IAAI,IAAI,IAAI;AACpB,gBAAI,IAAI,IAAI,IAAI,IAAI;AAEpB,iBAAK,KAAK,EAAE,CAAC;AACb,iBAAK,KAAK,EAAE,CAAC;AACb,iBAAK,KAAK,EAAE,CAAC;AACb,iBAAK,KAAK,EAAE,CAAC;AACb,iBAAK,KAAK,EAAE,CAAC;AAEb,gBAAI;AACJ,qBAASA,KAAI,GAAGA,KAAI,IAAIA,MAAK,GAAG;AAC5B,kBAAK,KAAM,EAAE,SAAO,GAAGA,EAAC,CAAC,IAAG;AAC5B,kBAAIA,KAAE,IAAG;AACZ,qBAAM,GAAG,IAAG,IAAG,EAAE,IAAI,GAAG,CAAC;AAAA,cACvC,WAA4BA,KAAE,IAAI;AACpB,qBAAM,GAAG,IAAG,IAAG,EAAE,IAAI,GAAG,CAAC;AAAA,cACvC,WAA4BA,KAAE,IAAI;AACpB,qBAAM,GAAG,IAAG,IAAG,EAAE,IAAI,GAAG,CAAC;AAAA,cACvC,WAA4BA,KAAE,IAAI;AACpB,qBAAM,GAAG,IAAG,IAAG,EAAE,IAAI,GAAG,CAAC;AAAA,cACvC,OAAwB;AACV,qBAAM,GAAG,IAAG,IAAG,EAAE,IAAI,GAAG,CAAC;AAAA,cACrB;AACD,kBAAI,IAAE;AACN,kBAAK,KAAK,GAAE,GAAGA,EAAC,CAAC;AACjB,kBAAK,IAAE,KAAI;AACX,mBAAK;AACL,mBAAK;AACL,mBAAK,KAAK,IAAI,EAAE;AAChB,mBAAK;AACL,mBAAK;AAEL,kBAAK,KAAK,EAAE,SAAO,GAAGA,EAAC,CAAC,IAAG;AAC3B,kBAAIA,KAAE,IAAG;AACZ,qBAAM,GAAG,IAAG,IAAG,EAAE,IAAI,GAAG,CAAC;AAAA,cACvC,WAA4BA,KAAE,IAAI;AACpB,qBAAM,GAAG,IAAG,IAAG,EAAE,IAAI,GAAG,CAAC;AAAA,cACvC,WAA4BA,KAAE,IAAI;AACpB,qBAAM,GAAG,IAAG,IAAG,EAAE,IAAI,GAAG,CAAC;AAAA,cACvC,WAA4BA,KAAE,IAAI;AACpB,qBAAM,GAAG,IAAG,IAAG,EAAE,IAAI,GAAG,CAAC;AAAA,cACvC,OAAwB;AACV,qBAAM,GAAG,IAAG,IAAG,EAAE,IAAI,GAAG,CAAC;AAAA,cACrB;AACD,kBAAI,IAAE;AACN,kBAAK,KAAK,GAAE,GAAGA,EAAC,CAAC;AACjB,kBAAK,IAAE,KAAI;AACX,mBAAK;AACL,mBAAK;AACL,mBAAK,KAAK,IAAI,EAAE;AAChB,mBAAK;AACL,mBAAK;AAAA,YACR;AAED,gBAAQ,EAAE,CAAC,IAAI,KAAK,KAAI;AACxB,cAAE,CAAC,IAAK,EAAE,CAAC,IAAI,KAAK,KAAI;AACxB,cAAE,CAAC,IAAK,EAAE,CAAC,IAAI,KAAK,KAAI;AACxB,cAAE,CAAC,IAAK,EAAE,CAAC,IAAI,KAAK,KAAI;AACxB,cAAE,CAAC,IAAK,EAAE,CAAC,IAAI,KAAK,KAAI;AACxB,cAAE,CAAC,IAAK;AAAA,UACX;AAAA,UAED,aAAa,WAAY;AAErB,gBAAI,OAAO,KAAK;AAChB,gBAAI,YAAY,KAAK;AAErB,gBAAI,aAAa,KAAK,cAAc;AACpC,gBAAI,YAAY,KAAK,WAAW;AAGhC,sBAAU,cAAc,CAAC,KAAK,OAAS,KAAK,YAAY;AACxD,uBAAa,YAAY,OAAQ,KAAM,KAAK,EAAE,KACvC,cAAc,IAAO,eAAe,MAAO,YAC3C,cAAc,KAAO,eAAe,KAAO;AAElD,iBAAK,YAAY,UAAU,SAAS,KAAK;AAGzC,iBAAK,SAAQ;AAGb,gBAAI4M,QAAO,KAAK;AAChB,gBAAI,IAAIA,MAAK;AAGb,qBAAS5M,KAAI,GAAGA,KAAI,GAAGA,MAAK;AAExB,kBAAI,MAAM,EAAEA,EAAC;AAGb,gBAAEA,EAAC,KAAO,OAAO,IAAO,QAAQ,MAAO,YAC7B,OAAO,KAAO,QAAQ,KAAO;AAAA,YAC1C;AAGD,mBAAO4M;AAAA,UACV;AAAA,UAED,OAAO,WAAY;AACf,gBAAIrD,SAAQ,OAAO,MAAM,KAAK,IAAI;AAClC,YAAAA,OAAM,QAAQ,KAAK,MAAM,MAAK;AAE9B,mBAAOA;AAAA,UACV;AAAA,QACV,CAAM;AAGD,iBAAS,GAAG,GAAG,GAAG,GAAG;AACjB,iBAAS,IAAM,IAAM;AAAA,QAExB;AAED,iBAAS,GAAG,GAAG,GAAG,GAAG;AACjB,iBAAU,IAAI,IAAQ,CAAC,IAAI;AAAA,QAC9B;AAED,iBAAS,GAAG,GAAG,GAAG,GAAG;AACjB,kBAAU,IAAM,CAAE,KAAQ;AAAA,QAC7B;AAED,iBAAS,GAAG,GAAG,GAAG,GAAG;AACjB,iBAAU,IAAM,IAAQ,IAAI,CAAE;AAAA,QACjC;AAED,iBAAS,GAAG,GAAG,GAAG,GAAG;AACjB,iBAAS,KAAO,IAAK,CAAE;AAAA,QAE1B;AAED,iBAAS,KAAK,GAAEhI,IAAG;AACf,iBAAQ,KAAGA,KAAM,MAAK,KAAGA;AAAA,QAC5B;AAiBD,UAAE,YAAY,OAAO,cAAc6vB,UAAS;AAgB5C,UAAE,gBAAgB,OAAO,kBAAkBA,UAAS;AAAA,MACvD,GAAK;AAGN,aAAOL,UAAS;AAAA,IAEjB,CAAC;AAAA;;;;;;;;;;AC1QA,KAAC,SAAU,MAAM,SAAS;AACO;AAEhC,QAAAjtB,kBAA2B,QAAQlD,YAAiB;AAAA,MASpD;AAAA,IACF,GAAEmD,gBAAM,SAAUgtB,WAAU;AAE3B,OAAC,WAAY;AAET,YAAI,IAAIA;AACR,YAAI,QAAQ,EAAE;AACd,YAAItuB,QAAO,MAAM;AACjB,YAAI,QAAQ,EAAE;AACd,YAAI,OAAO,MAAM;AACjB,YAAI,SAAS,EAAE;AAKJ,eAAO,OAAOA,MAAK,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAWjC,MAAM,SAAU,QAAQoK,MAAK;AAEzB,qBAAS,KAAK,UAAU,IAAI,OAAO,KAAI;AAGvC,gBAAI,OAAOA,QAAO,UAAU;AACxB,cAAAA,OAAM,KAAK,MAAMA,IAAG;AAAA,YACvB;AAGD,gBAAI,kBAAkB,OAAO;AAC7B,gBAAI,uBAAuB,kBAAkB;AAG7C,gBAAIA,KAAI,WAAW,sBAAsB;AACrC,cAAAA,OAAM,OAAO,SAASA,IAAG;AAAA,YAC5B;AAGD,YAAAA,KAAI,MAAK;AAGT,gBAAI,OAAO,KAAK,QAAQA,KAAI,MAAK;AACjC,gBAAI,OAAO,KAAK,QAAQA,KAAI,MAAK;AAGjC,gBAAI,YAAY,KAAK;AACrB,gBAAI,YAAY,KAAK;AAGrB,qBAAS7M,KAAI,GAAGA,KAAI,iBAAiBA,MAAK;AACtC,wBAAUA,EAAC,KAAK;AAChB,wBAAUA,EAAC,KAAK;AAAA,YACnB;AACD,iBAAK,WAAW,KAAK,WAAW;AAGhC,iBAAK,MAAK;AAAA,UACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UASD,OAAO,WAAY;AAEf,gBAAI,SAAS,KAAK;AAGlB,mBAAO,MAAK;AACZ,mBAAO,OAAO,KAAK,KAAK;AAAA,UAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAcD,QAAQ,SAAU,eAAe;AAC7B,iBAAK,QAAQ,OAAO,aAAa;AAGjC,mBAAO;AAAA,UACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAgBD,UAAU,SAAU,eAAe;AAE/B,gBAAI,SAAS,KAAK;AAGlB,gBAAI,YAAY,OAAO,SAAS,aAAa;AAC7C,mBAAO,MAAK;AACZ,gBAAI8M,QAAO,OAAO,SAAS,KAAK,MAAM,QAAQ,OAAO,SAAS,CAAC;AAE/D,mBAAOA;AAAA,UACV;AAAA,QACV,CAAM;AAAA,MACN;IAGA,CAAC;AAAA;;;;;;;;;;AC9IA,KAAC,SAAU,MAAM,SAAS,OAAO;AACA;AAEhC,QAAAhJ,QAAA,UAA2B,QAAQlD,YAAiB,GAAEC,cAAmB,GAAE8H,YAAiB;AAAA,MAS5F;AAAA,IACF,GAAE5E,gBAAM,SAAUgtB,WAAU;AAE3B,OAAC,WAAY;AAET,YAAI,IAAIA;AACR,YAAI,QAAQ,EAAE;AACd,YAAItuB,QAAO,MAAM;AACjB,YAAI,YAAY,MAAM;AACtB,YAAI,SAAS,EAAE;AACf,YAAIqD,UAAS,OAAO;AACpB,YAAIub,QAAO,OAAO;AAKlB,YAAI,SAAS,OAAO,SAAS5e,MAAK,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQrC,KAAKA,MAAK,OAAO;AAAA,YACb,SAAS,MAAI;AAAA,YACb,QAAQqD;AAAA,YACR,YAAY;AAAA,UACzB,CAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAaD,MAAM,SAAU,KAAK;AACjB,iBAAK,MAAM,KAAK,IAAI,OAAO,GAAG;AAAA,UACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAcD,SAAS,SAAU,UAAU,MAAM;AAE/B,gBAAI,MAAM,KAAK;AAGf,gBAAIgH,QAAOuU,MAAK,OAAO,IAAI,QAAQ,QAAQ;AAG3C,gBAAI,aAAa,UAAU;AAC3B,gBAAI,aAAa,UAAU,OAAO,CAAC,CAAU,CAAC;AAG9C,gBAAI,kBAAkB,WAAW;AACjC,gBAAI,kBAAkB,WAAW;AACjC,gBAAI,UAAU,IAAI;AAClB,gBAAI,aAAa,IAAI;AAGrB,mBAAO,gBAAgB,SAAS,SAAS;AACrC,kBAAI,QAAQvU,MAAK,OAAO,IAAI,EAAE,SAAS,UAAU;AACjD,cAAAA,MAAK,MAAK;AAGV,kBAAI,aAAa,MAAM;AACvB,kBAAI,mBAAmB,WAAW;AAGlC,kBAAI,eAAe;AACnB,uBAAS9M,KAAI,GAAGA,KAAI,YAAYA,MAAK;AACjC,+BAAe8M,MAAK,SAAS,YAAY;AACzC,gBAAAA,MAAK,MAAK;AAGV,oBAAI,oBAAoB,aAAa;AAGrC,yBAAS,IAAI,GAAG,IAAI,kBAAkB,KAAK;AACvC,6BAAW,CAAC,KAAK,kBAAkB,CAAC;AAAA,gBACvC;AAAA,cACJ;AAED,yBAAW,OAAO,KAAK;AACvB,8BAAgB,CAAC;AAAA,YACpB;AACD,uBAAW,WAAW,UAAU;AAEhC,mBAAO;AAAA,UACV;AAAA,QACV,CAAM;AAmBD,UAAE,SAAS,SAAU,UAAU,MAAM,KAAK;AACtC,iBAAO,OAAO,OAAO,GAAG,EAAE,QAAQ,UAAU,IAAI;AAAA,QACzD;AAAA,MACA;AAGC,aAAOikB,UAAS;AAAA,IAEjB,CAAC;AAAA;;;;;;;;;;AChJA,KAAC,SAAU,MAAM,SAAS,OAAO;AACA;AAEhC,QAAAjtB,QAAA,UAA2B,QAAQlD,YAAiB,GAAEC,YAAiB,GAAE8H,YAAiB;AAAA,MAS1F;AAAA,IACF,GAAE5E,gBAAM,SAAUgtB,WAAU;AAE3B,OAAC,WAAY;AAET,YAAI,IAAIA;AACR,YAAI,QAAQ,EAAE;AACd,YAAItuB,QAAO,MAAM;AACjB,YAAI,YAAY,MAAM;AACtB,YAAI,SAAS,EAAE;AACf,YAAI,MAAM,OAAO;AAMjB,YAAI,SAAS,OAAO,SAASA,MAAK,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQrC,KAAKA,MAAK,OAAO;AAAA,YACb,SAAS,MAAI;AAAA,YACb,QAAQ;AAAA,YACR,YAAY;AAAA,UACzB,CAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAaD,MAAM,SAAU,KAAK;AACjB,iBAAK,MAAM,KAAK,IAAI,OAAO,GAAG;AAAA,UACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAcD,SAAS,SAAU,UAAU,MAAM;AAC/B,gBAAI;AAGJ,gBAAI,MAAM,KAAK;AAGf,gBAAI,SAAS,IAAI,OAAO,OAAM;AAG9B,gBAAI,aAAa,UAAU;AAG3B,gBAAI,kBAAkB,WAAW;AACjC,gBAAI,UAAU,IAAI;AAClB,gBAAI,aAAa,IAAI;AAGrB,mBAAO,gBAAgB,SAAS,SAAS;AACrC,kBAAI,OAAO;AACP,uBAAO,OAAO,KAAK;AAAA,cACtB;AACD,sBAAQ,OAAO,OAAO,QAAQ,EAAE,SAAS,IAAI;AAC7C,qBAAO,MAAK;AAGZ,uBAASzC,KAAI,GAAGA,KAAI,YAAYA,MAAK;AACjC,wBAAQ,OAAO,SAAS,KAAK;AAC7B,uBAAO,MAAK;AAAA,cACf;AAED,yBAAW,OAAO,KAAK;AAAA,YAC1B;AACD,uBAAW,WAAW,UAAU;AAEhC,mBAAO;AAAA,UACV;AAAA,QACV,CAAM;AAmBD,UAAE,SAAS,SAAU,UAAU,MAAM,KAAK;AACtC,iBAAO,OAAO,OAAO,GAAG,EAAE,QAAQ,UAAU,IAAI;AAAA,QACzD;AAAA,MACA;AAGC,aAAO+wB,UAAS;AAAA,IAEjB,CAAC;AAAA;;;;;;;;;;ACrIA,KAAC,SAAU,MAAM,SAAS,OAAO;AACA;AAEhC,QAAAjtB,QAAA,UAA2B,QAAQlD,YAAiB,GAAEC,cAAmB;AAAA,MASzE;AAAA,IACF,GAAEkD,gBAAM,SAAUgtB,WAAU;AAK3B,MAAAA,UAAS,IAAI,UAAW,SAAUviB,cAAW;AAEzC,YAAI,IAAIuiB;AACR,YAAI,QAAQ,EAAE;AACd,YAAItuB,QAAO,MAAM;AACjB,YAAI,YAAY,MAAM;AACtB,YAAI,yBAAyB,MAAM;AACnC,YAAI,QAAQ,EAAE;AACH,cAAM;AACjB,YAAI,SAAS,MAAM;AACnB,YAAI,SAAS,EAAE;AACf,YAAI,SAAS,OAAO;AAUpB,YAAI,SAAS,MAAM,SAAS,uBAAuB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAMtD,KAAKA,MAAK,OAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAgBlB,iBAAiB,SAAUoK,MAAK,KAAK;AACjC,mBAAO,KAAK,OAAO,KAAK,iBAAiBA,MAAK,GAAG;AAAA,UACpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAgBD,iBAAiB,SAAUA,MAAK,KAAK;AACjC,mBAAO,KAAK,OAAO,KAAK,iBAAiBA,MAAK,GAAG;AAAA,UACpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAaD,MAAM,SAAU,WAAWA,MAAK,KAAK;AAEjC,iBAAK,MAAM,KAAK,IAAI,OAAO,GAAG;AAG9B,iBAAK,aAAa;AAClB,iBAAK,OAAOA;AAGZ,iBAAK,MAAK;AAAA,UACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UASD,OAAO,WAAY;AAEf,mCAAuB,MAAM,KAAK,IAAI;AAGtC,iBAAK,SAAQ;AAAA,UAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAcD,SAAS,SAAU,YAAY;AAE3B,iBAAK,QAAQ,UAAU;AAGvB,mBAAO,KAAK;UACf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAgBD,UAAU,SAAU,YAAY;AAE5B,gBAAI,YAAY;AACZ,mBAAK,QAAQ,UAAU;AAAA,YAC1B;AAGD,gBAAI,qBAAqB,KAAK;AAE9B,mBAAO;AAAA,UACV;AAAA,UAED,SAAS,MAAI;AAAA,UAEb,QAAQ,MAAI;AAAA,UAEZ,iBAAiB;AAAA,UAEjB,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAejB,eAAgB,WAAY;AACxB,qBAAS,qBAAqBA,MAAK;AAC/B,kBAAI,OAAOA,QAAO,UAAU;AACxB,uBAAO;AAAA,cAC5B,OAAwB;AACH,uBAAO;AAAA,cACV;AAAA,YACJ;AAED,mBAAO,SAAU,QAAQ;AACrB,qBAAO;AAAA,gBACH,SAAS,SAAUlJ,UAASkJ,MAAK,KAAK;AAClC,yBAAO,qBAAqBA,IAAG,EAAE,QAAQ,QAAQlJ,UAASkJ,MAAK,GAAG;AAAA,gBACrE;AAAA,gBAED,SAAS,SAAU,YAAYA,MAAK,KAAK;AACrC,yBAAO,qBAAqBA,IAAG,EAAE,QAAQ,QAAQ,YAAYA,MAAK,GAAG;AAAA,gBACxE;AAAA,cACtB;AAAA,YACA;AAAA,UACA;QACA,CAAM;AAOkB,cAAM,eAAe,OAAO,OAAO;AAAA,UAClD,aAAa,WAAY;AAErB,gBAAI,uBAAuB,KAAK,SAAS,IAAS;AAElD,mBAAO;AAAA,UACV;AAAA,UAED,WAAW;AAAA,QACpB,CAAM;AAKD,YAAI,SAAS,EAAE,OAAO;AAKtB,YAAI,kBAAkB,MAAM,kBAAkBpK,MAAK,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAatD,iBAAiB,SAAU,QAAQ,IAAI;AACnC,mBAAO,KAAK,UAAU,OAAO,QAAQ,EAAE;AAAA,UAC1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAcD,iBAAiB,SAAU,QAAQ,IAAI;AACnC,mBAAO,KAAK,UAAU,OAAO,QAAQ,EAAE;AAAA,UAC1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAYD,MAAM,SAAU,QAAQ,IAAI;AACxB,iBAAK,UAAU;AACf,iBAAK,MAAM;AAAA,UACd;AAAA,QACV,CAAM;AAKD,YAAI,MAAM,OAAO,MAAO,WAAY;AAIhC,cAAI4uB,OAAM,gBAAgB;AAK1B,UAAAA,KAAI,YAAYA,KAAI,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAWvB,cAAc,SAAU,OAAO,QAAQ;AAEnC,kBAAI,SAAS,KAAK;AAClB,kBAAI,YAAY,OAAO;AAGvB,uBAAS,KAAK,MAAM,OAAO,QAAQ,SAAS;AAC5C,qBAAO,aAAa,OAAO,MAAM;AAGjC,mBAAK,aAAa,MAAM,MAAM,QAAQ,SAAS,SAAS;AAAA,YAC3D;AAAA,UACd,CAAU;AAKD,UAAAA,KAAI,YAAYA,KAAI,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAWvB,cAAc,SAAU,OAAO,QAAQ;AAEnC,kBAAI,SAAS,KAAK;AAClB,kBAAI,YAAY,OAAO;AAGvB,kBAAI,YAAY,MAAM,MAAM,QAAQ,SAAS,SAAS;AAGtD,qBAAO,aAAa,OAAO,MAAM;AACjC,uBAAS,KAAK,MAAM,OAAO,QAAQ,SAAS;AAG5C,mBAAK,aAAa;AAAA,YACrB;AAAA,UACd,CAAU;AAED,mBAAS,SAAS,OAAO,QAAQ,WAAW;AACxC,gBAAI;AAGJ,gBAAI,KAAK,KAAK;AAGd,gBAAI,IAAI;AACJ,sBAAQ;AAGR,mBAAK,MAAM7iB;AAAAA,YAC5B,OAAoB;AACH,sBAAQ,KAAK;AAAA,YAChB;AAGD,qBAASxO,KAAI,GAAGA,KAAI,WAAWA,MAAK;AAChC,oBAAM,SAASA,EAAC,KAAK,MAAMA,EAAC;AAAA,YAC/B;AAAA,UACJ;AAED,iBAAOqxB;AAAA,QACV;AAKD,YAAI,QAAQ,EAAE,MAAM;AAKpB,YAAI,QAAQ,MAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAatB,KAAK,SAAU,MAAM,WAAW;AAE5B,gBAAI,iBAAiB,YAAY;AAGjC,gBAAI,gBAAgB,iBAAiB,KAAK,WAAW;AAGrD,gBAAI,cAAe,iBAAiB,KAAO,iBAAiB,KAAO,iBAAiB,IAAK;AAGzF,gBAAI,eAAe;AACnB,qBAASrxB,KAAI,GAAGA,KAAI,eAAeA,MAAK,GAAG;AACvC,2BAAa,KAAK,WAAW;AAAA,YAChC;AACD,gBAAIwJ,WAAU,UAAU,OAAO,cAAc,aAAa;AAG1D,iBAAK,OAAOA,QAAO;AAAA,UACtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAaD,OAAO,SAAU,MAAM;AAEnB,gBAAI,gBAAgB,KAAK,MAAO,KAAK,WAAW,MAAO,CAAC,IAAI;AAG5D,iBAAK,YAAY;AAAA,UACpB;AAAA,QACV;AAOuB,cAAM,cAAc,OAAO,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAOhD,KAAK,OAAO,IAAI,OAAO;AAAA,YACnB,MAAM;AAAA,YACN,SAAS;AAAA,UACtB,CAAU;AAAA,UAED,OAAO,WAAY;AACf,gBAAI;AAGJ,mBAAO,MAAM,KAAK,IAAI;AAGtB,gBAAI,MAAM,KAAK;AACf,gBAAI,KAAK,IAAI;AACb,gBAAI,OAAO,IAAI;AAGf,gBAAI,KAAK,cAAc,KAAK,iBAAiB;AACzC,4BAAc,KAAK;AAAA,YACpC,OAAuE;AACtD,4BAAc,KAAK;AAEnB,mBAAK,iBAAiB;AAAA,YACzB;AAED,gBAAI,KAAK,SAAS,KAAK,MAAM,aAAa,aAAa;AACnD,mBAAK,MAAM,KAAK,MAAM,MAAM,GAAG,KAAK;AAAA,YACrD,OAAoB;AACH,mBAAK,QAAQ,YAAY,KAAK,MAAM,MAAM,MAAM,GAAG,KAAK;AACxD,mBAAK,MAAM,YAAY;AAAA,YAC1B;AAAA,UACJ;AAAA,UAED,iBAAiB,SAAU,OAAO,QAAQ;AACtC,iBAAK,MAAM,aAAa,OAAO,MAAM;AAAA,UACxC;AAAA,UAED,aAAa,WAAY;AACrB,gBAAI;AAGJ,gBAAIA,WAAU,KAAK,IAAI;AAGvB,gBAAI,KAAK,cAAc,KAAK,iBAAiB;AAEzC,cAAAA,SAAQ,IAAI,KAAK,OAAO,KAAK,SAAS;AAGtC,qCAAuB,KAAK,SAAS,IAAS;AAAA,YAC/D,OAAuE;AAEtD,qCAAuB,KAAK,SAAS,IAAS;AAG9C,cAAAA,SAAQ,MAAM,oBAAoB;AAAA,YACrC;AAED,mBAAO;AAAA,UACV;AAAA,UAED,WAAW,MAAI;AAAA,QACxB,CAAM;AAeD,YAAI,eAAe,MAAM,eAAe/G,MAAK,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAoBhD,MAAM,SAAU,cAAc;AAC1B,iBAAK,MAAM,YAAY;AAAA,UAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAiBD,UAAU,SAAU,WAAW;AAC3B,oBAAQ,aAAa,KAAK,WAAW,UAAU,IAAI;AAAA,UACtD;AAAA,QACV,CAAM;AAKD,YAAI,WAAW,EAAE,SAAS;AAK1B,YAAI,mBAAmB,SAAS,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UActC,WAAW,SAAU,cAAc;AAC/B,gBAAI;AAGJ,gBAAI,aAAa,aAAa;AAC9B,gBAAI,OAAO,aAAa;AAGxB,gBAAI,MAAM;AACN,0BAAY,UAAU,OAAO,CAAC,YAAY,UAAU,CAAC,EAAE,OAAO,IAAI,EAAE,OAAO,UAAU;AAAA,YACtG,OAAoB;AACH,0BAAY;AAAA,YACf;AAED,mBAAO,UAAU,SAAS,MAAM;AAAA,UACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAeD,OAAO,SAAU,YAAY;AACzB,gBAAI;AAGJ,gBAAI,aAAa,OAAO,MAAM,UAAU;AAGxC,gBAAI,kBAAkB,WAAW;AAGjC,gBAAI,gBAAgB,CAAC,KAAK,cAAc,gBAAgB,CAAC,KAAK,YAAY;AAEtE,qBAAO,UAAU,OAAO,gBAAgB,MAAM,GAAG,CAAC,CAAC;AAGnD,8BAAgB,OAAO,GAAG,CAAC;AAC3B,yBAAW,YAAY;AAAA,YAC1B;AAED,mBAAO,aAAa,OAAO,EAAE,YAAwB,KAAU,CAAE;AAAA,UACpE;AAAA,QACV;AAKK,YAAI,qBAAqB,MAAM,qBAAqBA,MAAK,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAM5D,KAAKA,MAAK,OAAO;AAAA,YACb,QAAQ;AAAA,UACrB,CAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAoBD,SAAS,SAAU,QAAQkB,UAASkJ,MAAK,KAAK;AAE1C,kBAAM,KAAK,IAAI,OAAO,GAAG;AAGzB,gBAAI,YAAY,OAAO,gBAAgBA,MAAK,GAAG;AAC/C,gBAAI,aAAa,UAAU,SAASlJ,QAAO;AAG3C,gBAAI,YAAY,UAAU;AAG1B,mBAAO,aAAa,OAAO;AAAA,cACvB;AAAA,cACA,KAAKkJ;AAAA,cACL,IAAI,UAAU;AAAA,cACd,WAAW;AAAA,cACX,MAAM,UAAU;AAAA,cAChB,SAAS,UAAU;AAAA,cACnB,WAAW,OAAO;AAAA,cAClB,WAAW,IAAI;AAAA,YAChC,CAAc;AAAA,UACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAmBD,SAAS,SAAU,QAAQ,YAAYA,MAAK,KAAK;AAE7C,kBAAM,KAAK,IAAI,OAAO,GAAG;AAGzB,yBAAa,KAAK,OAAO,YAAY,IAAI,MAAM;AAG/C,gBAAI,YAAY,OAAO,gBAAgBA,MAAK,GAAG,EAAE,SAAS,WAAW,UAAU;AAE/E,mBAAO;AAAA,UACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAiBD,QAAQ,SAAU,YAAY6N,SAAQ;AAClC,gBAAI,OAAO,cAAc,UAAU;AAC/B,qBAAOA,QAAO,MAAM,YAAY,IAAI;AAAA,YACrD,OAAoB;AACH,qBAAO;AAAA,YACV;AAAA,UACJ;AAAA,QACV,CAAM;AAKD,YAAI,QAAQ,EAAE,MAAM;AAKpB,YAAI,aAAa,MAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAkB7B,SAAS,SAAU,UAAU,SAAS,QAAQ,MAAM,QAAQ;AAExD,gBAAI,CAAC,MAAM;AACP,qBAAO,UAAU,OAAO,KAAG,CAAC;AAAA,YAC/B;AAGD,gBAAI,CAAC,QAAQ;AACT,kBAAI7N,OAAM,OAAO,OAAO,EAAE,SAAS,UAAU,OAAM,CAAE,EAAE,QAAQ,UAAU,IAAI;AAAA,YAC9F,OAAoB;AACH,kBAAIA,OAAM,OAAO,OAAO,EAAE,SAAS,UAAU,QAAQ,OAAc,CAAE,EAAE,QAAQ,UAAU,IAAI;AAAA,YAChG;AAID,gBAAI,KAAK,UAAU,OAAOA,KAAI,MAAM,MAAM,OAAO,GAAG,SAAS,CAAC;AAC9D,YAAAA,KAAI,WAAW,UAAU;AAGzB,mBAAO,aAAa,OAAO,EAAE,KAAKA,MAAK,IAAQ,KAAU,CAAE;AAAA,UAC9D;AAAA,QACV;AAMK,YAAI,sBAAsB,MAAM,sBAAsB,mBAAmB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAM5E,KAAK,mBAAmB,IAAI,OAAO;AAAA,YAC/B,KAAK;AAAA,UAClB,CAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAmBD,SAAS,SAAU,QAAQlJ,UAAS,UAAU,KAAK;AAE/C,kBAAM,KAAK,IAAI,OAAO,GAAG;AAGzB,gBAAI,gBAAgB,IAAI,IAAI,QAAQ,UAAU,OAAO,SAAS,OAAO,QAAQ,IAAI,MAAM,IAAI,MAAM;AAGjG,gBAAI,KAAK,cAAc;AAGvB,gBAAI,aAAa,mBAAmB,QAAQ,KAAK,MAAM,QAAQA,UAAS,cAAc,KAAK,GAAG;AAG9F,uBAAW,MAAM,aAAa;AAE9B,mBAAO;AAAA,UACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAmBD,SAAS,SAAU,QAAQ,YAAY,UAAU,KAAK;AAElD,kBAAM,KAAK,IAAI,OAAO,GAAG;AAGzB,yBAAa,KAAK,OAAO,YAAY,IAAI,MAAM;AAG/C,gBAAI,gBAAgB,IAAI,IAAI,QAAQ,UAAU,OAAO,SAAS,OAAO,QAAQ,WAAW,MAAM,IAAI,MAAM;AAGxG,gBAAI,KAAK,cAAc;AAGvB,gBAAI,YAAY,mBAAmB,QAAQ,KAAK,MAAM,QAAQ,YAAY,cAAc,KAAK,GAAG;AAEhG,mBAAO;AAAA,UACV;AAAA,QACV,CAAM;AAAA,MACJ;AAAA,IAGF,CAAC;AAAA;;;;;;;;;;AC93BA,KAAC,SAAU,MAAM,SAAS,OAAO;AACA;AAEhC,QAAAG,QAAA,UAA2B,QAAQlD,YAAiB,GAAEC,kBAAwB;AAAA,MAS9E;AAAA,IACF,GAAEkD,gBAAM,SAAUgtB,WAAU;AAK3B,MAAAA,UAAS,KAAK,MAAO,WAAY;AAC7B,YAAI,MAAMA,UAAS,IAAI,gBAAgB,OAAM;AAE7C,YAAI,YAAY,IAAI,OAAO;AAAA,UACvB,cAAc,SAAU,OAAO,QAAQ;AAEnC,gBAAI,SAAS,KAAK;AAClB,gBAAI,YAAY,OAAO;AAEvB,wCAA4B,KAAK,MAAM,OAAO,QAAQ,WAAW,MAAM;AAGvE,iBAAK,aAAa,MAAM,MAAM,QAAQ,SAAS,SAAS;AAAA,UAC3D;AAAA,QACV,CAAM;AAED,YAAI,YAAY,IAAI,OAAO;AAAA,UACvB,cAAc,SAAU,OAAO,QAAQ;AAEnC,gBAAI,SAAS,KAAK;AAClB,gBAAI,YAAY,OAAO;AAGvB,gBAAI,YAAY,MAAM,MAAM,QAAQ,SAAS,SAAS;AAEtD,wCAA4B,KAAK,MAAM,OAAO,QAAQ,WAAW,MAAM;AAGvE,iBAAK,aAAa;AAAA,UACrB;AAAA,QACV,CAAM;AAED,iBAAS,4BAA4B,OAAO,QAAQ,WAAW,QAAQ;AACnE,cAAI;AAGJ,cAAI,KAAK,KAAK;AAGd,cAAI,IAAI;AACJ,wBAAY,GAAG,MAAM,CAAC;AAGtB,iBAAK,MAAM;AAAA,UACxB,OAAgB;AACH,wBAAY,KAAK;AAAA,UACpB;AACD,iBAAO,aAAa,WAAW,CAAC;AAGhC,mBAAS/wB,KAAI,GAAGA,KAAI,WAAWA,MAAK;AAChC,kBAAM,SAASA,EAAC,KAAK,UAAUA,EAAC;AAAA,UACnC;AAAA,QACJ;AAED,eAAO;AAAA,MACV;AAGD,aAAO+wB,UAAS,KAAK;AAAA,IAEtB,CAAC;AAAA;;;;;;;;;;AC/EA,KAAC,SAAU,MAAM,SAAS,OAAO;AACA;AAEhC,QAAAjtB,QAAA,UAA2B,QAAQlD,YAAiB,GAAEC,kBAAwB;AAAA,MAS9E;AAAA,IACF,GAAEkD,gBAAM,SAAUgtB,WAAU;AAK3B,MAAAA,UAAS,KAAK,MAAO,WAAY;AAC7B,YAAI,MAAMA,UAAS,IAAI,gBAAgB,OAAM;AAE7C,YAAI,YAAY,IAAI,YAAY,IAAI,OAAO;AAAA,UACvC,cAAc,SAAU,OAAO,QAAQ;AAEnC,gBAAI,SAAS,KAAK;AAClB,gBAAI,YAAY,OAAO;AACvB,gBAAI,KAAK,KAAK;AACd,gBAAI,UAAU,KAAK;AAGnB,gBAAI,IAAI;AACJ,wBAAU,KAAK,WAAW,GAAG,MAAM,CAAC;AAGpC,mBAAK,MAAM;AAAA,YACd;AACD,gBAAI,YAAY,QAAQ,MAAM,CAAC;AAC/B,mBAAO,aAAa,WAAW,CAAC;AAGhC,oBAAQ,YAAY,CAAC,IAAK,QAAQ,YAAY,CAAC,IAAI,IAAK;AAGxD,qBAAS/wB,KAAI,GAAGA,KAAI,WAAWA,MAAK;AAChC,oBAAM,SAASA,EAAC,KAAK,UAAUA,EAAC;AAAA,YACnC;AAAA,UACJ;AAAA,QACV,CAAM;AAED,YAAI,YAAY;AAEhB,eAAO;AAAA,MACV;AAGD,aAAO+wB,UAAS,KAAK;AAAA,IAEtB,CAAC;AAAA;;;;;;;;;;ACzDA,KAAC,SAAU,MAAM,SAAS,OAAO;AACA;AAEhC,QAAAjtB,QAAA,UAA2B,QAAQlD,YAAiB,GAAEC,kBAAwB;AAAA,MAS9E;AAAA,IACF,GAAEkD,gBAAM,SAAUgtB,WAAU;AAAA,MAE5B;AAAA;AAAA;AAAA;AAAA;AAKC,MAAAA,UAAS,KAAK,aAAc,WAAY;AACpC,YAAI,aAAaA,UAAS,IAAI,gBAAgB,OAAM;AAEvD,iBAAS,QAAQ,MACjB;AACC,eAAM,QAAQ,KAAM,SAAU,KAAM;AACpC,gBAAI,KAAM,QAAQ,KAAI;AACtB,gBAAI,KAAM,QAAQ,IAAG;AACrB,gBAAI,KAAK,OAAO;AAEhB,gBAAI,OAAO,KACX;AACA,mBAAK;AACL,kBAAI,OAAO,KACX;AACC,qBAAK;AACL,oBAAI,OAAO,KACX;AACC,uBAAK;AAAA,gBACL,OAED;AACC,oBAAE;AAAA,gBACF;AAAA,cACD,OAED;AACC,kBAAE;AAAA,cACF;AAAA,YACA,OAED;AACA,gBAAE;AAAA,YACD;AAED,mBAAO;AACP,oBAAS,MAAM;AACf,oBAAS,MAAM;AACf,oBAAQ;AAAA,UACP,OAED;AACA,oBAAS,KAAQ;AAAA,UAChB;AACD,iBAAO;AAAA,QACP;AAED,iBAAS,WAAW,SACpB;AACC,eAAK,QAAQ,CAAC,IAAI,QAAQ,QAAQ,CAAC,CAAC,OAAO,GAC3C;AAEC,oBAAQ,CAAC,IAAI,QAAQ,QAAQ,CAAC,CAAC;AAAA,UAC/B;AACD,iBAAO;AAAA,QACP;AAEE,YAAI,YAAY,WAAW,YAAY,WAAW,OAAO;AAAA,UACrD,cAAc,SAAU,OAAO,QAAQ;AAEnC,gBAAI,SAAS,KAAK;AAClB,gBAAI,YAAY,OAAO;AACvB,gBAAI,KAAK,KAAK;AACd,gBAAI,UAAU,KAAK;AAGnB,gBAAI,IAAI;AACJ,wBAAU,KAAK,WAAW,GAAG,MAAM,CAAC;AAGpC,mBAAK,MAAM;AAAA,YACd;AAEV,uBAAW,OAAO;AAElB,gBAAI,YAAY,QAAQ,MAAM,CAAC;AACtB,mBAAO,aAAa,WAAW,CAAC;AAGhC,qBAAS/wB,KAAI,GAAGA,KAAI,WAAWA,MAAK;AAChC,oBAAM,SAASA,EAAC,KAAK,UAAUA,EAAC;AAAA,YACnC;AAAA,UACJ;AAAA,QACV,CAAM;AAED,mBAAW,YAAY;AAEvB,eAAO;AAAA,MACV;AAKD,aAAO+wB,UAAS,KAAK;AAAA,IAEtB,CAAC;AAAA;;;;;;;;;;ACnHA,KAAC,SAAU,MAAM,SAAS,OAAO;AACA;AAEhC,QAAAjtB,QAAA,UAA2B,QAAQlD,YAAiB,GAAEC,kBAAwB;AAAA,MAS9E;AAAA,IACF,GAAEkD,gBAAM,SAAUgtB,WAAU;AAK3B,MAAAA,UAAS,KAAK,MAAO,WAAY;AAC7B,YAAI,MAAMA,UAAS,IAAI,gBAAgB,OAAM;AAE7C,YAAI,YAAY,IAAI,YAAY,IAAI,OAAO;AAAA,UACvC,cAAc,SAAU,OAAO,QAAQ;AAEnC,gBAAI,SAAS,KAAK;AAClB,gBAAI,YAAY,OAAO;AACvB,gBAAI,KAAK,KAAK;AACd,gBAAI,YAAY,KAAK;AAGrB,gBAAI,IAAI;AACJ,0BAAY,KAAK,aAAa,GAAG,MAAM,CAAC;AAGxC,mBAAK,MAAM;AAAA,YACd;AACD,mBAAO,aAAa,WAAW,CAAC;AAGhC,qBAAS/wB,KAAI,GAAGA,KAAI,WAAWA,MAAK;AAChC,oBAAM,SAASA,EAAC,KAAK,UAAUA,EAAC;AAAA,YACnC;AAAA,UACJ;AAAA,QACV,CAAM;AAED,YAAI,YAAY;AAEhB,eAAO;AAAA,MACV;AAGD,aAAO+wB,UAAS,KAAK;AAAA,IAEtB,CAAC;AAAA;;;;;;;;;;ACrDA,KAAC,SAAU,MAAM,SAAS,OAAO;AACA;AAEhC,QAAAjtB,QAAA,UAA2B,QAAQlD,YAAiB,GAAEC,kBAAwB;AAAA,MAS9E;AAAA,IACF,GAAEkD,gBAAM,SAAUgtB,WAAU;AAK3B,MAAAA,UAAS,KAAK,MAAO,WAAY;AAC7B,YAAI,MAAMA,UAAS,IAAI,gBAAgB,OAAM;AAE7C,YAAI,YAAY,IAAI,OAAO;AAAA,UACvB,cAAc,SAAU,OAAO,QAAQ;AACnC,iBAAK,QAAQ,aAAa,OAAO,MAAM;AAAA,UAC1C;AAAA,QACV,CAAM;AAED,YAAI,YAAY,IAAI,OAAO;AAAA,UACvB,cAAc,SAAU,OAAO,QAAQ;AACnC,iBAAK,QAAQ,aAAa,OAAO,MAAM;AAAA,UAC1C;AAAA,QACV,CAAM;AAED,eAAO;AAAA,MACV;AAGD,aAAOA,UAAS,KAAK;AAAA,IAEtB,CAAC;AAAA;;;;;;;;;;ACvCA,KAAC,SAAU,MAAM,SAAS,OAAO;AACA;AAEhC,QAAAjtB,QAAA,UAA2B,QAAQlD,YAAiB,GAAEC,kBAAwB;AAAA,MAS9E;AAAA,IACF,GAAEkD,gBAAM,SAAUgtB,WAAU;AAK3B,MAAAA,UAAS,IAAI,WAAW;AAAA,QACpB,KAAK,SAAU,MAAM,WAAW;AAE5B,cAAI,eAAe,KAAK;AACxB,cAAI,iBAAiB,YAAY;AAGjC,cAAI,gBAAgB,iBAAiB,eAAe;AAGpD,cAAI,cAAc,eAAe,gBAAgB;AAGjD,eAAK,MAAK;AACV,eAAK,MAAM,gBAAgB,CAAC,KAAK,iBAAkB,KAAM,cAAc,IAAK;AAC5E,eAAK,YAAY;AAAA,QACpB;AAAA,QAED,OAAO,SAAU,MAAM;AAEnB,cAAI,gBAAgB,KAAK,MAAO,KAAK,WAAW,MAAO,CAAC,IAAI;AAG5D,eAAK,YAAY;AAAA,QACpB;AAAA,MACN;AAGC,aAAOA,UAAS,IAAI;AAAA,IAErB,CAAC;AAAA;;;;;;;;;;AChDA,KAAC,SAAU,MAAM,SAAS,OAAO;AACA;AAEhC,QAAAjtB,QAAA,UAA2B,QAAQlD,YAAiB,GAAEC,kBAAwB;AAAA,MAS9E;AAAA,IACF,GAAEkD,gBAAM,SAAUgtB,WAAU;AAK3B,MAAAA,UAAS,IAAI,WAAW;AAAA,QACpB,KAAK,SAAU,MAAM,WAAW;AAE5B,cAAI,iBAAiB,YAAY;AAGjC,cAAI,gBAAgB,iBAAiB,KAAK,WAAW;AAGrD,eAAK,OAAOA,UAAS,IAAI,UAAU,OAAO,gBAAgB,CAAC,CAAC,EACvD,OAAOA,UAAS,IAAI,UAAU,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;AAAA,QACtE;AAAA,QAED,OAAO,SAAU,MAAM;AAEnB,cAAI,gBAAgB,KAAK,MAAO,KAAK,WAAW,MAAO,CAAC,IAAI;AAG5D,eAAK,YAAY;AAAA,QACpB;AAAA,MACN;AAGC,aAAOA,UAAS,IAAI;AAAA,IAErB,CAAC;AAAA;;;;;;;;;;AC3CA,KAAC,SAAU,MAAM,SAAS,OAAO;AACA;AAEhC,QAAAjtB,QAAA,UAA2B,QAAQlD,YAAiB,GAAEC,kBAAwB;AAAA,MAS9E;AAAA,IACF,GAAEkD,gBAAM,SAAUgtB,WAAU;AAK3B,MAAAA,UAAS,IAAI,WAAW;AAAA,QACpB,KAAK,SAAU,MAAM,WAAW;AAE5B,eAAK,OAAOA,UAAS,IAAI,UAAU,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;AAG1D,UAAAA,UAAS,IAAI,YAAY,IAAI,MAAM,SAAS;AAAA,QAC/C;AAAA,QAED,OAAO,SAAU,MAAM;AAEnB,UAAAA,UAAS,IAAI,YAAY,MAAM,IAAI;AAGnC,eAAK;AAAA,QACR;AAAA,MACN;AAGC,aAAOA,UAAS,IAAI;AAAA,IAErB,CAAC;AAAA;;;;;;;;;;ACvCA,KAAC,SAAU,MAAM,SAAS,OAAO;AACA;AAEhC,QAAAjtB,QAAA,UAA2B,QAAQlD,YAAiB,GAAEC,kBAAwB;AAAA,MAS9E;AAAA,IACF,GAAEkD,gBAAM,SAAUgtB,WAAU;AAK3B,MAAAA,UAAS,IAAI,cAAc;AAAA,QACvB,KAAK,SAAU,MAAM,WAAW;AAE5B,cAAI,iBAAiB,YAAY;AAGjC,eAAK,MAAK;AACV,eAAK,YAAY,kBAAmB,KAAK,WAAW,kBAAmB;AAAA,QAC1E;AAAA,QAED,OAAO,SAAU,MAAM;AAEnB,cAAI,YAAY,KAAK;AAGrB,cAAI/wB,KAAI,KAAK,WAAW;AACxB,mBAASA,KAAI,KAAK,WAAW,GAAGA,MAAK,GAAGA,MAAK;AACzC,gBAAM,UAAUA,OAAM,CAAC,MAAO,KAAMA,KAAI,IAAK,IAAM,KAAO;AACtD,mBAAK,WAAWA,KAAI;AACpB;AAAA,YACH;AAAA,UACJ;AAAA,QACJ;AAAA,MACN;AAGC,aAAO+wB,UAAS,IAAI;AAAA,IAErB,CAAC;AAAA;;;;;;;;;;AC9CA,KAAC,SAAU,MAAM,SAAS,OAAO;AACA;AAEhC,QAAAjtB,QAAA,UAA2B,QAAQlD,YAAiB,GAAEC,kBAAwB;AAAA,MAS9E;AAAA,IACF,GAAEkD,gBAAM,SAAUgtB,WAAU;AAK3B,MAAAA,UAAS,IAAI,YAAY;AAAA,QACrB,KAAK,WAAY;AAAA,QAChB;AAAA,QAED,OAAO,WAAY;AAAA,QAClB;AAAA,MACN;AAGC,aAAOA,UAAS,IAAI;AAAA,IAErB,CAAC;AAAA;;;;;;;;;;AC7BA,KAAC,SAAU,MAAM,SAAS,OAAO;AACA;AAEhC,QAAAjtB,QAAA,UAA2B,QAAQlD,YAAiB,GAAEC,kBAAwB;AAAA,MAS9E;AAAA,IACF,GAAEkD,gBAAM,SAAUgtB,WAAU;AAE3B,OAAC,SAAUviB,cAAW;AAElB,YAAI,IAAIuiB;AACR,YAAI,QAAQ,EAAE;AACd,YAAI,eAAe,MAAM;AACzB,YAAI,QAAQ,EAAE;AACd,YAAI,MAAM,MAAM;AAChB,YAAI,WAAW,EAAE;AAEE,iBAAS,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAc9B,WAAW,SAAU,cAAc;AAC/B,mBAAO,aAAa,WAAW,SAAS,GAAG;AAAA,UAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAeD,OAAO,SAAU,OAAO;AACpB,gBAAI,aAAa,IAAI,MAAM,KAAK;AAChC,mBAAO,aAAa,OAAO,EAAE,WAAwB;AAAA,UACxD;AAAA,QACH;AAAA,MACP;AAGC,aAAOA,UAAS,OAAO;AAAA,IAExB,CAAC;AAAA;;;;;;;;;;ACjEA,KAAC,SAAU,MAAM,SAAS,OAAO;AACA;AAEhC,QAAAjtB,QAAiB,UAAU,QAAQlD,eAAmBC,oBAAyB8H,cAAkB6D,iBAAqBE,kBAAwB;AAAA,MAS9I;AAAA,IACF,GAAE3I,gBAAM,SAAUgtB,WAAU;AAE3B,OAAC,WAAY;AAET,YAAI,IAAIA;AACR,YAAI,QAAQ,EAAE;AACd,YAAI,cAAc,MAAM;AACxB,YAAI,SAAS,EAAE;AAGf,YAAI,OAAO;AACX,YAAI,WAAW;AACf,YAAI,YAAY;AAChB,YAAI,YAAY;AAChB,YAAI,YAAY;AAChB,YAAI,YAAY;AAChB,YAAI,gBAAgB;AACpB,YAAI,gBAAgB;AACpB,YAAI,gBAAgB;AACpB,YAAI,gBAAgB;AAGpB,SAAC,WAAY;AAET,cAAI,IAAI;AACR,mBAAS/wB,KAAI,GAAGA,KAAI,KAAKA,MAAK;AAC1B,gBAAIA,KAAI,KAAK;AACT,gBAAEA,EAAC,IAAIA,MAAK;AAAA,YAC7B,OAAoB;AACH,gBAAEA,EAAC,IAAKA,MAAK,IAAK;AAAA,YACrB;AAAA,UACJ;AAGD,cAAI,IAAI;AACR,cAAI,KAAK;AACT,mBAASA,KAAI,GAAGA,KAAI,KAAKA,MAAK;AAE1B,gBAAI,KAAK,KAAM,MAAM,IAAM,MAAM,IAAM,MAAM,IAAM,MAAM;AACzD,iBAAM,OAAO,IAAM,KAAK,MAAQ;AAChC,iBAAK,CAAC,IAAI;AACV,qBAAS,EAAE,IAAI;AAGf,gBAAI,KAAK,EAAE,CAAC;AACZ,gBAAI,KAAK,EAAE,EAAE;AACb,gBAAI,KAAK,EAAE,EAAE;AAGb,gBAAI,IAAK,EAAE,EAAE,IAAI,MAAU,KAAK;AAChC,sBAAU,CAAC,IAAK,KAAK,KAAO,MAAM;AAClC,sBAAU,CAAC,IAAK,KAAK,KAAO,MAAM;AAClC,sBAAU,CAAC,IAAK,KAAK,IAAO,MAAM;AAClC,sBAAU,CAAC,IAAI;AAGf,gBAAI,IAAK,KAAK,WAAc,KAAK,QAAY,KAAK,MAAU,IAAI;AAChE,0BAAc,EAAE,IAAK,KAAK,KAAO,MAAM;AACvC,0BAAc,EAAE,IAAK,KAAK,KAAO,MAAM;AACvC,0BAAc,EAAE,IAAK,KAAK,IAAO,MAAM;AACvC,0BAAc,EAAE,IAAI;AAGpB,gBAAI,CAAC,GAAG;AACJ,kBAAI,KAAK;AAAA,YAC1B,OAAoB;AACH,kBAAI,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AACxB,oBAAM,EAAE,EAAE,EAAE,CAAC;AAAA,YAChB;AAAA,UACJ;AAAA,QACV;AAGK,YAAI,OAAO,CAAC,GAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,KAAM,IAAM,EAAI;AAK5E,YAAI,MAAM,OAAO,MAAM,YAAY,OAAO;AAAA,UACtC,UAAU,WAAY;AAClB,gBAAI;AAGJ,gBAAI,KAAK,YAAY,KAAK,mBAAmB,KAAK,MAAM;AACpD;AAAA,YACH;AAGD,gBAAI6M,OAAM,KAAK,iBAAiB,KAAK;AACrC,gBAAI,WAAWA,KAAI;AACnB,gBAAI,UAAUA,KAAI,WAAW;AAG7B,gBAAI,UAAU,KAAK,WAAW,UAAU;AAGxC,gBAAI,UAAU,UAAU,KAAK;AAG7B,gBAAI,cAAc,KAAK,eAAe;AACtC,qBAAS,QAAQ,GAAG,QAAQ,QAAQ,SAAS;AACzC,kBAAI,QAAQ,SAAS;AACjB,4BAAY,KAAK,IAAI,SAAS,KAAK;AAAA,cACxD,OAAwB;AACH,oBAAI,YAAY,QAAQ,CAAC;AAEzB,oBAAI,EAAE,QAAQ,UAAU;AAEpB,sBAAK,KAAK,IAAM,MAAM;AAGtB,sBAAK,KAAK,MAAM,EAAE,KAAK,KAAO,KAAM,MAAM,KAAM,GAAI,KAAK,KAAO,KAAM,MAAM,IAAK,GAAI,KAAK,IAAK,KAAK,IAAI,GAAI;AAG5G,uBAAK,KAAM,QAAQ,UAAW,CAAC,KAAK;AAAA,gBACvC,WAAU,UAAU,KAAK,QAAQ,WAAW,GAAG;AAE5C,sBAAK,KAAK,MAAM,EAAE,KAAK,KAAO,KAAM,MAAM,KAAM,GAAI,KAAK,KAAO,KAAM,MAAM,IAAK,GAAI,KAAK,IAAK,KAAK,IAAI,GAAI;AAAA,gBAC/G;AAED,4BAAY,KAAK,IAAI,YAAY,QAAQ,OAAO,IAAI;AAAA,cACvD;AAAA,YACJ;AAGD,gBAAI,iBAAiB,KAAK,kBAAkB;AAC5C,qBAAS,WAAW,GAAG,WAAW,QAAQ,YAAY;AAClD,kBAAI,QAAQ,SAAS;AAErB,kBAAI,WAAW,GAAG;AACd,oBAAI,IAAI,YAAY,KAAK;AAAA,cAC9C,OAAwB;AACH,oBAAI,IAAI,YAAY,QAAQ,CAAC;AAAA,cAChC;AAED,kBAAI,WAAW,KAAK,SAAS,GAAG;AAC5B,+BAAe,QAAQ,IAAI;AAAA,cAChD,OAAwB;AACH,+BAAe,QAAQ,IAAI,cAAc,KAAK,MAAM,EAAE,CAAC,IAAI,cAAc,KAAM,MAAM,KAAM,GAAI,CAAC,IACrE,cAAc,KAAM,MAAM,IAAK,GAAI,CAAC,IAAI,cAAc,KAAK,IAAI,GAAI,CAAC;AAAA,cAClG;AAAA,YACJ;AAAA,UACJ;AAAA,UAED,cAAc,SAAU,GAAG,QAAQ;AAC/B,iBAAK,cAAc,GAAG,QAAQ,KAAK,cAAc,WAAW,WAAW,WAAW,WAAW,IAAI;AAAA,UACpG;AAAA,UAED,cAAc,SAAU,GAAG,QAAQ;AAE/B,gBAAI,IAAI,EAAE,SAAS,CAAC;AACpB,cAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC;AAC5B,cAAE,SAAS,CAAC,IAAI;AAEhB,iBAAK,cAAc,GAAG,QAAQ,KAAK,iBAAiB,eAAe,eAAe,eAAe,eAAe,QAAQ;AAGxH,gBAAI,IAAI,EAAE,SAAS,CAAC;AACpB,cAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC;AAC5B,cAAE,SAAS,CAAC,IAAI;AAAA,UACnB;AAAA,UAED,eAAe,SAAU,GAAG,QAAQ,aAAaykB,YAAWC,YAAWC,YAAWC,YAAWC,OAAM;AAE/F,gBAAI,UAAU,KAAK;AAGnB,gBAAI,KAAK,EAAE,MAAM,IAAQ,YAAY,CAAC;AACtC,gBAAI,KAAK,EAAE,SAAS,CAAC,IAAI,YAAY,CAAC;AACtC,gBAAI,KAAK,EAAE,SAAS,CAAC,IAAI,YAAY,CAAC;AACtC,gBAAI,KAAK,EAAE,SAAS,CAAC,IAAI,YAAY,CAAC;AAGtC,gBAAI,QAAQ;AAGZ,qBAASxkB,SAAQ,GAAGA,SAAQ,SAASA,UAAS;AAE1C,kBAAI,KAAKokB,WAAU,OAAO,EAAE,IAAIC,WAAW,OAAO,KAAM,GAAI,IAAIC,WAAW,OAAO,IAAK,GAAI,IAAIC,WAAU,KAAK,GAAI,IAAI,YAAY,OAAO;AACzI,kBAAI,KAAKH,WAAU,OAAO,EAAE,IAAIC,WAAW,OAAO,KAAM,GAAI,IAAIC,WAAW,OAAO,IAAK,GAAI,IAAIC,WAAU,KAAK,GAAI,IAAI,YAAY,OAAO;AACzI,kBAAI,KAAKH,WAAU,OAAO,EAAE,IAAIC,WAAW,OAAO,KAAM,GAAI,IAAIC,WAAW,OAAO,IAAK,GAAI,IAAIC,WAAU,KAAK,GAAI,IAAI,YAAY,OAAO;AACzI,kBAAI,KAAKH,WAAU,OAAO,EAAE,IAAIC,WAAW,OAAO,KAAM,GAAI,IAAIC,WAAW,OAAO,IAAK,GAAI,IAAIC,WAAU,KAAK,GAAI,IAAI,YAAY,OAAO;AAGzI,mBAAK;AACL,mBAAK;AACL,mBAAK;AACL,mBAAK;AAAA,YACR;AAGD,gBAAI,MAAOC,MAAK,OAAO,EAAE,KAAK,KAAOA,MAAM,OAAO,KAAM,GAAI,KAAK,KAAOA,MAAM,OAAO,IAAK,GAAI,KAAK,IAAKA,MAAK,KAAK,GAAI,KAAK,YAAY,OAAO;AAC9I,gBAAI,MAAOA,MAAK,OAAO,EAAE,KAAK,KAAOA,MAAM,OAAO,KAAM,GAAI,KAAK,KAAOA,MAAM,OAAO,IAAK,GAAI,KAAK,IAAKA,MAAK,KAAK,GAAI,KAAK,YAAY,OAAO;AAC9I,gBAAI,MAAOA,MAAK,OAAO,EAAE,KAAK,KAAOA,MAAM,OAAO,KAAM,GAAI,KAAK,KAAOA,MAAM,OAAO,IAAK,GAAI,KAAK,IAAKA,MAAK,KAAK,GAAI,KAAK,YAAY,OAAO;AAC9I,gBAAI,MAAOA,MAAK,OAAO,EAAE,KAAK,KAAOA,MAAM,OAAO,KAAM,GAAI,KAAK,KAAOA,MAAM,OAAO,IAAK,GAAI,KAAK,IAAKA,MAAK,KAAK,GAAI,KAAK,YAAY,OAAO;AAG9I,cAAE,MAAM,IAAQ;AAChB,cAAE,SAAS,CAAC,IAAI;AAChB,cAAE,SAAS,CAAC,IAAI;AAChB,cAAE,SAAS,CAAC,IAAI;AAAA,UACnB;AAAA,UAED,SAAS,MAAI;AAAA,QACtB,CAAM;AAUD,UAAE,MAAM,YAAY,cAAc,GAAG;AAAA,MAC1C;AAGC,aAAOX,UAAS;AAAA,IAEjB,CAAC;AAAA;;;;;;;;;;ACzOA,KAAC,SAAU,MAAM,SAAS,OAAO;AACA;AAEhC,QAAAjtB,QAAiB,UAAU,QAAQlD,eAAmBC,oBAAyB8H,cAAkB6D,iBAAqBE,kBAAwB;AAAA,MAS9I;AAAA,IACF,GAAE3I,gBAAM,SAAUgtB,WAAU;AAE3B,OAAC,WAAY;AAET,YAAI,IAAIA;AACR,YAAI,QAAQ,EAAE;AACd,YAAI,YAAY,MAAM;AACtB,YAAI,cAAc,MAAM;AACxB,YAAI,SAAS,EAAE;AAGf,YAAI,MAAM;AAAA,UACN;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAC5B;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAC5B;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAC5B;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAC5B;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAC5B;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAC5B;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,QACrC;AAGK,YAAI,MAAM;AAAA,UACN;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UACpB;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UACpB;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UACpB;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UACpB;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UACpB;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UACpB;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UACpB;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,QAC7B;AAGK,YAAI,aAAa,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAGhF,YAAI,SAAS;AAAA,UACT;AAAA,YACI,GAAK;AAAA,YACL,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,WAAW;AAAA,YACX,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,GAAK;AAAA,YACL,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,WAAW;AAAA,YACX,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,UACf;AAAA,UACD;AAAA,YACI,GAAK;AAAA,YACL,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,SAAU;AAAA,YACV,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,UACf;AAAA,UACD;AAAA,YACI,GAAK;AAAA,YACL,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,QAAS;AAAA,YACT,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,UACd;AAAA,UACD;AAAA,YACI,GAAK;AAAA,YACL,OAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,OAAQ;AAAA,YACR,OAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,UACb;AAAA,UACD;AAAA,YACI,GAAK;AAAA,YACL,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,MAAO;AAAA,YACP,MAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAS;AAAA,YACT,OAAS;AAAA,YACT,OAAS;AAAA,YACT,OAAS;AAAA,YACT,OAAS;AAAA,YACT,OAAS;AAAA,YACT,OAAS;AAAA,YACT,OAAS;AAAA,YACT,OAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,OAAS;AAAA,YACT,OAAS;AAAA,YACT,OAAS;AAAA,YACT,OAAS;AAAA,YACT,OAAS;AAAA,YACT,OAAS;AAAA,YACT,OAAS;AAAA,YACT,OAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,UACZ;AAAA,UACD;AAAA,YACI,GAAK;AAAA,YACL,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,KAAM;AAAA,YACN,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACX;AAAA,UACD;AAAA,YACI,GAAK;AAAA,YACL,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,GAAK;AAAA,YACL,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,UACV;AAAA,UACD;AAAA,YACI,GAAK;AAAA,YACL,GAAK;AAAA,YACL,GAAK;AAAA,YACL,GAAK;AAAA,YACL,GAAK;AAAA,YACL,GAAK;AAAA,YACL,GAAK;AAAA,YACL,GAAK;AAAA,YACL,GAAK;AAAA,YACL,GAAK;AAAA,YACL,IAAK;AAAA,YACL,IAAK;AAAA,YACL,IAAK;AAAA,YACL,IAAK;AAAA,YACL,IAAK;AAAA,YACL,IAAK;AAAA,YACL,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,UACf;AAAA,QACV;AAGK,YAAI,YAAY;AAAA,UACZ;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,QAC7C;AAKK,YAAI,MAAM,OAAO,MAAM,YAAY,OAAO;AAAA,UACtC,UAAU,WAAY;AAElB,gBAAIlkB,OAAM,KAAK;AACf,gBAAI,WAAWA,KAAI;AAGnB,gBAAI,UAAU;AACd,qBAAS7M,KAAI,GAAGA,KAAI,IAAIA,MAAK;AACzB,kBAAI,YAAY,IAAIA,EAAC,IAAI;AACzB,sBAAQA,EAAC,IAAK,SAAS,cAAc,CAAC,MAAO,KAAK,YAAY,KAAO;AAAA,YACxE;AAGD,gBAAI,UAAU,KAAK,WAAW;AAC9B,qBAAS,UAAU,GAAG,UAAU,IAAI,WAAW;AAE3C,kBAAI,SAAS,QAAQ,OAAO,IAAI;AAGhC,kBAAI,WAAW,WAAW,OAAO;AAGjC,uBAASA,KAAI,GAAGA,KAAI,IAAIA,MAAK;AAEzB,uBAAQA,KAAI,IAAK,CAAC,KAAK,SAAU,IAAIA,EAAC,IAAI,IAAK,YAAY,EAAE,KAAM,KAAKA,KAAI;AAG5E,uBAAO,KAAMA,KAAI,IAAK,EAAE,KAAK,QAAQ,MAAQ,IAAIA,KAAI,EAAE,IAAI,IAAK,YAAY,EAAG,KAAM,KAAKA,KAAI;AAAA,cACjG;AAKD,qBAAO,CAAC,IAAK,OAAO,CAAC,KAAK,IAAM,OAAO,CAAC,MAAM;AAC9C,uBAASA,KAAI,GAAGA,KAAI,GAAGA,MAAK;AACxB,uBAAOA,EAAC,IAAI,OAAOA,EAAC,OAAQA,KAAI,KAAK,IAAI;AAAA,cAC5C;AACD,qBAAO,CAAC,IAAK,OAAO,CAAC,KAAK,IAAM,OAAO,CAAC,MAAM;AAAA,YACjD;AAGD,gBAAI,aAAa,KAAK,cAAc;AACpC,qBAASA,KAAI,GAAGA,KAAI,IAAIA,MAAK;AACzB,yBAAWA,EAAC,IAAI,QAAQ,KAAKA,EAAC;AAAA,YACjC;AAAA,UACJ;AAAA,UAED,cAAc,SAAU,GAAG,QAAQ;AAC/B,iBAAK,cAAc,GAAG,QAAQ,KAAK,QAAQ;AAAA,UAC9C;AAAA,UAED,cAAc,SAAU,GAAG,QAAQ;AAC/B,iBAAK,cAAc,GAAG,QAAQ,KAAK,WAAW;AAAA,UACjD;AAAA,UAED,eAAe,SAAU,GAAG,QAAQ,SAAS;AAEzC,iBAAK,UAAU,EAAE,MAAM;AACvB,iBAAK,UAAU,EAAE,SAAS,CAAC;AAG3B,uBAAW,KAAK,MAAM,GAAI,SAAU;AACpC,uBAAW,KAAK,MAAM,IAAI,KAAU;AACpC,uBAAW,KAAK,MAAM,GAAI,SAAU;AACpC,uBAAW,KAAK,MAAM,GAAI,QAAU;AACpC,uBAAW,KAAK,MAAM,GAAI,UAAU;AAGpC,qBAASkN,SAAQ,GAAGA,SAAQ,IAAIA,UAAS;AAErC,kBAAI,SAAS,QAAQA,MAAK;AAC1B,kBAAI,SAAS,KAAK;AAClB,kBAAI,SAAS,KAAK;AAGlB,kBAAI7J,KAAI;AACR,uBAASrD,KAAI,GAAGA,KAAI,GAAGA,MAAK;AACxB,gBAAAqD,MAAK,OAAOrD,EAAC,IAAI,SAAS,OAAOA,EAAC,KAAK,UAAUA,EAAC,OAAO,CAAC;AAAA,cAC7D;AACD,mBAAK,UAAU;AACf,mBAAK,UAAU,SAASqD;AAAA,YAC3B;AAGD,gBAAI,IAAI,KAAK;AACb,iBAAK,UAAU,KAAK;AACpB,iBAAK,UAAU;AAGf,uBAAW,KAAK,MAAM,GAAI,UAAU;AACpC,uBAAW,KAAK,MAAM,GAAI,QAAU;AACpC,uBAAW,KAAK,MAAM,GAAI,SAAU;AACpC,uBAAW,KAAK,MAAM,IAAI,KAAU;AACpC,uBAAW,KAAK,MAAM,GAAI,SAAU;AAGpC,cAAE,MAAM,IAAI,KAAK;AACjB,cAAE,SAAS,CAAC,IAAI,KAAK;AAAA,UACxB;AAAA,UAED,SAAS,KAAG;AAAA,UAEZ,QAAQ,KAAG;AAAA,UAEX,WAAW,KAAG;AAAA,QACvB,CAAM;AAGD,iBAAS,WAAW,QAAQ8G,OAAM;AAC9B,cAAI,KAAM,KAAK,YAAY,SAAU,KAAK,WAAWA;AACrD,eAAK,WAAW;AAChB,eAAK,WAAW,KAAK;AAAA,QACxB;AAED,iBAAS,WAAW,QAAQA,OAAM;AAC9B,cAAI,KAAM,KAAK,YAAY,SAAU,KAAK,WAAWA;AACrD,eAAK,WAAW;AAChB,eAAK,WAAW,KAAK;AAAA,QACxB;AAUD,UAAE,MAAM,YAAY,cAAc,GAAG;AAKrC,YAAI,YAAY,OAAO,YAAY,YAAY,OAAO;AAAA,UAClD,UAAU,WAAY;AAElB,gBAAI0C,OAAM,KAAK;AACf,gBAAI,WAAWA,KAAI;AAEnB,gBAAI,SAAS,WAAW,KAAK,SAAS,WAAW,KAAK,SAAS,SAAS,GAAG;AACvE,oBAAM,IAAI,MAAM,+EAA+E;AAAA,YAClG;AAGD,gBAAI,OAAO,SAAS,MAAM,GAAG,CAAC;AAC9B,gBAAI8kB,QAAO,SAAS,SAAS,IAAI,SAAS,MAAM,GAAG,CAAC,IAAI,SAAS,MAAM,GAAG,CAAC;AAC3E,gBAAI,OAAO,SAAS,SAAS,IAAI,SAAS,MAAM,GAAG,CAAC,IAAI,SAAS,MAAM,GAAG,CAAC;AAG3E,iBAAK,QAAQ,IAAI,gBAAgB,UAAU,OAAO,IAAI,CAAC;AACvD,iBAAK,QAAQ,IAAI,gBAAgB,UAAU,OAAOA,KAAI,CAAC;AACvD,iBAAK,QAAQ,IAAI,gBAAgB,UAAU,OAAO,IAAI,CAAC;AAAA,UAC1D;AAAA,UAED,cAAc,SAAU,GAAG,QAAQ;AAC/B,iBAAK,MAAM,aAAa,GAAG,MAAM;AACjC,iBAAK,MAAM,aAAa,GAAG,MAAM;AACjC,iBAAK,MAAM,aAAa,GAAG,MAAM;AAAA,UACpC;AAAA,UAED,cAAc,SAAU,GAAG,QAAQ;AAC/B,iBAAK,MAAM,aAAa,GAAG,MAAM;AACjC,iBAAK,MAAM,aAAa,GAAG,MAAM;AACjC,iBAAK,MAAM,aAAa,GAAG,MAAM;AAAA,UACpC;AAAA,UAED,SAAS,MAAI;AAAA,UAEb,QAAQ,KAAG;AAAA,UAEX,WAAW,KAAG;AAAA,QACvB,CAAM;AAUD,UAAE,YAAY,YAAY,cAAc,SAAS;AAAA,MACtD;AAGC,aAAOZ,UAAS;AAAA,IAEjB,CAAC;AAAA;;;;;;;;;;AC1wBA,KAAC,SAAU,MAAM,SAAS,OAAO;AACA;AAEhC,QAAAjtB,QAAiB,UAAU,QAAQlD,eAAmBC,oBAAyB8H,cAAkB6D,iBAAqBE,kBAAwB;AAAA,MAS9I;AAAA,IACF,GAAE3I,gBAAM,SAAUgtB,WAAU;AAE3B,OAAC,WAAY;AAET,YAAI,IAAIA;AACR,YAAI,QAAQ,EAAE;AACd,YAAI,eAAe,MAAM;AACzB,YAAI,SAAS,EAAE;AAKf,YAAI,MAAM,OAAO,MAAM,aAAa,OAAO;AAAA,UACvC,UAAU,WAAY;AAElB,gBAAIlkB,OAAM,KAAK;AACf,gBAAI,WAAWA,KAAI;AACnB,gBAAI,cAAcA,KAAI;AAGtB,gBAAIwH,KAAI,KAAK,KAAK;AAClB,qBAASrU,KAAI,GAAGA,KAAI,KAAKA,MAAK;AAC1B,cAAAqU,GAAErU,EAAC,IAAIA;AAAA,YACV;AAGD,qBAASA,KAAI,GAAG,IAAI,GAAGA,KAAI,KAAKA,MAAK;AACjC,kBAAI,eAAeA,KAAI;AACvB,kBAAI,UAAW,SAAS,iBAAiB,CAAC,MAAO,KAAM,eAAe,IAAK,IAAM;AAEjF,mBAAK,IAAIqU,GAAErU,EAAC,IAAI,WAAW;AAG3B,kBAAI,IAAIqU,GAAErU,EAAC;AACX,cAAAqU,GAAErU,EAAC,IAAIqU,GAAE,CAAC;AACV,cAAAA,GAAE,CAAC,IAAI;AAAA,YACV;AAGD,iBAAK,KAAK,KAAK,KAAK;AAAA,UACvB;AAAA,UAED,iBAAiB,SAAU,GAAG,QAAQ;AAClC,cAAE,MAAM,KAAK,sBAAsB,KAAK,IAAI;AAAA,UAC/C;AAAA,UAED,SAAS,MAAI;AAAA,UAEb,QAAQ;AAAA,QACjB,CAAM;AAED,iBAAS,wBAAwB;AAE7B,cAAIA,KAAI,KAAK;AACb,cAAIrU,KAAI,KAAK;AACb,cAAI,IAAI,KAAK;AAGb,cAAI,gBAAgB;AACpB,mBAASuB,KAAI,GAAGA,KAAI,GAAGA,MAAK;AACxB,YAAAvB,MAAKA,KAAI,KAAK;AACd,iBAAK,IAAIqU,GAAErU,EAAC,KAAK;AAGjB,gBAAI,IAAIqU,GAAErU,EAAC;AACX,YAAAqU,GAAErU,EAAC,IAAIqU,GAAE,CAAC;AACV,YAAAA,GAAE,CAAC,IAAI;AAEP,6BAAiBA,IAAGA,GAAErU,EAAC,IAAIqU,GAAE,CAAC,KAAK,GAAG,KAAM,KAAK9S,KAAI;AAAA,UACxD;AAGD,eAAK,KAAKvB;AACV,eAAK,KAAK;AAEV,iBAAO;AAAA,QACV;AAUD,UAAE,MAAM,aAAa,cAAc,GAAG;AAKtC,YAAI,UAAU,OAAO,UAAU,IAAI,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAMtC,KAAK,IAAI,IAAI,OAAO;AAAA,YAChB,MAAM;AAAA,UACnB,CAAU;AAAA,UAED,UAAU,WAAY;AAClB,gBAAI,SAAS,KAAK,IAAI;AAGtB,qBAASA,KAAI,KAAK,IAAI,MAAMA,KAAI,GAAGA,MAAK;AACpC,oCAAsB,KAAK,IAAI;AAAA,YAClC;AAAA,UACJ;AAAA,QACV,CAAM;AAUD,UAAE,UAAU,aAAa,cAAc,OAAO;AAAA,MACnD;AAGC,aAAO+wB,UAAS;AAAA,IAEjB,CAAC;AAAA;;;;;;;;;;AC1IA,KAAC,SAAU,MAAM,SAAS,OAAO;AACA;AAEhC,QAAAjtB,QAAiB,UAAU,QAAQlD,eAAmBC,oBAAyB8H,cAAkB6D,iBAAqBE,kBAAwB;AAAA,MAS9I;AAAA,IACF,GAAE3I,gBAAM,SAAUgtB,WAAU;AAE3B,OAAC,WAAY;AAET,YAAI,IAAIA;AACR,YAAI,QAAQ,EAAE;AACd,YAAI,eAAe,MAAM;AACzB,YAAI,SAAS,EAAE;AAGf,YAAI1c,KAAK;AACT,YAAI,KAAK;AACT,YAAI,IAAK;AAKT,YAAI,SAAS,OAAO,SAAS,aAAa,OAAO;AAAA,UAC7C,UAAU,WAAY;AAElB,gBAAI8c,KAAI,KAAK,KAAK;AAClB,gBAAI,KAAK,KAAK,IAAI;AAGlB,qBAASnxB,KAAI,GAAGA,KAAI,GAAGA,MAAK;AACxB,cAAAmxB,GAAEnxB,EAAC,KAAOmxB,GAAEnxB,EAAC,KAAK,IAAOmxB,GAAEnxB,EAAC,MAAM,MAAO,YAC/BmxB,GAAEnxB,EAAC,KAAK,KAAOmxB,GAAEnxB,EAAC,MAAM,KAAO;AAAA,YAC5C;AAGD,gBAAI,IAAI,KAAK,KAAK;AAAA,cACdmxB,GAAE,CAAC;AAAA,cAAIA,GAAE,CAAC,KAAK,KAAOA,GAAE,CAAC,MAAM;AAAA,cAC/BA,GAAE,CAAC;AAAA,cAAIA,GAAE,CAAC,KAAK,KAAOA,GAAE,CAAC,MAAM;AAAA,cAC/BA,GAAE,CAAC;AAAA,cAAIA,GAAE,CAAC,KAAK,KAAOA,GAAE,CAAC,MAAM;AAAA,cAC/BA,GAAE,CAAC;AAAA,cAAIA,GAAE,CAAC,KAAK,KAAOA,GAAE,CAAC,MAAM;AAAA,YAChD;AAGa,gBAAInC,KAAI,KAAK,KAAK;AAAA,cACbmC,GAAE,CAAC,KAAK,KAAOA,GAAE,CAAC,MAAM;AAAA,cAAMA,GAAE,CAAC,IAAI,aAAeA,GAAE,CAAC,IAAI;AAAA,cAC3DA,GAAE,CAAC,KAAK,KAAOA,GAAE,CAAC,MAAM;AAAA,cAAMA,GAAE,CAAC,IAAI,aAAeA,GAAE,CAAC,IAAI;AAAA,cAC3DA,GAAE,CAAC,KAAK,KAAOA,GAAE,CAAC,MAAM;AAAA,cAAMA,GAAE,CAAC,IAAI,aAAeA,GAAE,CAAC,IAAI;AAAA,cAC3DA,GAAE,CAAC,KAAK,KAAOA,GAAE,CAAC,MAAM;AAAA,cAAMA,GAAE,CAAC,IAAI,aAAeA,GAAE,CAAC,IAAI;AAAA,YAC7E;AAGa,iBAAK,KAAK;AAGV,qBAASnxB,KAAI,GAAGA,KAAI,GAAGA,MAAK;AACxB,wBAAU,KAAK,IAAI;AAAA,YACtB;AAGD,qBAASA,KAAI,GAAGA,KAAI,GAAGA,MAAK;AACxB,cAAAgvB,GAAEhvB,EAAC,KAAK,EAAGA,KAAI,IAAK,CAAC;AAAA,YACxB;AAGD,gBAAI,IAAI;AAEJ,kBAAI4xB,MAAK,GAAG;AACZ,kBAAI,OAAOA,IAAG,CAAC;AACf,kBAAI,OAAOA,IAAG,CAAC;AAGf,kBAAI,MAAQ,QAAQ,IAAM,SAAS,MAAO,YAAiB,QAAQ,KAAO,SAAS,KAAM;AACzF,kBAAIC,OAAQ,QAAQ,IAAM,SAAS,MAAO,YAAiB,QAAQ,KAAO,SAAS,KAAM;AACzF,kBAAI,KAAM,OAAO,KAAOA,MAAK;AAC7B,kBAAI,KAAMA,OAAM,KAAQ,KAAK;AAG7B,cAAA7C,GAAE,CAAC,KAAK;AACR,cAAAA,GAAE,CAAC,KAAK;AACR,cAAAA,GAAE,CAAC,KAAK6C;AACR,cAAA7C,GAAE,CAAC,KAAK;AACR,cAAAA,GAAE,CAAC,KAAK;AACR,cAAAA,GAAE,CAAC,KAAK;AACR,cAAAA,GAAE,CAAC,KAAK6C;AACR,cAAA7C,GAAE,CAAC,KAAK;AAGR,uBAAShvB,KAAI,GAAGA,KAAI,GAAGA,MAAK;AACxB,0BAAU,KAAK,IAAI;AAAA,cACtB;AAAA,YACJ;AAAA,UACJ;AAAA,UAED,iBAAiB,SAAU,GAAG,QAAQ;AAElC,gBAAI,IAAI,KAAK;AAGb,sBAAU,KAAK,IAAI;AAGnB,YAAAqU,GAAE,CAAC,IAAI,EAAE,CAAC,IAAK,EAAE,CAAC,MAAM,KAAO,EAAE,CAAC,KAAK;AACvC,YAAAA,GAAE,CAAC,IAAI,EAAE,CAAC,IAAK,EAAE,CAAC,MAAM,KAAO,EAAE,CAAC,KAAK;AACvC,YAAAA,GAAE,CAAC,IAAI,EAAE,CAAC,IAAK,EAAE,CAAC,MAAM,KAAO,EAAE,CAAC,KAAK;AACvC,YAAAA,GAAE,CAAC,IAAI,EAAE,CAAC,IAAK,EAAE,CAAC,MAAM,KAAO,EAAE,CAAC,KAAK;AAEvC,qBAASrU,KAAI,GAAGA,KAAI,GAAGA,MAAK;AAExB,cAAAqU,GAAErU,EAAC,KAAOqU,GAAErU,EAAC,KAAK,IAAOqU,GAAErU,EAAC,MAAM,MAAO,YAC/BqU,GAAErU,EAAC,KAAK,KAAOqU,GAAErU,EAAC,MAAM,KAAO;AAGzC,gBAAE,SAASA,EAAC,KAAKqU,GAAErU,EAAC;AAAA,YACvB;AAAA,UACJ;AAAA,UAED,WAAW,MAAI;AAAA,UAEf,QAAQ,KAAG;AAAA,QACpB,CAAM;AAED,iBAAS,YAAY;AAEjB,cAAI,IAAI,KAAK;AACb,cAAIgvB,KAAI,KAAK;AAGb,mBAAShvB,KAAI,GAAGA,KAAI,GAAGA,MAAK;AACxB,eAAGA,EAAC,IAAIgvB,GAAEhvB,EAAC;AAAA,UACd;AAGD,UAAAgvB,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,aAAa,KAAK,KAAM;AACvC,UAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,cAAeA,GAAE,CAAC,MAAM,IAAM,GAAG,CAAC,MAAM,IAAK,IAAI,KAAM;AACtE,UAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,aAAeA,GAAE,CAAC,MAAM,IAAM,GAAG,CAAC,MAAM,IAAK,IAAI,KAAM;AACtE,UAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,cAAeA,GAAE,CAAC,MAAM,IAAM,GAAG,CAAC,MAAM,IAAK,IAAI,KAAM;AACtE,UAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,cAAeA,GAAE,CAAC,MAAM,IAAM,GAAG,CAAC,MAAM,IAAK,IAAI,KAAM;AACtE,UAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,aAAeA,GAAE,CAAC,MAAM,IAAM,GAAG,CAAC,MAAM,IAAK,IAAI,KAAM;AACtE,UAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,cAAeA,GAAE,CAAC,MAAM,IAAM,GAAG,CAAC,MAAM,IAAK,IAAI,KAAM;AACtE,UAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,cAAeA,GAAE,CAAC,MAAM,IAAM,GAAG,CAAC,MAAM,IAAK,IAAI,KAAM;AACtE,eAAK,KAAMA,GAAE,CAAC,MAAM,IAAM,GAAG,CAAC,MAAM,IAAK,IAAI;AAG7C,mBAAShvB,KAAI,GAAGA,KAAI,GAAGA,MAAK;AACxB,gBAAI,KAAK,EAAEA,EAAC,IAAIgvB,GAAEhvB,EAAC;AAGnB,gBAAI,KAAK,KAAK;AACd,gBAAI,KAAK,OAAO;AAGhB,gBAAI,OAAS,KAAK,OAAQ,MAAM,KAAK,OAAQ,MAAM,KAAK;AACxD,gBAAI,OAAQ,KAAK,cAAc,KAAM,OAAQ,KAAK,SAAc,KAAM;AAGtE,cAAEA,EAAC,IAAI,KAAK;AAAA,UACf;AAGD,YAAE,CAAC,IAAK,EAAE,CAAC,KAAM,EAAE,CAAC,KAAK,KAAO,EAAE,CAAC,MAAM,OAAS,EAAE,CAAC,KAAK,KAAO,EAAE,CAAC,MAAM,MAAQ;AAClF,YAAE,CAAC,IAAK,EAAE,CAAC,KAAM,EAAE,CAAC,KAAK,IAAO,EAAE,CAAC,MAAM,MAAO,EAAE,CAAC,IAAK;AACxD,YAAE,CAAC,IAAK,EAAE,CAAC,KAAM,EAAE,CAAC,KAAK,KAAO,EAAE,CAAC,MAAM,OAAS,EAAE,CAAC,KAAK,KAAO,EAAE,CAAC,MAAM,MAAQ;AAClF,YAAE,CAAC,IAAK,EAAE,CAAC,KAAM,EAAE,CAAC,KAAK,IAAO,EAAE,CAAC,MAAM,MAAO,EAAE,CAAC,IAAK;AACxD,YAAE,CAAC,IAAK,EAAE,CAAC,KAAM,EAAE,CAAC,KAAK,KAAO,EAAE,CAAC,MAAM,OAAS,EAAE,CAAC,KAAK,KAAO,EAAE,CAAC,MAAM,MAAQ;AAClF,YAAE,CAAC,IAAK,EAAE,CAAC,KAAM,EAAE,CAAC,KAAK,IAAO,EAAE,CAAC,MAAM,MAAO,EAAE,CAAC,IAAK;AACxD,YAAE,CAAC,IAAK,EAAE,CAAC,KAAM,EAAE,CAAC,KAAK,KAAO,EAAE,CAAC,MAAM,OAAS,EAAE,CAAC,KAAK,KAAO,EAAE,CAAC,MAAM,MAAQ;AAClF,YAAE,CAAC,IAAK,EAAE,CAAC,KAAM,EAAE,CAAC,KAAK,IAAO,EAAE,CAAC,MAAM,MAAO,EAAE,CAAC,IAAK;AAAA,QAC3D;AAUD,UAAE,SAAS,aAAa,cAAc,MAAM;AAAA,MACjD;AAGC,aAAO+wB,UAAS;AAAA,IAEjB,CAAC;AAAA;;;;;;;;;;AC/LA,KAAC,SAAU,MAAM,SAAS,OAAO;AACA;AAEhC,QAAAjtB,QAAiB,UAAU,QAAQlD,eAAmBC,oBAAyB8H,cAAkB6D,iBAAqBE,kBAAwB;AAAA,MAS9I;AAAA,IACF,GAAE3I,gBAAM,SAAUgtB,WAAU;AAE3B,OAAC,WAAY;AAET,YAAI,IAAIA;AACR,YAAI,QAAQ,EAAE;AACd,YAAI,eAAe,MAAM;AACzB,YAAI,SAAS,EAAE;AAGf,YAAI1c,KAAK;AACT,YAAI,KAAK;AACT,YAAI,IAAK;AAST,YAAI,eAAe,OAAO,eAAe,aAAa,OAAO;AAAA,UACzD,UAAU,WAAY;AAElB,gBAAI8c,KAAI,KAAK,KAAK;AAClB,gBAAI,KAAK,KAAK,IAAI;AAGlB,gBAAI,IAAI,KAAK,KAAK;AAAA,cACdA,GAAE,CAAC;AAAA,cAAIA,GAAE,CAAC,KAAK,KAAOA,GAAE,CAAC,MAAM;AAAA,cAC/BA,GAAE,CAAC;AAAA,cAAIA,GAAE,CAAC,KAAK,KAAOA,GAAE,CAAC,MAAM;AAAA,cAC/BA,GAAE,CAAC;AAAA,cAAIA,GAAE,CAAC,KAAK,KAAOA,GAAE,CAAC,MAAM;AAAA,cAC/BA,GAAE,CAAC;AAAA,cAAIA,GAAE,CAAC,KAAK,KAAOA,GAAE,CAAC,MAAM;AAAA,YAChD;AAGa,gBAAInC,KAAI,KAAK,KAAK;AAAA,cACbmC,GAAE,CAAC,KAAK,KAAOA,GAAE,CAAC,MAAM;AAAA,cAAMA,GAAE,CAAC,IAAI,aAAeA,GAAE,CAAC,IAAI;AAAA,cAC3DA,GAAE,CAAC,KAAK,KAAOA,GAAE,CAAC,MAAM;AAAA,cAAMA,GAAE,CAAC,IAAI,aAAeA,GAAE,CAAC,IAAI;AAAA,cAC3DA,GAAE,CAAC,KAAK,KAAOA,GAAE,CAAC,MAAM;AAAA,cAAMA,GAAE,CAAC,IAAI,aAAeA,GAAE,CAAC,IAAI;AAAA,cAC3DA,GAAE,CAAC,KAAK,KAAOA,GAAE,CAAC,MAAM;AAAA,cAAMA,GAAE,CAAC,IAAI,aAAeA,GAAE,CAAC,IAAI;AAAA,YAC7E;AAGa,iBAAK,KAAK;AAGV,qBAASnxB,KAAI,GAAGA,KAAI,GAAGA,MAAK;AACxB,wBAAU,KAAK,IAAI;AAAA,YACtB;AAGD,qBAASA,KAAI,GAAGA,KAAI,GAAGA,MAAK;AACxB,cAAAgvB,GAAEhvB,EAAC,KAAK,EAAGA,KAAI,IAAK,CAAC;AAAA,YACxB;AAGD,gBAAI,IAAI;AAEJ,kBAAI4xB,MAAK,GAAG;AACZ,kBAAI,OAAOA,IAAG,CAAC;AACf,kBAAI,OAAOA,IAAG,CAAC;AAGf,kBAAI,MAAQ,QAAQ,IAAM,SAAS,MAAO,YAAiB,QAAQ,KAAO,SAAS,KAAM;AACzF,kBAAIC,OAAQ,QAAQ,IAAM,SAAS,MAAO,YAAiB,QAAQ,KAAO,SAAS,KAAM;AACzF,kBAAI,KAAM,OAAO,KAAOA,MAAK;AAC7B,kBAAI,KAAMA,OAAM,KAAQ,KAAK;AAG7B,cAAA7C,GAAE,CAAC,KAAK;AACR,cAAAA,GAAE,CAAC,KAAK;AACR,cAAAA,GAAE,CAAC,KAAK6C;AACR,cAAA7C,GAAE,CAAC,KAAK;AACR,cAAAA,GAAE,CAAC,KAAK;AACR,cAAAA,GAAE,CAAC,KAAK;AACR,cAAAA,GAAE,CAAC,KAAK6C;AACR,cAAA7C,GAAE,CAAC,KAAK;AAGR,uBAAShvB,KAAI,GAAGA,KAAI,GAAGA,MAAK;AACxB,0BAAU,KAAK,IAAI;AAAA,cACtB;AAAA,YACJ;AAAA,UACJ;AAAA,UAED,iBAAiB,SAAU,GAAG,QAAQ;AAElC,gBAAI,IAAI,KAAK;AAGb,sBAAU,KAAK,IAAI;AAGnB,YAAAqU,GAAE,CAAC,IAAI,EAAE,CAAC,IAAK,EAAE,CAAC,MAAM,KAAO,EAAE,CAAC,KAAK;AACvC,YAAAA,GAAE,CAAC,IAAI,EAAE,CAAC,IAAK,EAAE,CAAC,MAAM,KAAO,EAAE,CAAC,KAAK;AACvC,YAAAA,GAAE,CAAC,IAAI,EAAE,CAAC,IAAK,EAAE,CAAC,MAAM,KAAO,EAAE,CAAC,KAAK;AACvC,YAAAA,GAAE,CAAC,IAAI,EAAE,CAAC,IAAK,EAAE,CAAC,MAAM,KAAO,EAAE,CAAC,KAAK;AAEvC,qBAASrU,KAAI,GAAGA,KAAI,GAAGA,MAAK;AAExB,cAAAqU,GAAErU,EAAC,KAAOqU,GAAErU,EAAC,KAAK,IAAOqU,GAAErU,EAAC,MAAM,MAAO,YAC/BqU,GAAErU,EAAC,KAAK,KAAOqU,GAAErU,EAAC,MAAM,KAAO;AAGzC,gBAAE,SAASA,EAAC,KAAKqU,GAAErU,EAAC;AAAA,YACvB;AAAA,UACJ;AAAA,UAED,WAAW,MAAI;AAAA,UAEf,QAAQ,KAAG;AAAA,QACpB,CAAM;AAED,iBAAS,YAAY;AAEjB,cAAI,IAAI,KAAK;AACb,cAAIgvB,KAAI,KAAK;AAGb,mBAAShvB,KAAI,GAAGA,KAAI,GAAGA,MAAK;AACxB,eAAGA,EAAC,IAAIgvB,GAAEhvB,EAAC;AAAA,UACd;AAGD,UAAAgvB,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,aAAa,KAAK,KAAM;AACvC,UAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,cAAeA,GAAE,CAAC,MAAM,IAAM,GAAG,CAAC,MAAM,IAAK,IAAI,KAAM;AACtE,UAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,aAAeA,GAAE,CAAC,MAAM,IAAM,GAAG,CAAC,MAAM,IAAK,IAAI,KAAM;AACtE,UAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,cAAeA,GAAE,CAAC,MAAM,IAAM,GAAG,CAAC,MAAM,IAAK,IAAI,KAAM;AACtE,UAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,cAAeA,GAAE,CAAC,MAAM,IAAM,GAAG,CAAC,MAAM,IAAK,IAAI,KAAM;AACtE,UAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,aAAeA,GAAE,CAAC,MAAM,IAAM,GAAG,CAAC,MAAM,IAAK,IAAI,KAAM;AACtE,UAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,cAAeA,GAAE,CAAC,MAAM,IAAM,GAAG,CAAC,MAAM,IAAK,IAAI,KAAM;AACtE,UAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,cAAeA,GAAE,CAAC,MAAM,IAAM,GAAG,CAAC,MAAM,IAAK,IAAI,KAAM;AACtE,eAAK,KAAMA,GAAE,CAAC,MAAM,IAAM,GAAG,CAAC,MAAM,IAAK,IAAI;AAG7C,mBAAShvB,KAAI,GAAGA,KAAI,GAAGA,MAAK;AACxB,gBAAI,KAAK,EAAEA,EAAC,IAAIgvB,GAAEhvB,EAAC;AAGnB,gBAAI,KAAK,KAAK;AACd,gBAAI,KAAK,OAAO;AAGhB,gBAAI,OAAS,KAAK,OAAQ,MAAM,KAAK,OAAQ,MAAM,KAAK;AACxD,gBAAI,OAAQ,KAAK,cAAc,KAAM,OAAQ,KAAK,SAAc,KAAM;AAGtE,cAAEA,EAAC,IAAI,KAAK;AAAA,UACf;AAGD,YAAE,CAAC,IAAK,EAAE,CAAC,KAAM,EAAE,CAAC,KAAK,KAAO,EAAE,CAAC,MAAM,OAAS,EAAE,CAAC,KAAK,KAAO,EAAE,CAAC,MAAM,MAAQ;AAClF,YAAE,CAAC,IAAK,EAAE,CAAC,KAAM,EAAE,CAAC,KAAK,IAAO,EAAE,CAAC,MAAM,MAAO,EAAE,CAAC,IAAK;AACxD,YAAE,CAAC,IAAK,EAAE,CAAC,KAAM,EAAE,CAAC,KAAK,KAAO,EAAE,CAAC,MAAM,OAAS,EAAE,CAAC,KAAK,KAAO,EAAE,CAAC,MAAM,MAAQ;AAClF,YAAE,CAAC,IAAK,EAAE,CAAC,KAAM,EAAE,CAAC,KAAK,IAAO,EAAE,CAAC,MAAM,MAAO,EAAE,CAAC,IAAK;AACxD,YAAE,CAAC,IAAK,EAAE,CAAC,KAAM,EAAE,CAAC,KAAK,KAAO,EAAE,CAAC,MAAM,OAAS,EAAE,CAAC,KAAK,KAAO,EAAE,CAAC,MAAM,MAAQ;AAClF,YAAE,CAAC,IAAK,EAAE,CAAC,KAAM,EAAE,CAAC,KAAK,IAAO,EAAE,CAAC,MAAM,MAAO,EAAE,CAAC,IAAK;AACxD,YAAE,CAAC,IAAK,EAAE,CAAC,KAAM,EAAE,CAAC,KAAK,KAAO,EAAE,CAAC,MAAM,OAAS,EAAE,CAAC,KAAK,KAAO,EAAE,CAAC,MAAM,MAAQ;AAClF,YAAE,CAAC,IAAK,EAAE,CAAC,KAAM,EAAE,CAAC,KAAK,IAAO,EAAE,CAAC,MAAM,MAAO,EAAE,CAAC,IAAK;AAAA,QAC3D;AAUD,UAAE,eAAe,aAAa,cAAc,YAAY;AAAA,MAC7D;AAGC,aAAO+wB,UAAS;AAAA,IAEjB,CAAC;AAAA;;;;;;;;;;AC7LA,KAAC,SAAU,MAAM,SAAS,OAAO;AACA;AAEhC,QAAAjtB,QAAiB,UAAU,QAAQlD,eAAmBC,oBAAyB8H,cAAkB6D,iBAAqBE,kBAAwB;AAAA,MAS9I;AAAA,IACF,GAAE3I,gBAAM,SAAUgtB,WAAU;AAE3B,OAAC,WAAY;AAET,YAAI,IAAIA;AACR,YAAI,QAAQ,EAAE;AACd,YAAI,cAAc,MAAM;AACxB,YAAI,SAAS,EAAE;AAEf,cAAM,IAAI;AAGV,cAAM,SAAS;AAAA,UACX;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,QACrB;AAEK,cAAM,SAAS;AAAA,UACX;AAAA,YAAI;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,UAAc;AAAA,UACtD;AAAA,YAAI;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,UAAc;AAAA,UACtD;AAAA,YAAI;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,UAAa;AAAA,UACrD;AAAA,YAAI;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YA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","names":["byteLength","lookup","len","i","output","parts","len2","ieee754","buffer","isLE","m","s","value","c","base64","require$$0","require$$1","exports","Buffer","from","string","array","compare","isEncoding","concat","utf8ToBytes","n","toString","inspect","max","toJSON","bytes","slice","readUIntLE","mul","validateNumber","readIntLE","min","writeUIntLE","writeIntLE","code","errors","E","getMessage","Base","name","range","addNumericalSeparator","type","src","alphabet","i16","process","browserModule","e","timeout","f","jsxRuntimeModule","d","b","p","CustomError","message","serializeError","index","module","this","noop","Logger","self","location","logger","loglevel","loglevel$1","isBytes","abytes","aexists","aoutput","crypto","createView","rotr","toBytes","Hash","wrapConstructor","randomBytes","setBigUint64","_32n","l","Chi","Maj","HashMD","take","state","finished","SHA256_K","SHA256_IV","SHA256_W","SHA256","SHA224","sha256","sha224","byteSwap32","bytesToHex","hexToBytes","asyncLoop","concatBytes","checkOpts","_assert_js_1","u8","u32","byteSwap","hexes","asciis","asciiToBase16","nextTick","pad","utils_js_1","fromBig","split","add","U32_MASK64","toBig","shrSH","shrSL","rotrSH","rotrSL","rotrBH","rotrBL","rotr32H","rotr32L","rotlSH","rotlSL","rotlBH","rotlBL","add3L","add3H","add4L","add4H","add5L","add5H","u64","sha512","require$$2","SHA512","SHA384","assert","inherits","BN","number","base","init","r","mod","pow","clone","padding","toNumber","toBuffer","toArray","allocate","toTwos","fromTwos","neg","k","comb10MulTo","q","mask","abs","isOdd","eq","prime","mont","inherits_browserModule","utils","toHex","rotr32","rotl32","sum32","sum32_3","sum32_4","sum32_5","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","BlockHash","common","ft_1","ch32","maj32","s0_256","s1_256","g0_256","g1_256","shaCommon","digest","require$$3","_update","require$$4","update","hash","key","hmac","hasSymbols","ref","floor","round","isNaN","sign","gOPD","$gOPD","gopd","$defineProperty","$Object","toStr","concatty","slicy","implementation","bind","Empty","$apply","$call","actualApply","$TypeError","callBindBasic","callBind","get","getProto","undefined","$SyntaxError","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21","require$$22","doEval","gen","require$$23","require$$24","stringToPath","getBaseIntrinsic","GetIntrinsic","$indexOf","callBound","defineDataProperty","hasPropertyDescriptors","setFunctionLength","applyBind","isArguments","isArgs","keysShim","keys","isObject","isString","objectKeys","transform","re","zero2","encode","getNAF","getJSF","cachedProperty","parseBytes","brorandModule","rand","_rand","curve","validate","dbl","k2","point","Point","_getBeta","obj","dblp","isInfinity","decodePoint","pointFromJSON","precompute","_encode","fromJSON","mulAdd","getX","jpoint","pointFromX","jmulAdd","normalize","getY","eqXToP","secp256k1","curves","HmacDRBG","generate","KeyPair","ec","pub","priv","getPublic","derive","signature","Signature","verify","s2","eddsa","fromPublic","secret","R","Rencoded","S","keyFromPublic","elliptic","log","isMergeableObject","logLevel","levels","url","_objectSpread","merge","ec$1","browserCrypto","subtle","EC_GROUP_ORDER","ZERO32","isScalar","isValidPrivateKey","equalConstTime","result","getAes","aesCbcEncrypt","aesCbcDecrypt","hmacSha256Sign","hmacSha256Verify","deriveUnpadded","derivePadded","encrypt","decrypt","error","parse","stringify","bool","exists","SHA3_PI","SHA3_ROTL","_SHA3_IOTA","_0n","_1n","_2n","_7n","_256n","_0x71n","SHA3_IOTA_H","SHA3_IOTA_L","rotlH","rotlL","keccakP","Keccak","keccak_256","keccak256","keccak256$1","keyPair","withNativeBlob","withNativeArrayBuffer","isView","decode","isBinary","protocol","on","globalThis","description","uri","_a","isReactNative","stream","Socket","DEFAULT_TRANSPORTS","RESERVED_EVENTS","PacketType","Encoder","Decoder","_b","id","listeners","parser","Engine","socket","log$1","io","ReflectApply","ReflectOwnKeys","warning","NumberIsNaN","EventEmitter","eventsModule","once","events","arrayClone","prependListener","unwrap","version","browser","browserParsersList","padString_1","stringLength","base64url_1","base64url","storageAvailable","bowser","loginUrl","AggregateError","format","codes","hideStackFrames","aggregateTwoErrors","AbortError","AbortController","ERR_INVALID_ARG_TYPE","kResistStopPropagation","SymbolDispose","Blob","isBlob","validateAbortSignal","validateFunction","addAbortListener","removeEventListener","signals","ArrayIsArray","NumberIsInteger","String","ERR_INVALID_ARG_VALUE","ERR_OUT_OF_RANGE","normalizeEncoding","validateInteger","validateBoolean","validateObject","SymbolAsyncIterator","SymbolIterator","kIsDestroyed","kIsClosedPromise","isReadableNodeStream","isWritableNodeStream","isNodeStream","isReadableStream","isWritableStream","isTransformStream","isWebStream","isIterable","isDestroyed","isWritableFinished","isReadableFinished","isReadable","isWritable","isFinished","isWritableErrored","isReadableErrored","isClosed","isServerRequest","ERR_STREAM_PREMATURE_CLOSE","Promise","PromisePrototypeThen","isRequest","eos","readable","writable","willEmitClose","endOfStreamModule","Symbol","err","destroyer","ObjectSetPrototypeOf","kControllerErrorFunction","addAbortSignal","Uint8Array","MathFloor","getHighWaterMark","Readable","NumberParseInt","EE","Stream","BufferList","destroyImpl","getDefaultHighWaterMark","ERR_METHOD_NOT_IMPLEMENTED","StringDecoder","nop","errorOrDestroy","decoder","Error","ERR_MULTIPLE_CALLBACK","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","prefinish","destroy","isDuplexNodeStream","ERR_INVALID_RETURN_VALUE","Duplex","duplexify","final","then","duplex","Transform","PassThrough","ERR_MISSING_ARGS","pipeline","compose","Boolean","Number","map","queue","asIndexedPairs","options","reducer","flatMap","drop","setDefaultHighWaterMark","promises","streamModule","HMAC","assertHash","assertExists","assertBytes","numberToHexUnpadded","hexToNumber","bytesToNumberBE","bytesToNumberLE","numberToBytesBE","numberToBytesLE","numberToVarBytesBE","ensureBytes","equalBytes","bitLen","bitGet","bitSet","bitMask","u8n","u8fr","createHmacDrbg","reset","reseed","validatorFns","validators","_3n","_4n","_5n","_8n","pow2","invert","tonelliShanks","Fp","FpSqrt","n2","FIELD_FIELDS","validateField","FpPow","FpInvertBatch","nLength","Field","getFieldBytesLength","getMinHashLength","mapHashToField","wNAF","constTimeNegate","window","validateBasic","validatePointOpts","ut.validateObject","b2n","h2b","ut","DER","ut.abytes","weierstrassPoints","ut.concatBytes","ut.isBytes","ut.bytesToHex","ut.bytesToNumberBE","mod.mod","pointPrecomputes","a","validateOpts","weierstrass","mod.invert","ut.numberToBytesBE","HALF","prefix","ut.hexToBytes","mod.getMinHashLength","mod.mapHashToField","ut.bitMask","ut.createHmacDrbg","getHash","createCurve","secp256k1P","secp256k1N","divNearest","sqrtMod","isHexString","_v","KeyEncoding","ValueEncoding","TypeOutput","CLRequestType","VerkleLeafType","eventNames","BigNumber","chainConfig","deepmerge","createChainIdMiddleware","createProviderConfigMiddleware","createJsonRpcClient","BN_0","BN_1","c2","u8a","DERErr","v","_r","chars","_types","encoder","child","set","EC","createContext","useState","useEffect","privateKey","publicKey","userInfo","jsx","useContext","isValidKey","request","DEFAULT_ENTRY_NAME","LogLevel","target","version$1","name$1","app","SDK_VERSION","sha1","hashString","transports","put","base12","root","inRange","OperationType","newWriteTree","filter","newViewCache","cache","queryKey","query","serverCache","view","errorPrefix","raw","addEventListener","ReplicaRejectCode","jsSha224","Principal","sha","uint8ToBuf","bufFromBufLike","pipe","Pipe","_components","PrincipalId","funcType","Text","Bignumber","constants","SHIFT32","MT","SYMS","Simple","Tagged","tagged","defaultBase","URL","URLWithLegacySupport","relative","URLSearchParams","u16","i8","i32","i64","serializer","__importStar","cbor.value","SelfDescribeCborSerializer","CborTag","SubmitRequestType","rand2","raw_value","ingress_as_seconds","wbits","mod.Field","ut.inRange","ut.aInRange","tv5","c1","mod.validateField","Fr","Fp2","Fp6","Fp12","msg","G2psi","G2psi2","FpLegendre","mod.FpLegendre","mod.FpPow","mod.FpInvertBatch","Fp4Square","concatB","x","NodeType","cbor.decode","blsVerify","bls.blsVerify","FIVE_MINUTES_IN_MSEC","LookupStatus","LabelLookupStatus","cert","path","data","Cbor.decode","buf","uvRatio","adjustScalarBytes","G","A","B","F","C","D","H","X3","Y3","T3","Z3","cofactor","ut.bytesToNumberLE","ut.numberToBytesLE","__classPrivateFieldSet","__classPrivateFieldGet","RequestStatusResponseStatus","host","cbor.encode","backoff","subnetStatus","r2","_HttpAgent_requestAndRetryQuery","_HttpAgent_requestAndRetry","ProxyMessageKind","IDL","settings","IDL.decode","strategy.defaultStrategy","IDL.encode","response","Result","jsxs","Content","Title","CryptoJS","Math","require","SHA1","K","RIPEMD160","CBC","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","SBOX","key2","IV","i2","require$$25","require$$26","require$$27","require$$28","require$$29","require$$30","require$$31","require$$32","require$$33","require$$34","Search","AntInput","initActor","eccrypto.encrypt","__unused_webpack_module","isArrayBuffer","warn","PasswordResponses","BaseException","worker","_listeners","font","__w_pdfjs_require__","_util","_display_utils","y","_id","offsetX","offsetY","isEmpty","elem","convertImgDataToPng","editor","_annotation_storage","rotation","AnnotationLayer","_xfa_text","x1","y1","x2","y2","control1","control2","_canvas","_worker_options","pdfjsModule['default']","ReactPropTypesSecret","propTypesModule","eventProps","useReducer","PDFDataRangeTransport","pdfjs","isPageIndex","pdf","isPageNumber","__rest","forwardRef","Document","useRef","useImperativeHandle","useCallback","makeCancellable","useMemo","isFunctionOrNode","width","height","TextLayer","useLayoutEffect","Page","files","prev","numPages","t","o","h","u","eccrypto.decrypt","Fragment","totalLength","relatedRecords","App","ReactDOM"],"sources":["../../../../node_modules/base64-js/index.js","../../../../node_modules/ieee754/index.js","../../../../node_modules/buffer/index.js","../../../../node_modules/process/browser.js","../../index.html?html-proxy&index=0.js","../../../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../../node_modules/react/jsx-runtime.js","../../../../node_modules/react-dom/client.js","../../src/constants/menuItems.ts","../../../../node_modules/ts-custom-error/dist/custom-error.mjs","../../../../node_modules/@web3auth/base/dist/lib.esm/errors/index.js","../../../../node_modules/@web3auth/base/dist/lib.esm/chain/IChainInterface.js","../../../../node_modules/@web3auth/base/dist/lib.esm/chain/config.js","../../../../node_modules/loglevel/lib/loglevel.js","../../../../node_modules/@web3auth/base/dist/lib.esm/loglevel.js","../../../../node_modules/@noble/hashes/esm/_assert.js","../../../../node_modules/@noble/hashes/esm/crypto.js","../../../../node_modules/@noble/hashes/esm/utils.js","../../../../node_modules/@noble/hashes/esm/_md.js","../../../../node_modules/@noble/hashes/esm/sha256.js","../../../../node_modules/@noble/hashes/_assert.js","../../../../node_modules/@noble/hashes/utils.js","../../../../node_modules/@noble/hashes/_md.js","../../../../node_modules/@noble/hashes/_u64.js","../../../../node_modules/@noble/hashes/sha512.js","../../__vite-browser-external","../../../../node_modules/bn.js/lib/bn.js","../../../../node_modules/minimalistic-assert/index.js","../../../../node_modules/inherits/inherits_browser.js","../../../../node_modules/hash.js/lib/hash/utils.js","../../../../node_modules/hash.js/lib/hash/common.js","../../../../node_modules/hash.js/lib/hash/sha/common.js","../../../../node_modules/hash.js/lib/hash/sha/1.js","../../../../node_modules/hash.js/lib/hash/sha/256.js","../../../../node_modules/hash.js/lib/hash/sha/224.js","../../../../node_modules/hash.js/lib/hash/sha/512.js","../../../../node_modules/hash.js/lib/hash/sha/384.js","../../../../node_modules/hash.js/lib/hash/sha.js","../../../../node_modules/hash.js/lib/hash/ripemd.js","../../../../node_modules/hash.js/lib/hash/hmac.js","../../../../node_modules/hash.js/lib/hash.js","../../../../node_modules/has-symbols/shams.js","../../../../node_modules/es-object-atoms/index.js","../../../../node_modules/es-errors/index.js","../../../../node_modules/es-errors/eval.js","../../../../node_modules/es-errors/range.js","../../../../node_modules/es-errors/ref.js","../../../../node_modules/es-errors/syntax.js","../../../../node_modules/es-errors/type.js","../../../../node_modules/es-errors/uri.js","../../../../node_modules/math-intrinsics/abs.js","../../../../node_modules/math-intrinsics/floor.js","../../../../node_modules/math-intrinsics/max.js","../../../../node_modules/math-intrinsics/min.js","../../../../node_modules/math-intrinsics/pow.js","../../../../node_modules/math-intrinsics/round.js","../../../../node_modules/math-intrinsics/isNaN.js","../../../../node_modules/math-intrinsics/sign.js","../../../../node_modules/gopd/gOPD.js","../../../../node_modules/gopd/index.js","../../../../node_modules/es-define-property/index.js","../../../../node_modules/has-symbols/index.js","../../../../node_modules/get-proto/Reflect.getPrototypeOf.js","../../../../node_modules/get-proto/Object.getPrototypeOf.js","../../../../node_modules/function-bind/implementation.js","../../../../node_modules/function-bind/index.js","../../../../node_modules/call-bind-apply-helpers/functionCall.js","../../../../node_modules/call-bind-apply-helpers/functionApply.js","../../../../node_modules/call-bind-apply-helpers/reflectApply.js","../../../../node_modules/call-bind-apply-helpers/actualApply.js","../../../../node_modules/call-bind-apply-helpers/index.js","../../../../node_modules/dunder-proto/get.js","../../../../node_modules/get-proto/index.js","../../../../node_modules/hasown/index.js","../../../../node_modules/get-intrinsic/index.js","../../../../node_modules/call-bound/index.js","../../../../node_modules/define-data-property/index.js","../../../../node_modules/has-property-descriptors/index.js","../../../../node_modules/set-function-length/index.js","../../../../node_modules/call-bind-apply-helpers/applyBind.js","../../../../node_modules/call-bind/index.js","../../../../node_modules/object-keys/isArguments.js","../../../../node_modules/object-keys/implementation.js","../../../../node_modules/object-keys/index.js","../../../../node_modules/elliptic/node_modules/bn.js/lib/bn.js","../../../../node_modules/minimalistic-crypto-utils/lib/utils.js","../../../../node_modules/elliptic/lib/elliptic/utils.js","../../../../node_modules/brorand/index.js","../../../../node_modules/elliptic/lib/elliptic/curve/base.js","../../../../node_modules/elliptic/lib/elliptic/curve/short.js","../../../../node_modules/elliptic/lib/elliptic/curve/mont.js","../../../../node_modules/elliptic/lib/elliptic/curve/edwards.js","../../../../node_modules/elliptic/lib/elliptic/curve/index.js","../../../../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","../../../../node_modules/elliptic/lib/elliptic/curves.js","../../../../node_modules/hmac-drbg/lib/hmac-drbg.js","../../../../node_modules/elliptic/lib/elliptic/ec/key.js","../../../../node_modules/elliptic/lib/elliptic/ec/signature.js","../../../../node_modules/elliptic/lib/elliptic/ec/index.js","../../../../node_modules/elliptic/lib/elliptic/eddsa/key.js","../../../../node_modules/elliptic/lib/elliptic/eddsa/signature.js","../../../../node_modules/elliptic/lib/elliptic/eddsa/index.js","../../../../node_modules/elliptic/lib/elliptic.js","../../../../node_modules/@web3auth/auth/dist/lib.esm/utils/logger.js","../../../../node_modules/@toruslabs/constants/dist/lib.esm/constants.js","../../../../node_modules/deepmerge/dist/cjs.js","../../../../node_modules/@toruslabs/http-helpers/dist/lib.esm/index.js","../../../../node_modules/@toruslabs/session-manager/dist/lib.esm/util.js","../../../../node_modules/@toruslabs/session-manager/dist/lib.esm/base.js","../../../../node_modules/@toruslabs/eccrypto/dist/lib.esm/index.js","../../../../node_modules/jsonify/lib/parse.js","../../../../node_modules/jsonify/lib/stringify.js","../../../../node_modules/jsonify/index.js","../../../../node_modules/isarray/index.js","../../../../node_modules/json-stable-stringify/index.js","../../../../node_modules/ethereum-cryptography/node_modules/@noble/hashes/esm/_assert.js","../../../../node_modules/ethereum-cryptography/node_modules/@noble/hashes/esm/_u64.js","../../../../node_modules/ethereum-cryptography/node_modules/@noble/hashes/esm/crypto.js","../../../../node_modules/ethereum-cryptography/node_modules/@noble/hashes/esm/utils.js","../../../../node_modules/ethereum-cryptography/node_modules/@noble/hashes/esm/sha3.js","../../../../node_modules/ethereum-cryptography/esm/utils.js","../../../../node_modules/ethereum-cryptography/esm/keccak.js","../../../../node_modules/@toruslabs/metadata-helpers/dist/lib.esm/utils.js","../../../../node_modules/@toruslabs/metadata-helpers/dist/lib.esm/webAuthnShareResolver.js","../../../../node_modules/@toruslabs/session-manager/dist/lib.esm/sessionManager.js","../../../../node_modules/@web3auth/auth/dist/lib.esm/core/errors.js","../../../../node_modules/engine.io-parser/build/esm/commons.js","../../../../node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../../../../node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js","../../../../node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../../../../node_modules/engine.io-parser/build/esm/index.js","../../../../node_modules/@socket.io/component-emitter/lib/esm/index.js","../../../../node_modules/engine.io-client/build/esm/globals.js","../../../../node_modules/engine.io-client/build/esm/util.js","../../../../node_modules/engine.io-client/build/esm/contrib/parseqs.js","../../../../node_modules/engine.io-client/build/esm/transport.js","../../../../node_modules/engine.io-client/build/esm/transports/polling.js","../../../../node_modules/engine.io-client/build/esm/contrib/has-cors.js","../../../../node_modules/engine.io-client/build/esm/transports/polling-xhr.js","../../../../node_modules/engine.io-client/build/esm/transports/websocket.js","../../../../node_modules/engine.io-client/build/esm/transports/webtransport.js","../../../../node_modules/engine.io-client/build/esm/transports/index.js","../../../../node_modules/engine.io-client/build/esm/contrib/parseuri.js","../../../../node_modules/engine.io-client/build/esm/socket.js","../../../../node_modules/socket.io-client/build/esm/url.js","../../../../node_modules/socket.io-parser/build/esm/is-binary.js","../../../../node_modules/socket.io-parser/build/esm/binary.js","../../../../node_modules/socket.io-parser/build/esm/index.js","../../../../node_modules/socket.io-client/build/esm/on.js","../../../../node_modules/socket.io-client/build/esm/socket.js","../../../../node_modules/socket.io-client/build/esm/contrib/backo2.js","../../../../node_modules/socket.io-client/build/esm/manager.js","../../../../node_modules/socket.io-client/build/esm/index.js","../../../../node_modules/@toruslabs/secure-pub-sub/dist/lib.esm/log.js","../../../../node_modules/@toruslabs/secure-pub-sub/dist/lib.esm/SecurePubSub.js","../../../../node_modules/events/events.js","../../../../node_modules/bowser/src/constants.js","../../../../node_modules/bowser/src/utils.js","../../../../node_modules/bowser/src/parser-browsers.js","../../../../node_modules/bowser/src/parser-os.js","../../../../node_modules/bowser/src/parser-platforms.js","../../../../node_modules/bowser/src/parser-engines.js","../../../../node_modules/bowser/src/parser.js","../../../../node_modules/bowser/src/bowser.js","../../../../node_modules/base64url/dist/pad-string.js","../../../../node_modules/base64url/dist/base64url.js","../../../../node_modules/base64url/index.js","../../../../node_modules/@web3auth/auth/dist/lib.esm/utils/utils.js","../../../../node_modules/@web3auth/auth/dist/lib.esm/utils/constants.js","../../../../node_modules/@web3auth/auth/dist/lib.esm/core/utils.js","../../../../node_modules/@web3auth/auth/dist/lib.esm/core/PopupHandler.js","../../../../node_modules/@web3auth/auth/dist/lib.esm/utils/browserStorage.js","../../../../node_modules/@web3auth/auth/dist/lib.esm/core/auth.js","../../../../node_modules/@web3auth/auth/node_modules/readable-stream/lib/ours/primordials.js","../../../../node_modules/@web3auth/auth/node_modules/readable-stream/lib/ours/util/inspect.js","../../../../node_modules/@web3auth/auth/node_modules/readable-stream/lib/ours/errors.js","../../../../node_modules/abort-controller/browser.js","../../../../node_modules/@web3auth/auth/node_modules/readable-stream/lib/ours/util.js","../../../../node_modules/@web3auth/auth/node_modules/readable-stream/lib/internal/validators.js","../../../../node_modules/@web3auth/auth/node_modules/readable-stream/lib/internal/streams/utils.js","../../../../node_modules/@web3auth/auth/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../../../../node_modules/@web3auth/auth/node_modules/readable-stream/lib/internal/streams/destroy.js","../../../../node_modules/@web3auth/auth/node_modules/readable-stream/lib/internal/streams/legacy.js","../../../../node_modules/@web3auth/auth/node_modules/readable-stream/lib/internal/streams/add-abort-signal.js","../../../../node_modules/@web3auth/auth/node_modules/readable-stream/lib/internal/streams/buffer_list.js","../../../../node_modules/@web3auth/auth/node_modules/readable-stream/lib/internal/streams/state.js","../../../../node_modules/safe-buffer/index.js","../../../../node_modules/string_decoder/lib/string_decoder.js","../../../../node_modules/@web3auth/auth/node_modules/readable-stream/lib/internal/streams/from.js","../../../../node_modules/@web3auth/auth/node_modules/readable-stream/lib/internal/streams/readable.js","../../../../node_modules/@web3auth/auth/node_modules/readable-stream/lib/internal/streams/writable.js","../../../../node_modules/@web3auth/auth/node_modules/readable-stream/lib/internal/streams/duplexify.js","../../../../node_modules/@web3auth/auth/node_modules/readable-stream/lib/internal/streams/duplex.js","../../../../node_modules/@web3auth/auth/node_modules/readable-stream/lib/internal/streams/transform.js","../../../../node_modules/@web3auth/auth/node_modules/readable-stream/lib/internal/streams/passthrough.js","../../../../node_modules/@web3auth/auth/node_modules/readable-stream/lib/internal/streams/pipeline.js","../../../../node_modules/@web3auth/auth/node_modules/readable-stream/lib/internal/streams/compose.js","../../../../node_modules/@web3auth/auth/node_modules/readable-stream/lib/internal/streams/operators.js","../../../../node_modules/@web3auth/auth/node_modules/readable-stream/lib/stream/promises.js","../../../../node_modules/@web3auth/auth/node_modules/readable-stream/lib/stream.js","../../../../node_modules/@web3auth/auth/node_modules/readable-stream/lib/ours/browser.js","../../../../node_modules/@web3auth/auth/dist/lib.esm/jrpc/safeEventEmitter.js","../../../../node_modules/@web3auth/auth/dist/lib.esm/jrpc/serializableError.js","../../../../node_modules/@web3auth/auth/dist/lib.esm/jrpc/errors/error-constants.js","../../../../node_modules/@web3auth/auth/dist/lib.esm/jrpc/errors/utils.js","../../../../node_modules/@web3auth/auth/dist/lib.esm/jrpc/errors/error-classes.js","../../../../node_modules/@web3auth/auth/dist/lib.esm/jrpc/errors/errors.js","../../../../node_modules/@web3auth/auth/dist/lib.esm/jrpc/jrpc.js","../../../../node_modules/@web3auth/auth/dist/lib.esm/jrpc/jrpcEngine.js","../../../../node_modules/ethereum-cryptography/node_modules/@noble/hashes/esm/_md.js","../../../../node_modules/ethereum-cryptography/node_modules/@noble/hashes/esm/sha256.js","../../../../node_modules/ethereum-cryptography/node_modules/@noble/hashes/esm/hmac.js","../../../../node_modules/ethereum-cryptography/node_modules/@noble/curves/esm/abstract/utils.js","../../../../node_modules/ethereum-cryptography/node_modules/@noble/curves/esm/abstract/modular.js","../../../../node_modules/ethereum-cryptography/node_modules/@noble/curves/esm/abstract/curve.js","../../../../node_modules/ethereum-cryptography/node_modules/@noble/curves/esm/abstract/weierstrass.js","../../../../node_modules/ethereum-cryptography/node_modules/@noble/curves/esm/_shortw_utils.js","../../../../node_modules/ethereum-cryptography/node_modules/@noble/curves/esm/secp256k1.js","../../../../node_modules/@ethereumjs/util/dist/esm/internal.js","../../../../node_modules/@ethereumjs/util/dist/esm/helpers.js","../../../../node_modules/@ethereumjs/util/dist/esm/bytes.js","../../../../node_modules/@ethereumjs/util/dist/esm/constants.js","../../../../node_modules/@ethereumjs/util/dist/esm/units.js","../../../../node_modules/@ethereumjs/rlp/dist/esm/index.js","../../../../node_modules/@ethereumjs/util/dist/esm/account.js","../../../../node_modules/@ethereumjs/util/dist/esm/db.js","../../../../node_modules/@ethereumjs/util/dist/esm/types.js","../../../../node_modules/@ethereumjs/util/dist/esm/signature.js","../../../../node_modules/@ethereumjs/util/dist/esm/requests.js","../../../../node_modules/@ethereumjs/util/dist/esm/verkle.js","../../../../node_modules/@toruslabs/base-controllers/dist/lib.esm/BaseController.js","../../../../node_modules/@toruslabs/base-controllers/dist/lib.esm/createEventEmitterProxy.js","../../../../node_modules/bignumber.js/bignumber.mjs","../../../../node_modules/@toruslabs/base-controllers/dist/lib.esm/utils/utils.js","../../../../node_modules/@toruslabs/base-controllers/dist/lib.esm/Network/createFetchMiddleware.js","../../../../node_modules/@toruslabs/base-controllers/dist/lib.esm/utils/lodashUtils.js","../../../../node_modules/@web3auth/base/dist/lib.esm/wallet/index.js","../../../../node_modules/@web3auth/base/dist/lib.esm/adapter/IAdapter.js","../../../../node_modules/@web3auth/base/dist/lib.esm/utils.js","../../../../node_modules/@web3auth/base/dist/lib.esm/plugin/IPlugin.js","../../../../node_modules/@web3auth/auth-adapter/dist/lib.esm/config.js","../../../../node_modules/@web3auth/auth-adapter/dist/lib.esm/authAdapter.js","../../../../node_modules/@web3auth/base-provider/dist/lib.esm/baseProvider.js","../../../../node_modules/@web3auth/base-provider/dist/lib.esm/jrpcClient.js","../../../../node_modules/@web3auth/base-provider/dist/lib.esm/CommonJRPCProvider.js","../../../../node_modules/@web3auth/no-modal/dist/lib.esm/noModal.js","../../../../node_modules/@web3auth/ethereum-provider/dist/lib.esm/rpc/walletMidddleware.js","../../../../node_modules/@web3auth/ethereum-provider/dist/lib.esm/rpc/ethRpcMiddlewares.js","../../../../node_modules/@web3auth/ethereum-provider/dist/lib.esm/rpc/jrpcClient.js","../../../../node_modules/ethers/lib.esm/_version.js","../../../../node_modules/ethers/lib.esm/utils/properties.js","../../../../node_modules/ethers/lib.esm/utils/errors.js","../../../../node_modules/ethers/lib.esm/utils/data.js","../../../../node_modules/ethers/lib.esm/utils/maths.js","../../../../node_modules/ethers/lib.esm/utils/utf8.js","../../../../node_modules/ethers/node_modules/@noble/hashes/esm/_assert.js","../../../../node_modules/ethers/node_modules/@noble/hashes/esm/crypto.js","../../../../node_modules/ethers/node_modules/@noble/hashes/esm/utils.js","../../../../node_modules/ethers/node_modules/@noble/hashes/esm/hmac.js","../../../../node_modules/ethers/node_modules/@noble/hashes/esm/_sha2.js","../../../../node_modules/ethers/node_modules/@noble/hashes/esm/sha256.js","../../../../node_modules/ethers/node_modules/@noble/hashes/esm/_u64.js","../../../../node_modules/ethers/node_modules/@noble/hashes/esm/sha3.js","../../../../node_modules/ethers/lib.esm/crypto/keccak.js","../../../../node_modules/ethers/node_modules/@noble/curves/esm/abstract/utils.js","../../../../node_modules/ethers/node_modules/@noble/curves/esm/abstract/modular.js","../../../../node_modules/ethers/node_modules/@noble/curves/esm/abstract/curve.js","../../../../node_modules/ethers/node_modules/@noble/curves/esm/abstract/weierstrass.js","../../../../node_modules/ethers/node_modules/@noble/curves/esm/_shortw_utils.js","../../../../node_modules/ethers/node_modules/@noble/curves/esm/secp256k1.js","../../../../node_modules/ethers/lib.esm/constants/hashes.js","../../../../node_modules/ethers/lib.esm/constants/strings.js","../../../../node_modules/ethers/lib.esm/crypto/signature.js","../../../../node_modules/ethers/lib.esm/crypto/signing-key.js","../../../../node_modules/ethers/lib.esm/address/address.js","../../../../node_modules/ethers/lib.esm/hash/id.js","../../../../node_modules/ethers/lib.esm/transaction/address.js","../../../../node_modules/ethers/lib.esm/hash/message.js","../../../../node_modules/ethers/lib.esm/hash/typed-data.js","../../../../node_modules/@web3auth/ethereum-provider/dist/lib.esm/providers/converter.js","../../../../node_modules/@web3auth/ethereum-provider/dist/lib.esm/providers/privateKeyProviders/TransactionFormatter/utils.js","../../../../node_modules/@web3auth/ethereum-provider/dist/lib.esm/providers/privateKeyProviders/ethPrivatekeyUtils.js","../../../../node_modules/@web3auth/ethereum-provider/dist/lib.esm/providers/utils.js","../../../../node_modules/@web3auth/ethereum-provider/dist/lib.esm/providers/privateKeyProviders/TransactionFormatter/constants.js","../../../../node_modules/@web3auth/ethereum-provider/dist/lib.esm/providers/privateKeyProviders/TransactionFormatter/formatter.js","../../../../node_modules/@web3auth/ethereum-provider/dist/lib.esm/providers/privateKeyProviders/EthereumPrivateKeyProvider.js","../../src/contexts/Web3AuthContext.tsx","../../../../node_modules/@firebase/util/dist/index.esm2017.js","../../../../node_modules/@firebase/component/dist/esm/index.esm2017.js","../../../../node_modules/@firebase/logger/dist/esm/index.esm2017.js","../../../../node_modules/idb/build/wrap-idb-value.js","../../../../node_modules/idb/build/index.js","../../../../node_modules/@firebase/app/dist/esm/index.esm2017.js","../../../../node_modules/@firebase/database/dist/index.esm2017.js","../../../../node_modules/firebase/app/dist/esm/index.esm.js","../../src/firebase/config.ts","../../../../node_modules/@dfinity/agent/lib/esm/agent/api.js","../../../../node_modules/@dfinity/principal/lib/esm/utils/base32.js","../../../../node_modules/@dfinity/principal/lib/esm/utils/getCrc.js","../../../../node_modules/@dfinity/principal/lib/esm/utils/sha224.js","../../../../node_modules/@dfinity/principal/lib/esm/index.js","../../../../node_modules/@dfinity/agent/lib/esm/utils/buffer.js","../../../../node_modules/@dfinity/agent/lib/esm/errors.js","../../../../node_modules/@dfinity/candid/lib/esm/utils/buffer.js","../../../../node_modules/@dfinity/candid/lib/esm/utils/hash.js","../../../../node_modules/@dfinity/candid/lib/esm/utils/leb128.js","../../../../node_modules/@dfinity/candid/lib/esm/utils/bigint-math.js","../../../../node_modules/@dfinity/candid/lib/esm/idl.js","../../../../node_modules/borc/node_modules/buffer/index.js","../../../../node_modules/borc/src/decoder.asm.js","../../../../node_modules/borc/src/constants.js","../../../../node_modules/borc/src/utils.js","../../../../node_modules/borc/src/simple.js","../../../../node_modules/borc/src/tagged.js","../../../../node_modules/iso-url/src/url-browser.js","../../../../node_modules/iso-url/src/relative.js","../../../../node_modules/iso-url/index.js","../../../../node_modules/borc/src/decoder.js","../../../../node_modules/borc/src/diagnose.js","../../../../node_modules/borc/src/encoder.js","../../../../node_modules/borc/src/index.js","../../../../node_modules/@dfinity/agent/lib/esm/request_id.js","../../../../node_modules/@dfinity/agent/lib/esm/auth.js","../../../../node_modules/simple-cbor/src/value.js","../../../../node_modules/simple-cbor/src/serializer.js","../../../../node_modules/simple-cbor/src/index.js","../../../../node_modules/@dfinity/agent/lib/esm/cbor.js","../../../../node_modules/@dfinity/agent/lib/esm/utils/random.js","../../../../node_modules/@dfinity/agent/lib/esm/agent/http/types.js","../../../../node_modules/@dfinity/agent/lib/esm/agent/http/transforms.js","../../../../node_modules/@dfinity/agent/lib/esm/agent/http/errors.js","../../../../node_modules/@noble/curves/esm/abstract/utils.js","../../../../node_modules/@noble/curves/esm/abstract/modular.js","../../../../node_modules/@noble/curves/esm/abstract/hash-to-curve.js","../../../../node_modules/@noble/curves/esm/abstract/curve.js","../../../../node_modules/@noble/curves/esm/abstract/weierstrass.js","../../../../node_modules/@noble/curves/esm/abstract/bls.js","../../../../node_modules/@noble/curves/esm/abstract/tower.js","../../../../node_modules/@noble/curves/esm/bls12-381.js","../../../../node_modules/@dfinity/agent/lib/esm/utils/bls.js","../../../../node_modules/@dfinity/agent/lib/esm/utils/leb.js","../../../../node_modules/@dfinity/agent/lib/esm/certificate.js","../../../../node_modules/@dfinity/agent/lib/esm/canisterStatus/index.js","../../../../node_modules/@noble/curves/esm/abstract/edwards.js","../../../../node_modules/@noble/curves/esm/ed25519.js","../../../../node_modules/@dfinity/agent/lib/esm/utils/expirableMap.js","../../../../node_modules/@dfinity/agent/lib/esm/der.js","../../../../node_modules/@dfinity/agent/lib/esm/public_key.js","../../../../node_modules/@dfinity/agent/lib/esm/observable.js","../../../../node_modules/@dfinity/agent/lib/esm/polling/backoff.js","../../../../node_modules/@dfinity/agent/lib/esm/constants.js","../../../../node_modules/@dfinity/agent/lib/esm/agent/http/index.js","../../../../node_modules/@dfinity/agent/lib/esm/agent/proxy.js","../../../../node_modules/@dfinity/agent/lib/esm/agent/index.js","../../../../node_modules/@dfinity/agent/lib/esm/polling/strategy.js","../../../../node_modules/@dfinity/agent/lib/esm/polling/index.js","../../../../node_modules/@dfinity/agent/lib/esm/canisters/management_idl.js","../../../../node_modules/@dfinity/agent/lib/esm/actor.js","../../../declarations/mutual-link-backend/mutual-link-backend.did.js","../../src/firebase/notification.ts","../../src/contexts/AuthContext.tsx","../../src/components/UserInfoModal.tsx","../../src/pages/Home/Home.tsx","../../../../node_modules/crypto-js/core.js","../../../../node_modules/crypto-js/x64-core.js","../../../../node_modules/crypto-js/lib-typedarrays.js","../../../../node_modules/crypto-js/enc-utf16.js","../../../../node_modules/crypto-js/enc-base64.js","../../../../node_modules/crypto-js/enc-base64url.js","../../../../node_modules/crypto-js/md5.js","../../../../node_modules/crypto-js/sha1.js","../../../../node_modules/crypto-js/sha256.js","../../../../node_modules/crypto-js/sha224.js","../../../../node_modules/crypto-js/sha512.js","../../../../node_modules/crypto-js/sha384.js","../../../../node_modules/crypto-js/sha3.js","../../../../node_modules/crypto-js/ripemd160.js","../../../../node_modules/crypto-js/hmac.js","../../../../node_modules/crypto-js/pbkdf2.js","../../../../node_modules/crypto-js/evpkdf.js","../../../../node_modules/crypto-js/cipher-core.js","../../../../node_modules/crypto-js/mode-cfb.js","../../../../node_modules/crypto-js/mode-ctr.js","../../../../node_modules/crypto-js/mode-ctr-gladman.js","../../../../node_modules/crypto-js/mode-ofb.js","../../../../node_modules/crypto-js/mode-ecb.js","../../../../node_modules/crypto-js/pad-ansix923.js","../../../../node_modules/crypto-js/pad-iso10126.js","../../../../node_modules/crypto-js/pad-iso97971.js","../../../../node_modules/crypto-js/pad-zeropadding.js","../../../../node_modules/crypto-js/pad-nopadding.js","../../../../node_modules/crypto-js/format-hex.js","../../../../node_modules/crypto-js/aes.js","../../../../node_modules/crypto-js/tripledes.js","../../../../node_modules/crypto-js/rc4.js","../../../../node_modules/crypto-js/rabbit.js","../../../../node_modules/crypto-js/rabbit-legacy.js","../../../../node_modules/crypto-js/blowfish.js","../../../../node_modules/crypto-js/index.js","../../node_modules/@toruslabs/eccrypto/dist/lib.esm/index.js","../../src/firebase/referral.ts","../../src/utils/actor.ts","../../src/pages/DoctorList/DoctorList.tsx","../../node_modules/pdfjs-dist/build/pdf.js","../../node_modules/react-pdf/dist/esm/pdfjs.js","../../../../node_modules/prop-types/lib/ReactPropTypesSecret.js","../../../../node_modules/prop-types/factoryWithThrowingShims.js","../../../../node_modules/prop-types/index.js","../../../../node_modules/make-event-props/dist/esm/index.js","../../../../node_modules/make-cancellable-promise/dist/esm/index.js","../../../../node_modules/clsx/dist/clsx.mjs","../../../../node_modules/tiny-invariant/dist/esm/tiny-invariant.js","../../../../node_modules/tiny-warning/dist/tiny-warning.esm.js","../../node_modules/react-pdf/dist/esm/DocumentContext.js","../../node_modules/react-pdf/dist/esm/Message.js","../../node_modules/react-pdf/dist/esm/LinkService.js","../../node_modules/react-pdf/dist/esm/PasswordResponses.js","../../node_modules/react-pdf/dist/esm/shared/utils.js","../../node_modules/react-pdf/dist/esm/shared/hooks/useResolver.js","../../node_modules/react-pdf/dist/esm/shared/propTypes.js","../../node_modules/react-pdf/dist/esm/Document.js","../../node_modules/react-pdf/dist/esm/shared/hooks/useDocumentContext.js","../../../../node_modules/merge-refs/dist/esm/index.js","../../node_modules/react-pdf/dist/esm/PageContext.js","../../node_modules/react-pdf/dist/esm/shared/constants.js","../../node_modules/react-pdf/dist/esm/shared/structTreeUtils.js","../../node_modules/react-pdf/dist/esm/StructTreeItem.js","../../node_modules/react-pdf/dist/esm/shared/hooks/usePageContext.js","../../node_modules/react-pdf/dist/esm/StructTree.js","../../node_modules/react-pdf/dist/esm/Page/PageCanvas.js","../../node_modules/react-pdf/dist/esm/Page/PageSVG.js","../../node_modules/react-pdf/dist/esm/Page/TextLayer.js","../../node_modules/react-pdf/dist/esm/Page/AnnotationLayer.js","../../node_modules/react-pdf/dist/esm/Page.js","../../node_modules/react-pdf/dist/esm/index.js","../../src/components/FileViewerModal.tsx","../../../../node_modules/jszip/dist/jszip.min.js","../../src/utils/indexedDB.ts","../../src/components/DoctorInfoModal.tsx","../../src/pages/MedicalData/MedicalData.tsx","../../src/pages/Login/Login.tsx","../../src/components/PrivateRoute.tsx","../../src/pages/UserManagement/UserManagement.tsx","../../src/pages/HospitalManagement/HospitalManagement.tsx","../../src/App.tsx","../../src/main.tsx"],"sourcesContent":["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","\n import { Buffer } from \"buffer\";\n import process from \"process\";\n window.Buffer = Buffer;\n window.process = process;\n ","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","import {\n UserOutlined,\n ClockCircleOutlined,\n UploadOutlined,\n DownloadOutlined,\n SettingOutlined,\n TeamOutlined,\n SafetyCertificateOutlined,\n} from \"@ant-design/icons\";\nimport { MenuProps } from \"antd\";\nimport React from \"react\";\n\ntype MenuItem = Required[\"items\"][number];\n\nexport const regularMenuItems: MenuItem[] = [\n {\n key: \"doctorList\",\n icon: React.createElement(UserOutlined),\n label: \"의사목록\",\n },\n {\n key: \"medicalDataSend\",\n icon: React.createElement(UploadOutlined),\n label: \"진료데이터(송신)\",\n },\n {\n key: \"medicalDataReceive\",\n icon: React.createElement(DownloadOutlined),\n label: \"진료데이터(수신)\",\n },\n];\n\n// 관리자 메뉴 아이템\nexport const adminMenuItems: MenuItem[] = [\n {\n key: \"adminManagement\",\n icon: React.createElement(SettingOutlined),\n label: \"관리자 설정\",\n children: [\n {\n key: \"userManagement\",\n icon: React.createElement(TeamOutlined),\n label: \"사용자 관리\",\n },\n {\n key: \"hospitalManagement\",\n icon: React.createElement(SafetyCertificateOutlined),\n label: \"병원 관리\",\n },\n ],\n },\n];\n","function fixProto(target, prototype) {\n var setPrototypeOf = Object.setPrototypeOf;\n setPrototypeOf ? setPrototypeOf(target, prototype) : target.__proto__ = prototype;\n}\nfunction fixStack(target, fn) {\n if (fn === void 0) {\n fn = target.constructor;\n }\n\n var captureStackTrace = Error.captureStackTrace;\n captureStackTrace && captureStackTrace(target, fn);\n}\n\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar CustomError = function (_super) {\n __extends(CustomError, _super);\n\n function CustomError(message, options) {\n var _newTarget = this.constructor;\n\n var _this = _super.call(this, message, options) || this;\n\n Object.defineProperty(_this, 'name', {\n value: _newTarget.name,\n enumerable: false,\n configurable: true\n });\n fixProto(_this, _newTarget.prototype);\n fixStack(_this);\n return _this;\n }\n\n return CustomError;\n}(Error);\n\nvar __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nfunction customErrorFactory(fn, parent) {\n if (parent === void 0) {\n parent = Error;\n }\n\n function CustomError() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n if (!(this instanceof CustomError)) return new (CustomError.bind.apply(CustomError, __spreadArray([void 0], args, false)))();\n parent.apply(this, args);\n Object.defineProperty(this, 'name', {\n value: fn.name || parent.name,\n enumerable: false,\n configurable: true\n });\n fn.apply(this, args);\n fixStack(this, CustomError);\n }\n\n return Object.defineProperties(CustomError, {\n prototype: {\n value: Object.create(parent.prototype, {\n constructor: {\n value: CustomError,\n writable: true,\n configurable: true\n }\n })\n }\n });\n}\n\nexport { CustomError, customErrorFactory };\n//# sourceMappingURL=custom-error.mjs.map\n","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport { CustomError } from 'ts-custom-error';\n\n// @flow\n\nfunction serializeError(args) {\n // Find first Error or create an \"unknown\" Error to keep stack trace.\n const index = args.findIndex(arg => arg instanceof Error);\n const msgIndex = args.findIndex(arg => typeof arg === \"string\");\n const apiErrorIdx = args.findIndex(arg => arg && typeof arg === \"object\" && \"status\" in arg && \"type\" in arg);\n let err;\n if (apiErrorIdx !== -1) {\n const apiError = args[apiErrorIdx];\n err = new Error(`${apiError.status} ${apiError.type.toString()} ${apiError.statusText}`);\n } else if (index !== -1) {\n err = args.splice(index, 1)[0];\n } else if (msgIndex !== -1) {\n err = new Error(args.splice(msgIndex, 1)[0]);\n } else {\n err = new Error(\"Unknown error\");\n }\n return [err, args];\n}\nclass Web3AuthError extends CustomError {\n constructor(code, message, cause) {\n // takes care of stack and proto\n super(message);\n _defineProperty(this, \"code\", void 0);\n _defineProperty(this, \"message\", void 0);\n _defineProperty(this, \"cause\", void 0);\n this.code = code;\n this.message = message || \"\";\n this.cause = cause;\n // Set name explicitly as minification can mangle class names\n Object.defineProperty(this, \"name\", {\n value: \"Web3AuthError\"\n });\n }\n toJSON() {\n return {\n name: this.name,\n code: this.code,\n message: this.message,\n cause: serializeError([this.cause])\n };\n }\n toString() {\n return JSON.stringify(this.toJSON());\n }\n}\nclass WalletInitializationError extends Web3AuthError {\n constructor(code, message, cause) {\n // takes care of stack and proto\n super(code, message, cause);\n\n // Set name explicitly as minification can mangle class names\n Object.defineProperty(this, \"name\", {\n value: \"WalletInitializationError\"\n });\n }\n static fromCode(code, extraMessage = \"\", cause) {\n return new WalletInitializationError(code, `${WalletInitializationError.messages[code]}, ${extraMessage}`, cause);\n }\n\n // Custom methods\n static notFound(extraMessage = \"\", cause) {\n return WalletInitializationError.fromCode(5001, extraMessage, cause);\n }\n static notInstalled(extraMessage = \"\", cause) {\n return WalletInitializationError.fromCode(5002, extraMessage, cause);\n }\n static notReady(extraMessage = \"\", cause) {\n return WalletInitializationError.fromCode(5003, extraMessage, cause);\n }\n static windowBlocked(extraMessage = \"\", cause) {\n return WalletInitializationError.fromCode(5004, extraMessage, cause);\n }\n static windowClosed(extraMessage = \"\", cause) {\n return WalletInitializationError.fromCode(5005, extraMessage, cause);\n }\n static incompatibleChainNameSpace(extraMessage = \"\", cause) {\n return WalletInitializationError.fromCode(5006, extraMessage, cause);\n }\n static duplicateAdapterError(extraMessage = \"\", cause) {\n return WalletInitializationError.fromCode(5007, extraMessage, cause);\n }\n static invalidProviderConfigError(extraMessage = \"\", cause) {\n return WalletInitializationError.fromCode(5008, extraMessage, cause);\n }\n static providerNotReadyError(extraMessage = \"\", cause) {\n return WalletInitializationError.fromCode(5009, extraMessage, cause);\n }\n static rpcConnectionError(extraMessage = \"\", cause) {\n return WalletInitializationError.fromCode(5010, extraMessage, cause);\n }\n static invalidParams(extraMessage = \"\", cause) {\n return WalletInitializationError.fromCode(5011, extraMessage, cause);\n }\n static invalidNetwork(extraMessage = \"\", cause) {\n return WalletInitializationError.fromCode(5013, extraMessage, cause);\n }\n}\n\n/**\n * wallet login errors\n */\n_defineProperty(WalletInitializationError, \"messages\", {\n 5000: \"Custom\",\n 5001: \"Wallet is not found\",\n 5002: \"Wallet is not installed\",\n 5003: \"Wallet is not ready yet\",\n 5004: \"Wallet window is blocked\",\n 5005: \"Wallet window has been closed by the user\",\n 5006: \"Incompatible chain namespace provided\",\n 5007: \"Adapter has already been included\",\n 5008: \"Invalid provider Config\",\n 5009: \"Provider is not ready yet\",\n 5010: \"Failed to connect with rpc url\",\n 5011: \"Invalid params passed in\",\n 5013: \"Invalid network provided\"\n});\nclass WalletLoginError extends Web3AuthError {\n constructor(code, message, cause) {\n // takes care of stack and proto\n super(code, message, cause);\n\n // Set name explicitly as minification can mangle class names\n Object.defineProperty(this, \"name\", {\n value: \"WalletLoginError\"\n });\n }\n static fromCode(code, extraMessage = \"\", cause) {\n return new WalletLoginError(code, `${WalletLoginError.messages[code]}. ${extraMessage}`, cause);\n }\n static connectionError(extraMessage = \"\", cause) {\n return WalletLoginError.fromCode(5111, extraMessage, cause);\n }\n static disconnectionError(extraMessage = \"\", cause) {\n return WalletLoginError.fromCode(5112, extraMessage, cause);\n }\n static notConnectedError(extraMessage = \"\", cause) {\n return WalletLoginError.fromCode(5113, extraMessage, cause);\n }\n static popupClosed(extraMessage = \"\", cause) {\n return WalletLoginError.fromCode(5114, extraMessage, cause);\n }\n static mfaEnabled(extraMessage = \"\", cause) {\n return WalletLoginError.fromCode(5115, extraMessage, cause);\n }\n static chainConfigNotAdded(extraMessage = \"\", cause) {\n return WalletLoginError.fromCode(5116, extraMessage, cause);\n }\n static unsupportedOperation(extraMessage = \"\", cause) {\n return WalletLoginError.fromCode(5117, extraMessage, cause);\n }\n static coreKitKeyNotFound(extraMessage = \"\", cause) {\n return WalletLoginError.fromCode(5118, extraMessage, cause);\n }\n static userNotLoggedIn(extraMessage = \"\", cause) {\n return WalletLoginError.fromCode(5119, extraMessage, cause);\n }\n}\n_defineProperty(WalletLoginError, \"messages\", {\n 5000: \"Custom\",\n 5111: \"Failed to connect with wallet\",\n 5112: \"Failed to disconnect from wallet\",\n 5113: \"Wallet is not connected\",\n 5114: \"Wallet popup has been closed by the user\",\n 5115: \"User has already enabled mfa, please use the @web3auth/web3auth-web sdk for login with mfa\",\n 5116: \"Chain config has not been added. Please add the chain config before calling switchChain\",\n 5117: \"Unsupported operation\",\n 5118: \"useCoreKitKey flag is enabled but coreKitKey is not available\",\n 5119: \"User not logged in.\"\n});\nclass WalletOperationsError extends Web3AuthError {\n constructor(code, message, cause) {\n // takes care of stack and proto\n super(code, message, cause);\n\n // Set name explicitly as minification can mangle class names\n Object.defineProperty(this, \"name\", {\n value: \"WalletOperationsError\"\n });\n }\n static fromCode(code, extraMessage = \"\", cause) {\n return new WalletOperationsError(code, `${WalletOperationsError.messages[code]}, ${extraMessage}`, cause);\n }\n\n // Custom methods\n static chainIDNotAllowed(extraMessage = \"\", cause) {\n return WalletOperationsError.fromCode(5201, extraMessage, cause);\n }\n static operationNotAllowed(extraMessage = \"\", cause) {\n return WalletOperationsError.fromCode(5202, extraMessage, cause);\n }\n static chainNamespaceNotAllowed(extraMessage = \"\", cause) {\n return WalletOperationsError.fromCode(5203, extraMessage, cause);\n }\n}\n_defineProperty(WalletOperationsError, \"messages\", {\n 5000: \"Custom\",\n 5201: \"Provided chainId is not allowed\",\n 5202: \"This operation is not allowed\"\n});\nclass WalletProviderError extends Web3AuthError {\n constructor(code, message, cause) {\n // takes care of stack and proto\n super(code, message, cause);\n\n // Set name explicitly as minification can mangle class names\n Object.defineProperty(this, \"name\", {\n value: \"WalletProviderError\"\n });\n }\n static fromCode(code, extraMessage = \"\", cause) {\n return new WalletOperationsError(code, `${WalletProviderError.messages[code]}, ${extraMessage}`, cause);\n }\n\n // Custom methods\n static invalidRequestArgs(extraMessage = \"\", cause) {\n return WalletOperationsError.fromCode(5301, extraMessage, cause);\n }\n static invalidRequestMethod(extraMessage = \"\", cause) {\n return WalletOperationsError.fromCode(5302, extraMessage, cause);\n }\n static invalidRequestParams(extraMessage = \"\", cause) {\n return WalletOperationsError.fromCode(5303, extraMessage, cause);\n }\n}\n_defineProperty(WalletProviderError, \"messages\", {\n 5000: \"Custom\",\n 5301: \"Expected a single, non-array, object argument.\",\n 5302: \"'args.method' must be a non-empty string.\",\n 5303: \"'args.params' must be an object or array if provided.\"\n});\n\nexport { WalletInitializationError, WalletLoginError, WalletOperationsError, WalletProviderError, Web3AuthError, serializeError };\n","const CHAIN_NAMESPACES = {\n EIP155: \"eip155\",\n SOLANA: \"solana\",\n CASPER: \"casper\",\n XRPL: \"xrpl\",\n OTHER: \"other\"\n};\n// eip155 for all evm chains\n\nconst ADAPTER_NAMESPACES = {\n EIP155: \"eip155\",\n SOLANA: \"solana\",\n CASPER: \"casper\",\n XRPL: \"xrpl\",\n MULTICHAIN: \"multichain\"\n};\n// eip155 for all evm chains\n\nexport { ADAPTER_NAMESPACES, CHAIN_NAMESPACES };\n","import { WalletInitializationError } from '../errors/index.js';\nimport { CHAIN_NAMESPACES } from './IChainInterface.js';\n\nconst getDefaultNetworkId = chainNamespace => {\n if (chainNamespace === CHAIN_NAMESPACES.EIP155) {\n return 1;\n } else if (chainNamespace === CHAIN_NAMESPACES.SOLANA) {\n return 1;\n } else if (chainNamespace === CHAIN_NAMESPACES.XRPL) {\n return 1;\n }\n throw WalletInitializationError.invalidParams(`Chain namespace ${chainNamespace} is not supported`);\n};\nconst getEvmChainConfig = chainId => {\n const chainNamespace = CHAIN_NAMESPACES.EIP155;\n if (chainId === 1) {\n return {\n logo: \"https://images.toruswallet.io/eth.svg\",\n chainNamespace,\n chainId: \"0x1\",\n rpcTarget: `https://rpc.ankr.com/eth`,\n displayName: \"Ethereum Mainnet\",\n blockExplorerUrl: \"https://etherscan.io/\",\n ticker: \"ETH\",\n tickerName: \"Ethereum\",\n decimals: 18\n };\n }\n if (chainId === 5) {\n return {\n logo: \"https://images.toruswallet.io/eth.svg\",\n chainNamespace,\n chainId: \"0x5\",\n rpcTarget: `https://rpc.ankr.com/eth_goerli`,\n displayName: \"Goerli Testnet\",\n blockExplorerUrl: \"https://goerli.etherscan.io/\",\n ticker: \"ETH\",\n tickerName: \"Ethereum\",\n decimals: 18\n };\n }\n if (chainId === 11155111) {\n return {\n logo: \"https://images.toruswallet.io/eth.svg\",\n chainNamespace,\n chainId: \"0xaa36a7\",\n rpcTarget: `https://rpc.ankr.com/eth_sepolia`,\n displayName: \"Sepolia Testnet\",\n blockExplorerUrl: \"https://sepolia.etherscan.io/\",\n ticker: \"ETH\",\n tickerName: \"Ethereum\",\n decimals: 18\n };\n }\n if (chainId === 137) {\n return {\n logo: \"https://images.toruswallet.io/polygon.svg\",\n chainNamespace,\n chainId: \"0x89\",\n rpcTarget: \"https://rpc.ankr.com/polygon\",\n displayName: \"Polygon Mainnet\",\n blockExplorerUrl: \"https://polygonscan.com\",\n ticker: \"POL\",\n tickerName: \"Polygon Ecosystem Token\"\n };\n }\n if (chainId === 80002) {\n return {\n logo: \"https://images.toruswallet.io/polygon.svg\",\n chainNamespace,\n chainId: \"0x13882\",\n rpcTarget: \"https://rpc.ankr.com/polygon_amoy\",\n displayName: \"Polygon Amoy Testnet\",\n blockExplorerUrl: \"https://www.oklink.com/amoy\",\n ticker: \"POL\",\n tickerName: \"Polygon Ecosystem Token\",\n decimals: 18\n };\n }\n if (chainId === 56) {\n return {\n logo: \"https://images.toruswallet.io/bnb.png\",\n chainNamespace,\n chainId: \"0x38\",\n rpcTarget: \"https://rpc.ankr.com/bsc\",\n displayName: \"Binance SmartChain Mainnet\",\n blockExplorerUrl: \"https://bscscan.com\",\n ticker: \"BNB\",\n tickerName: \"Binance SmartChain\",\n decimals: 18\n };\n }\n if (chainId === 97) {\n return {\n logo: \"https://images.toruswallet.io/bnb.png\",\n chainNamespace,\n chainId: \"0x61\",\n rpcTarget: \"https://rpc.ankr.com/bsc_testnet_chapel\",\n displayName: \"Binance SmartChain Testnet\",\n blockExplorerUrl: \"https://testnet.bscscan.com\",\n ticker: \"BNB\",\n tickerName: \"Binance SmartChain\",\n decimals: 18\n };\n }\n if (chainId === 25) {\n return {\n logo: \"https://images.toruswallet.io/cro.svg\",\n chainNamespace,\n chainId: \"0x19\",\n rpcTarget: \"https://rpc.cronos.org\",\n displayName: \"Cronos Mainnet\",\n blockExplorerUrl: \"https://cronoscan.com/\",\n ticker: \"CRO\",\n tickerName: \"Cronos\"\n };\n }\n if (chainId === 338) {\n return {\n logo: \"https://images.toruswallet.io/cro.svg\",\n chainNamespace,\n chainId: \"0x152\",\n rpcTarget: \"https://rpc-t3.cronos.org/\",\n displayName: \"Cronos Testnet\",\n blockExplorerUrl: \"https://cronoscan.com/\",\n ticker: \"CRO\",\n tickerName: \"Cronos\",\n decimals: 18\n };\n }\n if (chainId === 8217) {\n return {\n logo: \"https://images.toruswallet.io/klay.svg\",\n chainNamespace,\n chainId: \"0x2019\",\n rpcTarget: \"https://public-node-api.klaytnapi.com/v1/cypress\",\n displayName: \"Klaytn Mainnet\",\n blockExplorerUrl: \"https://scope.klaytn.com\",\n ticker: \"KLAY\",\n tickerName: \"Klaytn\",\n decimals: 18\n };\n }\n if (chainId === 1946) {\n return {\n chainNamespace: CHAIN_NAMESPACES.EIP155,\n chainId: \"0x79a\",\n rpcTarget: \"https://rpc.minato.soneium.org\",\n displayName: \"Soneium Minato Testnet\",\n blockExplorerUrl: \"https://explorer-testnet.soneium.org\",\n ticker: \"ETH\",\n tickerName: \"ETH\",\n logo: \"https://cryptologos.cc/logos/soneium-logo.png\"\n };\n }\n return null;\n};\nconst getSolanaChainConfig = chainId => {\n const chainNamespace = CHAIN_NAMESPACES.SOLANA;\n if (chainId === 1) {\n return {\n logo: \"https://images.toruswallet.io/sol.svg\",\n chainNamespace,\n chainId: \"0x1\",\n rpcTarget: \"https://rpc.ankr.com/solana\",\n displayName: \"Solana Mainnet\",\n blockExplorerUrl: \"https://explorer.solana.com\",\n ticker: \"SOL\",\n tickerName: \"Solana\",\n decimals: 9\n };\n } else if (chainId === 2) {\n return {\n logo: \"https://images.toruswallet.io/sol.svg\",\n chainNamespace,\n chainId: \"0x2\",\n rpcTarget: \"https://api.testnet.solana.com\",\n displayName: \"Solana Testnet\",\n blockExplorerUrl: \"https://explorer.solana.com?cluster=testnet\",\n ticker: \"SOL\",\n tickerName: \"Solana\",\n decimals: 9\n };\n } else if (chainId === 3) {\n return {\n logo: \"https://images.toruswallet.io/sol.svg\",\n chainNamespace,\n chainId: \"0x3\",\n rpcTarget: \"https://api.devnet.solana.com\",\n displayName: \"Solana Devnet\",\n blockExplorerUrl: \"https://explorer.solana.com?cluster=devnet\",\n ticker: \"SOL\",\n tickerName: \"Solana\",\n decimals: 9\n };\n }\n return null;\n};\nconst getXrplChainConfig = chainId => {\n const chainNamespace = CHAIN_NAMESPACES.XRPL;\n if (chainId === 1) {\n return {\n chainNamespace,\n decimals: 15,\n chainId: \"0x1\",\n logo: \"https://images.toruswallet.io/XRP.svg\",\n rpcTarget: \"https://ripple-node.tor.us\",\n wsTarget: \"wss://s2.ripple.com\",\n ticker: \"XRP\",\n tickerName: \"XRPL\",\n displayName: \"xrpl mainnet\",\n blockExplorerUrl: \"https://livenet.xrpl.org\"\n };\n } else if (chainId === 2) {\n return {\n chainNamespace,\n decimals: 15,\n chainId: \"0x2\",\n logo: \"https://images.toruswallet.io/XRP.svg\",\n rpcTarget: \"https://testnet-ripple-node.tor.us\",\n wsTarget: \"wss://s.altnet.rippletest.net\",\n ticker: \"XRP\",\n tickerName: \"XRPL\",\n displayName: \"xrpl testnet\",\n blockExplorerUrl: \"https://testnet.xrpl.org\",\n isTestnet: true\n };\n } else if (chainId === 3) {\n return {\n chainNamespace,\n decimals: 15,\n chainId: \"0x3\",\n logo: \"https://images.toruswallet.io/XRP.svg\",\n rpcTarget: \"https://devnet-ripple-node.tor.us\",\n wsTarget: \"wss://s.devnet.rippletest.net/\",\n ticker: \"XRP\",\n tickerName: \"XRPL\",\n displayName: \"xrpl devnet\",\n blockExplorerUrl: \"https://devnet.xrpl.org\",\n isTestnet: true\n };\n }\n return null;\n};\nconst getChainConfig = (chainNamespace, chainId) => {\n if (chainNamespace === CHAIN_NAMESPACES.OTHER) return null;\n const finalChainId = chainId ? typeof chainId === \"number\" ? chainId : parseInt(chainId, 16) : getDefaultNetworkId(chainNamespace);\n if (chainNamespace === CHAIN_NAMESPACES.EIP155) {\n return getEvmChainConfig(finalChainId);\n } else if (chainNamespace === CHAIN_NAMESPACES.SOLANA) {\n return getSolanaChainConfig(finalChainId);\n } else if (chainNamespace === CHAIN_NAMESPACES.XRPL) {\n return getXrplChainConfig(finalChainId);\n }\n return null;\n};\n\nexport { getChainConfig, getEvmChainConfig, getSolanaChainConfig, getXrplChainConfig };\n","/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n \"use strict\";\n if (typeof define === 'function' && define.amd) {\n define(definition);\n } else if (typeof module === 'object' && module.exports) {\n module.exports = definition();\n } else {\n root.log = definition();\n }\n}(this, function () {\n \"use strict\";\n\n // Slightly dubious tricks to cut down minimized file size\n var noop = function() {};\n var undefinedType = \"undefined\";\n var isIE = (typeof window !== undefinedType) && (typeof window.navigator !== undefinedType) && (\n /Trident\\/|MSIE /.test(window.navigator.userAgent)\n );\n\n var logMethods = [\n \"trace\",\n \"debug\",\n \"info\",\n \"warn\",\n \"error\"\n ];\n\n var _loggersByName = {};\n var defaultLogger = null;\n\n // Cross-browser bind equivalent that works at least back to IE6\n function bindMethod(obj, methodName) {\n var method = obj[methodName];\n if (typeof method.bind === 'function') {\n return method.bind(obj);\n } else {\n try {\n return Function.prototype.bind.call(method, obj);\n } catch (e) {\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n return function() {\n return Function.prototype.apply.apply(method, [obj, arguments]);\n };\n }\n }\n }\n\n // Trace() doesn't print the message in IE, so for that case we need to wrap it\n function traceForIE() {\n if (console.log) {\n if (console.log.apply) {\n console.log.apply(console, arguments);\n } else {\n // In old IE, native console methods themselves don't have apply().\n Function.prototype.apply.apply(console.log, [console, arguments]);\n }\n }\n if (console.trace) console.trace();\n }\n\n // Build the best logging method possible for this env\n // Wherever possible we want to bind, not wrap, to preserve stack traces\n function realMethod(methodName) {\n if (methodName === 'debug') {\n methodName = 'log';\n }\n\n if (typeof console === undefinedType) {\n return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives\n } else if (methodName === 'trace' && isIE) {\n return traceForIE;\n } else if (console[methodName] !== undefined) {\n return bindMethod(console, methodName);\n } else if (console.log !== undefined) {\n return bindMethod(console, 'log');\n } else {\n return noop;\n }\n }\n\n // These private functions always need `this` to be set properly\n\n function replaceLoggingMethods() {\n /*jshint validthis:true */\n var level = this.getLevel();\n\n // Replace the actual methods.\n for (var i = 0; i < logMethods.length; i++) {\n var methodName = logMethods[i];\n this[methodName] = (i < level) ?\n noop :\n this.methodFactory(methodName, level, this.name);\n }\n\n // Define log.log as an alias for log.debug\n this.log = this.debug;\n\n // Return any important warnings.\n if (typeof console === undefinedType && level < this.levels.SILENT) {\n return \"No console available for logging\";\n }\n }\n\n // In old IE versions, the console isn't present until you first open it.\n // We build realMethod() replacements here that regenerate logging methods\n function enableLoggingWhenConsoleArrives(methodName) {\n return function () {\n if (typeof console !== undefinedType) {\n replaceLoggingMethods.call(this);\n this[methodName].apply(this, arguments);\n }\n };\n }\n\n // By default, we use closely bound real methods wherever possible, and\n // otherwise we wait for a console to appear, and then try again.\n function defaultMethodFactory(methodName, _level, _loggerName) {\n /*jshint validthis:true */\n return realMethod(methodName) ||\n enableLoggingWhenConsoleArrives.apply(this, arguments);\n }\n\n function Logger(name, factory) {\n // Private instance variables.\n var self = this;\n /**\n * The level inherited from a parent logger (or a global default). We\n * cache this here rather than delegating to the parent so that it stays\n * in sync with the actual logging methods that we have installed (the\n * parent could change levels but we might not have rebuilt the loggers\n * in this child yet).\n * @type {number}\n */\n var inheritedLevel;\n /**\n * The default level for this logger, if any. If set, this overrides\n * `inheritedLevel`.\n * @type {number|null}\n */\n var defaultLevel;\n /**\n * A user-specific level for this logger. If set, this overrides\n * `defaultLevel`.\n * @type {number|null}\n */\n var userLevel;\n\n var storageKey = \"loglevel\";\n if (typeof name === \"string\") {\n storageKey += \":\" + name;\n } else if (typeof name === \"symbol\") {\n storageKey = undefined;\n }\n\n function persistLevelIfPossible(levelNum) {\n var levelName = (logMethods[levelNum] || 'silent').toUpperCase();\n\n if (typeof window === undefinedType || !storageKey) return;\n\n // Use localStorage if available\n try {\n window.localStorage[storageKey] = levelName;\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + \"=\" + levelName + \";\";\n } catch (ignore) {}\n }\n\n function getPersistedLevel() {\n var storedLevel;\n\n if (typeof window === undefinedType || !storageKey) return;\n\n try {\n storedLevel = window.localStorage[storageKey];\n } catch (ignore) {}\n\n // Fallback to cookies if local storage gives us nothing\n if (typeof storedLevel === undefinedType) {\n try {\n var cookie = window.document.cookie;\n var cookieName = encodeURIComponent(storageKey);\n var location = cookie.indexOf(cookieName + \"=\");\n if (location !== -1) {\n storedLevel = /^([^;]+)/.exec(\n cookie.slice(location + cookieName.length + 1)\n )[1];\n }\n } catch (ignore) {}\n }\n\n // If the stored level is not valid, treat it as if nothing was stored.\n if (self.levels[storedLevel] === undefined) {\n storedLevel = undefined;\n }\n\n return storedLevel;\n }\n\n function clearPersistedLevel() {\n if (typeof window === undefinedType || !storageKey) return;\n\n // Use localStorage if available\n try {\n window.localStorage.removeItem(storageKey);\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + \"=; expires=Thu, 01 Jan 1970 00:00:00 UTC\";\n } catch (ignore) {}\n }\n\n function normalizeLevel(input) {\n var level = input;\n if (typeof level === \"string\" && self.levels[level.toUpperCase()] !== undefined) {\n level = self.levels[level.toUpperCase()];\n }\n if (typeof level === \"number\" && level >= 0 && level <= self.levels.SILENT) {\n return level;\n } else {\n throw new TypeError(\"log.setLevel() called with invalid level: \" + input);\n }\n }\n\n /*\n *\n * Public logger API - see https://github.com/pimterry/loglevel for details\n *\n */\n\n self.name = name;\n\n self.levels = { \"TRACE\": 0, \"DEBUG\": 1, \"INFO\": 2, \"WARN\": 3,\n \"ERROR\": 4, \"SILENT\": 5};\n\n self.methodFactory = factory || defaultMethodFactory;\n\n self.getLevel = function () {\n if (userLevel != null) {\n return userLevel;\n } else if (defaultLevel != null) {\n return defaultLevel;\n } else {\n return inheritedLevel;\n }\n };\n\n self.setLevel = function (level, persist) {\n userLevel = normalizeLevel(level);\n if (persist !== false) { // defaults to true\n persistLevelIfPossible(userLevel);\n }\n\n // NOTE: in v2, this should call rebuild(), which updates children.\n return replaceLoggingMethods.call(self);\n };\n\n self.setDefaultLevel = function (level) {\n defaultLevel = normalizeLevel(level);\n if (!getPersistedLevel()) {\n self.setLevel(level, false);\n }\n };\n\n self.resetLevel = function () {\n userLevel = null;\n clearPersistedLevel();\n replaceLoggingMethods.call(self);\n };\n\n self.enableAll = function(persist) {\n self.setLevel(self.levels.TRACE, persist);\n };\n\n self.disableAll = function(persist) {\n self.setLevel(self.levels.SILENT, persist);\n };\n\n self.rebuild = function () {\n if (defaultLogger !== self) {\n inheritedLevel = normalizeLevel(defaultLogger.getLevel());\n }\n replaceLoggingMethods.call(self);\n\n if (defaultLogger === self) {\n for (var childName in _loggersByName) {\n _loggersByName[childName].rebuild();\n }\n }\n };\n\n // Initialize all the internal levels.\n inheritedLevel = normalizeLevel(\n defaultLogger ? defaultLogger.getLevel() : \"WARN\"\n );\n var initialLevel = getPersistedLevel();\n if (initialLevel != null) {\n userLevel = normalizeLevel(initialLevel);\n }\n replaceLoggingMethods.call(self);\n }\n\n /*\n *\n * Top-level API\n *\n */\n\n defaultLogger = new Logger();\n\n defaultLogger.getLogger = function getLogger(name) {\n if ((typeof name !== \"symbol\" && typeof name !== \"string\") || name === \"\") {\n throw new TypeError(\"You must supply a name when creating a logger.\");\n }\n\n var logger = _loggersByName[name];\n if (!logger) {\n logger = _loggersByName[name] = new Logger(\n name,\n defaultLogger.methodFactory\n );\n }\n return logger;\n };\n\n // Grab the current global log variable in case of overwrite\n var _log = (typeof window !== undefinedType) ? window.log : undefined;\n defaultLogger.noConflict = function() {\n if (typeof window !== undefinedType &&\n window.log === defaultLogger) {\n window.log = _log;\n }\n\n return defaultLogger;\n };\n\n defaultLogger.getLoggers = function getLoggers() {\n return _loggersByName;\n };\n\n // ES6 default export, for compatibility\n defaultLogger['default'] = defaultLogger;\n\n return defaultLogger;\n}));\n","import loglevel$1 from 'loglevel';\n\nvar loglevel = loglevel$1.getLogger(\"web3auth-logger\");\n\nexport { loglevel as default };\n","/**\n * Assertion helpers\n * @module\n */\nfunction anumber(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error('positive integer expected, got ' + n);\n}\n// copied from utils\nfunction isBytes(a) {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\nfunction abytes(b, ...lengths) {\n if (!isBytes(b))\n throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\nfunction ahash(h) {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n anumber(h.outputLen);\n anumber(h.blockLen);\n}\nfunction aexists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nfunction aoutput(out, instance) {\n abytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error('digestInto() expects output buffer of length at least ' + min);\n }\n}\nexport { anumber, abytes, ahash, aexists, aoutput };\n//# sourceMappingURL=_assert.js.map","export const crypto = typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n//# sourceMappingURL=crypto.js.map","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\nimport { abytes } from './_assert.js';\n// export { isBytes } from './_assert.js';\n// We can't reuse isBytes from _assert, because somehow this causes huge perf issues\nexport function isBytes(a) {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n/** The rotate right (circular right shift) operation for uint32 */\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\n/** The rotate left (circular left shift) operation for uint32 */\nexport const rotl = (word, shift) => (word << shift) | ((word >>> (32 - shift)) >>> 0);\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE = /* @__PURE__ */ (() => new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n// The byte swap operation for uint32\nexport const byteSwap = (word) => ((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff);\n/** Conditionally byte swap if on a big-endian platform */\nexport const byteSwapIfBE = isLE\n ? (n) => n\n : (n) => byteSwap(n);\n/** In place byte swap for Uint32Array */\nexport function byteSwap32(arr) {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n}\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * Convert byte array to hex string.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n abytes(bytes);\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 };\nfunction asciiToBase16(ch) {\n if (ch >= asciis._0 && ch <= asciis._9)\n return ch - asciis._0; // '2' => 50-48\n if (ch >= asciis.A && ch <= asciis.F)\n return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n if (ch >= asciis.a && ch <= asciis.f)\n return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n return;\n}\n/**\n * Convert hex string to byte array.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new Error('hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n }\n return array;\n}\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => { };\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\n/**\n * Convert JS string to byte array.\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error('utf8ToBytes expected string, got ' + typeof str);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n// For runtime check if class implements interface\nexport class Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nexport function wrapConstructor(hashCons) {\n const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexport function wrapXOFConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32) {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n // Legacy Node.js compatibility\n if (crypto && typeof crypto.randomBytes === 'function') {\n return crypto.randomBytes(bytesLength);\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","import { aexists, aoutput } from './_assert.js';\nimport { Hash, createView, toBytes } from './utils.js';\n/**\n * Merkle-Damgard hash utils.\n * @module\n */\n/**\n * Polyfill for Safari 14\n */\nexport function setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n/**\n * Choice: a ? b : c\n */\nexport const Chi = (a, b, c) => (a & b) ^ (~a & c);\n/**\n * Majority function, true if any two inputs is true\n */\nexport const Maj = (a, b, c) => (a & b) ^ (a & c) ^ (b & c);\n/**\n * Merkle-Damgard hash construction base class.\n * Could be used to create MD5, RIPEMD, SHA1, SHA2.\n */\nexport class HashMD extends Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data) {\n aexists(this);\n const { view, buffer, blockLen } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n aexists(this);\n aoutput(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in\n // current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4)\n throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length)\n throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++)\n oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n}\n//# sourceMappingURL=_md.js.map","import { HashMD, Chi, Maj } from './_md.js';\nimport { rotr, wrapConstructor } from './utils.js';\n/**\n * SHA2-256 a.k.a. sha256. In JS, it is the fastest hash, even faster than Blake3.\n *\n * To break sha256 using birthday attack, attackers need to try 2^128 hashes.\n * BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.\n *\n * Check out [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).\n * @module\n */\n/** Round constants: first 32 bits of fractional parts of the cube roots of the first 64 primes 2..311). */\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n/** Initial state: first 32 bits of fractional parts of the square roots of the first 8 primes 2..19. */\n// prettier-ignore\nconst SHA256_IV = /* @__PURE__ */ new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n/**\n * Temporary buffer, not used to store anything between runs.\n * Named this way because it matches specification.\n */\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nexport class SHA256 extends HashMD {\n constructor() {\n super(64, 32, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = SHA256_IV[0] | 0;\n this.B = SHA256_IV[1] | 0;\n this.C = SHA256_IV[2] | 0;\n this.D = SHA256_IV[3] | 0;\n this.E = SHA256_IV[4] | 0;\n this.F = SHA256_IV[5] | 0;\n this.G = SHA256_IV[6] | 0;\n this.H = SHA256_IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n/**\n * Constants taken from https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf.\n */\nclass SHA224 extends SHA256 {\n constructor() {\n super();\n this.A = 0xc1059ed8 | 0;\n this.B = 0x367cd507 | 0;\n this.C = 0x3070dd17 | 0;\n this.D = 0xf70e5939 | 0;\n this.E = 0xffc00b31 | 0;\n this.F = 0x68581511 | 0;\n this.G = 0x64f98fa7 | 0;\n this.H = 0xbefa4fa4 | 0;\n this.outputLen = 28;\n }\n}\n/** SHA2-256 hash function */\nexport const sha256 = /* @__PURE__ */ wrapConstructor(() => new SHA256());\n/** SHA2-224 hash function */\nexport const sha224 = /* @__PURE__ */ wrapConstructor(() => new SHA224());\n//# sourceMappingURL=sha256.js.map","\"use strict\";\n/**\n * Assertion helpers\n * @module\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.anumber = anumber;\nexports.abytes = abytes;\nexports.ahash = ahash;\nexports.aexists = aexists;\nexports.aoutput = aoutput;\nfunction anumber(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error('positive integer expected, got ' + n);\n}\n// copied from utils\nfunction isBytes(a) {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\nfunction abytes(b, ...lengths) {\n if (!isBytes(b))\n throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\nfunction ahash(h) {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n anumber(h.outputLen);\n anumber(h.blockLen);\n}\nfunction aexists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nfunction aoutput(out, instance) {\n abytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error('digestInto() expects output buffer of length at least ' + min);\n }\n}\n//# sourceMappingURL=_assert.js.map","\"use strict\";\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Hash = exports.nextTick = exports.byteSwapIfBE = exports.byteSwap = exports.isLE = exports.rotl = exports.rotr = exports.createView = exports.u32 = exports.u8 = void 0;\nexports.isBytes = isBytes;\nexports.byteSwap32 = byteSwap32;\nexports.bytesToHex = bytesToHex;\nexports.hexToBytes = hexToBytes;\nexports.asyncLoop = asyncLoop;\nexports.utf8ToBytes = utf8ToBytes;\nexports.toBytes = toBytes;\nexports.concatBytes = concatBytes;\nexports.checkOpts = checkOpts;\nexports.wrapConstructor = wrapConstructor;\nexports.wrapConstructorWithOpts = wrapConstructorWithOpts;\nexports.wrapXOFConstructorWithOpts = wrapXOFConstructorWithOpts;\nexports.randomBytes = randomBytes;\n/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nconst crypto_1 = require(\"@noble/hashes/crypto\");\nconst _assert_js_1 = require(\"./_assert.js\");\n// export { isBytes } from './_assert.js';\n// We can't reuse isBytes from _assert, because somehow this causes huge perf issues\nfunction isBytes(a) {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n// Cast array to different type\nconst u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexports.u8 = u8;\nconst u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\nexports.u32 = u32;\n// Cast array to view\nconst createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\nexports.createView = createView;\n/** The rotate right (circular right shift) operation for uint32 */\nconst rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\nexports.rotr = rotr;\n/** The rotate left (circular left shift) operation for uint32 */\nconst rotl = (word, shift) => (word << shift) | ((word >>> (32 - shift)) >>> 0);\nexports.rotl = rotl;\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexports.isLE = (() => new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n// The byte swap operation for uint32\nconst byteSwap = (word) => ((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff);\nexports.byteSwap = byteSwap;\n/** Conditionally byte swap if on a big-endian platform */\nexports.byteSwapIfBE = exports.isLE\n ? (n) => n\n : (n) => (0, exports.byteSwap)(n);\n/** In place byte swap for Uint32Array */\nfunction byteSwap32(arr) {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = (0, exports.byteSwap)(arr[i]);\n }\n}\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * Convert byte array to hex string.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nfunction bytesToHex(bytes) {\n (0, _assert_js_1.abytes)(bytes);\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 };\nfunction asciiToBase16(ch) {\n if (ch >= asciis._0 && ch <= asciis._9)\n return ch - asciis._0; // '2' => 50-48\n if (ch >= asciis.A && ch <= asciis.F)\n return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n if (ch >= asciis.a && ch <= asciis.f)\n return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n return;\n}\n/**\n * Convert hex string to byte array.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nfunction hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new Error('hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n }\n return array;\n}\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nconst nextTick = async () => { };\nexports.nextTick = nextTick;\n// Returns control to thread each 'tick' ms to avoid blocking\nasync function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await (0, exports.nextTick)();\n ts += diff;\n }\n}\n/**\n * Convert JS string to byte array.\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nfunction utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error('utf8ToBytes expected string, got ' + typeof str);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nfunction toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n (0, _assert_js_1.abytes)(data);\n return data;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nfunction concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n (0, _assert_js_1.abytes)(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n// For runtime check if class implements interface\nclass Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\nexports.Hash = Hash;\nfunction checkOpts(defaults, opts) {\n if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nfunction wrapConstructor(hashCons) {\n const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\nfunction wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nfunction wrapXOFConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nfunction randomBytes(bytesLength = 32) {\n if (crypto_1.crypto && typeof crypto_1.crypto.getRandomValues === 'function') {\n return crypto_1.crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n // Legacy Node.js compatibility\n if (crypto_1.crypto && typeof crypto_1.crypto.randomBytes === 'function') {\n return crypto_1.crypto.randomBytes(bytesLength);\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HashMD = exports.Maj = exports.Chi = void 0;\nexports.setBigUint64 = setBigUint64;\nconst _assert_js_1 = require(\"./_assert.js\");\nconst utils_js_1 = require(\"./utils.js\");\n/**\n * Merkle-Damgard hash utils.\n * @module\n */\n/**\n * Polyfill for Safari 14\n */\nfunction setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n/**\n * Choice: a ? b : c\n */\nconst Chi = (a, b, c) => (a & b) ^ (~a & c);\nexports.Chi = Chi;\n/**\n * Majority function, true if any two inputs is true\n */\nconst Maj = (a, b, c) => (a & b) ^ (a & c) ^ (b & c);\nexports.Maj = Maj;\n/**\n * Merkle-Damgard hash construction base class.\n * Could be used to create MD5, RIPEMD, SHA1, SHA2.\n */\nclass HashMD extends utils_js_1.Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.buffer = new Uint8Array(blockLen);\n this.view = (0, utils_js_1.createView)(this.buffer);\n }\n update(data) {\n (0, _assert_js_1.aexists)(this);\n const { view, buffer, blockLen } = this;\n data = (0, utils_js_1.toBytes)(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = (0, utils_js_1.createView)(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n (0, _assert_js_1.aexists)(this);\n (0, _assert_js_1.aoutput)(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in\n // current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = (0, utils_js_1.createView)(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4)\n throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length)\n throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++)\n oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n}\nexports.HashMD = HashMD;\n//# sourceMappingURL=_md.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.add5L = exports.add5H = exports.add4H = exports.add4L = exports.add3H = exports.add3L = exports.rotlBL = exports.rotlBH = exports.rotlSL = exports.rotlSH = exports.rotr32L = exports.rotr32H = exports.rotrBL = exports.rotrBH = exports.rotrSL = exports.rotrSH = exports.shrSL = exports.shrSH = exports.toBig = void 0;\nexports.fromBig = fromBig;\nexports.split = split;\nexports.add = add;\nconst U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n/**\n * BigUint64Array is too slow as per 2024, so we implement it using Uint32Array.\n * @todo re-check https://issues.chromium.org/issues/42212588\n * @module\n */\nfunction fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\nexports.toBig = toBig;\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nexports.shrSH = shrSH;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\nexports.shrSL = shrSL;\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nexports.rotrSH = rotrSH;\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\nexports.rotrSL = rotrSL;\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nexports.rotrBH = rotrBH;\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\nexports.rotrBL = rotrBL;\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nexports.rotr32H = rotr32H;\nconst rotr32L = (h, _l) => h;\nexports.rotr32L = rotr32L;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nexports.rotlSH = rotlSH;\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\nexports.rotlSL = rotlSL;\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nexports.rotlBH = rotlBH;\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\nexports.rotlBL = rotlBL;\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nexports.add3L = add3L;\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nexports.add3H = add3H;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nexports.add4L = add4L;\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nexports.add4H = add4H;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nexports.add5L = add5L;\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\nexports.add5H = add5H;\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexports.default = u64;\n//# sourceMappingURL=_u64.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sha384 = exports.sha512_256 = exports.sha512_224 = exports.sha512 = exports.SHA384 = exports.SHA512_256 = exports.SHA512_224 = exports.SHA512 = void 0;\nconst _md_js_1 = require(\"./_md.js\");\nconst _u64_js_1 = require(\"./_u64.js\");\nconst utils_js_1 = require(\"./utils.js\");\n/**\n * SHA2-512 a.k.a. sha512 and sha384. It is slower than sha256 in js because u64 operations are slow.\n *\n * Check out [RFC 4634](https://datatracker.ietf.org/doc/html/rfc4634) and\n * [the paper on truncated SHA512/256](https://eprint.iacr.org/2010/548.pdf).\n * @module\n */\n// Round contants (first 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409):\n// prettier-ignore\nconst [SHA512_Kh, SHA512_Kl] = /* @__PURE__ */ (() => _u64_js_1.default.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\n// Temporary buffer, not used to store anything between runs\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\nclass SHA512 extends _md_js_1.HashMD {\n constructor() {\n super(128, 64, 16, false);\n // We cannot use array here since array allows indexing by variable which means optimizer/compiler cannot use registers.\n // Also looks cleaner and easier to verify with spec.\n // Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x6a09e667 | 0;\n this.Al = 0xf3bcc908 | 0;\n this.Bh = 0xbb67ae85 | 0;\n this.Bl = 0x84caa73b | 0;\n this.Ch = 0x3c6ef372 | 0;\n this.Cl = 0xfe94f82b | 0;\n this.Dh = 0xa54ff53a | 0;\n this.Dl = 0x5f1d36f1 | 0;\n this.Eh = 0x510e527f | 0;\n this.El = 0xade682d1 | 0;\n this.Fh = 0x9b05688c | 0;\n this.Fl = 0x2b3e6c1f | 0;\n this.Gh = 0x1f83d9ab | 0;\n this.Gl = 0xfb41bd6b | 0;\n this.Hh = 0x5be0cd19 | 0;\n this.Hl = 0x137e2179 | 0;\n }\n // prettier-ignore\n get() {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = _u64_js_1.default.rotrSH(W15h, W15l, 1) ^ _u64_js_1.default.rotrSH(W15h, W15l, 8) ^ _u64_js_1.default.shrSH(W15h, W15l, 7);\n const s0l = _u64_js_1.default.rotrSL(W15h, W15l, 1) ^ _u64_js_1.default.rotrSL(W15h, W15l, 8) ^ _u64_js_1.default.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = _u64_js_1.default.rotrSH(W2h, W2l, 19) ^ _u64_js_1.default.rotrBH(W2h, W2l, 61) ^ _u64_js_1.default.shrSH(W2h, W2l, 6);\n const s1l = _u64_js_1.default.rotrSL(W2h, W2l, 19) ^ _u64_js_1.default.rotrBL(W2h, W2l, 61) ^ _u64_js_1.default.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = _u64_js_1.default.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = _u64_js_1.default.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = _u64_js_1.default.rotrSH(Eh, El, 14) ^ _u64_js_1.default.rotrSH(Eh, El, 18) ^ _u64_js_1.default.rotrBH(Eh, El, 41);\n const sigma1l = _u64_js_1.default.rotrSL(Eh, El, 14) ^ _u64_js_1.default.rotrSL(Eh, El, 18) ^ _u64_js_1.default.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = _u64_js_1.default.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = _u64_js_1.default.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = _u64_js_1.default.rotrSH(Ah, Al, 28) ^ _u64_js_1.default.rotrBH(Ah, Al, 34) ^ _u64_js_1.default.rotrBH(Ah, Al, 39);\n const sigma0l = _u64_js_1.default.rotrSL(Ah, Al, 28) ^ _u64_js_1.default.rotrBL(Ah, Al, 34) ^ _u64_js_1.default.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = _u64_js_1.default.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = _u64_js_1.default.add3L(T1l, sigma0l, MAJl);\n Ah = _u64_js_1.default.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = _u64_js_1.default.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = _u64_js_1.default.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = _u64_js_1.default.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = _u64_js_1.default.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = _u64_js_1.default.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = _u64_js_1.default.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = _u64_js_1.default.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = _u64_js_1.default.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n roundClean() {\n SHA512_W_H.fill(0);\n SHA512_W_L.fill(0);\n }\n destroy() {\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\nexports.SHA512 = SHA512;\nclass SHA512_224 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x8c3d37c8 | 0;\n this.Al = 0x19544da2 | 0;\n this.Bh = 0x73e19966 | 0;\n this.Bl = 0x89dcd4d6 | 0;\n this.Ch = 0x1dfab7ae | 0;\n this.Cl = 0x32ff9c82 | 0;\n this.Dh = 0x679dd514 | 0;\n this.Dl = 0x582f9fcf | 0;\n this.Eh = 0x0f6d2b69 | 0;\n this.El = 0x7bd44da8 | 0;\n this.Fh = 0x77e36f73 | 0;\n this.Fl = 0x04c48942 | 0;\n this.Gh = 0x3f9d85a8 | 0;\n this.Gl = 0x6a1d36c8 | 0;\n this.Hh = 0x1112e6ad | 0;\n this.Hl = 0x91d692a1 | 0;\n this.outputLen = 28;\n }\n}\nexports.SHA512_224 = SHA512_224;\nclass SHA512_256 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x22312194 | 0;\n this.Al = 0xfc2bf72c | 0;\n this.Bh = 0x9f555fa3 | 0;\n this.Bl = 0xc84c64c2 | 0;\n this.Ch = 0x2393b86b | 0;\n this.Cl = 0x6f53b151 | 0;\n this.Dh = 0x96387719 | 0;\n this.Dl = 0x5940eabd | 0;\n this.Eh = 0x96283ee2 | 0;\n this.El = 0xa88effe3 | 0;\n this.Fh = 0xbe5e1e25 | 0;\n this.Fl = 0x53863992 | 0;\n this.Gh = 0x2b0199fc | 0;\n this.Gl = 0x2c85b8aa | 0;\n this.Hh = 0x0eb72ddc | 0;\n this.Hl = 0x81c52ca2 | 0;\n this.outputLen = 32;\n }\n}\nexports.SHA512_256 = SHA512_256;\nclass SHA384 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0xcbbb9d5d | 0;\n this.Al = 0xc1059ed8 | 0;\n this.Bh = 0x629a292a | 0;\n this.Bl = 0x367cd507 | 0;\n this.Ch = 0x9159015a | 0;\n this.Cl = 0x3070dd17 | 0;\n this.Dh = 0x152fecd8 | 0;\n this.Dl = 0xf70e5939 | 0;\n this.Eh = 0x67332667 | 0;\n this.El = 0xffc00b31 | 0;\n this.Fh = 0x8eb44a87 | 0;\n this.Fl = 0x68581511 | 0;\n this.Gh = 0xdb0c2e0d | 0;\n this.Gl = 0x64f98fa7 | 0;\n this.Hh = 0x47b5481d | 0;\n this.Hl = 0xbefa4fa4 | 0;\n this.outputLen = 48;\n }\n}\nexports.SHA384 = SHA384;\n/** SHA2-512 hash function. */\nexports.sha512 = (0, utils_js_1.wrapConstructor)(() => new SHA512());\n/** SHA2-512/224 \"truncated\" hash function, with improved resistance to length extension attacks. */\nexports.sha512_224 = (0, utils_js_1.wrapConstructor)(() => new SHA512_224());\n/** SHA2-512/256 \"truncated\" hash function, with improved resistance to length extension attacks. */\nexports.sha512_256 = (0, utils_js_1.wrapConstructor)(() => new SHA512_256());\n/** SHA2-384 hash function. */\nexports.sha384 = (0, utils_js_1.wrapConstructor)(() => new SHA384());\n//# sourceMappingURL=sha512.js.map","export default {}","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","'use strict';\n\n/** @type {import('./shams')} */\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\t/** @type {{ [k in symbol]?: unknown }} */\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym));\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Object;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\n/** @type {import('./abs')} */\nmodule.exports = Math.abs;\n","'use strict';\n\n/** @type {import('./floor')} */\nmodule.exports = Math.floor;\n","'use strict';\n\n/** @type {import('./max')} */\nmodule.exports = Math.max;\n","'use strict';\n\n/** @type {import('./min')} */\nmodule.exports = Math.min;\n","'use strict';\n\n/** @type {import('./pow')} */\nmodule.exports = Math.pow;\n","'use strict';\n\n/** @type {import('./round')} */\nmodule.exports = Math.round;\n","'use strict';\n\n/** @type {import('./isNaN')} */\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n","'use strict';\n\nvar $isNaN = require('./isNaN');\n\n/** @type {import('./sign')} */\nmodule.exports = function sign(number) {\n\tif ($isNaN(number) || number === 0) {\n\t\treturn number;\n\t}\n\treturn number < 0 ? -1 : +1;\n};\n","'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n","'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\n/** @type {import('.')} */\nvar $defineProperty = Object.defineProperty || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/** @type {import('./Reflect.getPrototypeOf')} */\nmodule.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;\n","'use strict';\n\nvar $Object = require('es-object-atoms');\n\n/** @type {import('./Object.getPrototypeOf')} */\nmodule.exports = $Object.getPrototypeOf || null;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\n/** @type {import('./functionCall')} */\nmodule.exports = Function.prototype.call;\n","'use strict';\n\n/** @type {import('./functionApply')} */\nmodule.exports = Function.prototype.apply;\n","'use strict';\n\n/** @type {import('./reflectApply')} */\nmodule.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;\n","'use strict';\n\nvar bind = require('function-bind');\n\nvar $apply = require('./functionApply');\nvar $call = require('./functionCall');\nvar $reflectApply = require('./reflectApply');\n\n/** @type {import('./actualApply')} */\nmodule.exports = $reflectApply || bind.call($call, $apply);\n","'use strict';\n\nvar bind = require('function-bind');\nvar $TypeError = require('es-errors/type');\n\nvar $call = require('./functionCall');\nvar $actualApply = require('./actualApply');\n\n/** @type {import('.')} */\nmodule.exports = function callBindBasic(args) {\n\tif (args.length < 1 || typeof args[0] !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\treturn $actualApply(bind, $call, args);\n};\n","'use strict';\n\nvar callBind = require('call-bind-apply-helpers');\nvar gOPD = require('gopd');\n\nvar hasProtoAccessor;\ntry {\n\t// eslint-disable-next-line no-extra-parens, no-proto\n\thasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;\n} catch (e) {\n\tif (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {\n\t\tthrow e;\n\t}\n}\n\n// eslint-disable-next-line no-extra-parens\nvar desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));\n\nvar $Object = Object;\nvar $getPrototypeOf = $Object.getPrototypeOf;\n\n/** @type {import('./get')} */\nmodule.exports = desc && typeof desc.get === 'function'\n\t? callBind([desc.get])\n\t: typeof $getPrototypeOf === 'function'\n\t\t? /** @type {import('./get')} */ function getDunder(value) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\treturn $getPrototypeOf(value == null ? value : $Object(value));\n\t\t}\n\t\t: false;\n","'use strict';\n\nvar reflectGetProto = require('./Reflect.getPrototypeOf');\nvar originalGetProto = require('./Object.getPrototypeOf');\n\nvar getDunderProto = require('dunder-proto/get');\n\n/** @type {import('.')} */\nmodule.exports = reflectGetProto\n\t? function getProto(O) {\n\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\treturn reflectGetProto(O);\n\t}\n\t: originalGetProto\n\t\t? function getProto(O) {\n\t\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\t\tthrow new TypeError('getProto: not an object');\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\treturn originalGetProto(O);\n\t\t}\n\t\t: getDunderProto\n\t\t\t? function getProto(O) {\n\t\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\t\treturn getDunderProto(O);\n\t\t\t}\n\t\t\t: null;\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","'use strict';\n\nvar undefined;\n\nvar $Object = require('es-object-atoms');\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar abs = require('math-intrinsics/abs');\nvar floor = require('math-intrinsics/floor');\nvar max = require('math-intrinsics/max');\nvar min = require('math-intrinsics/min');\nvar pow = require('math-intrinsics/pow');\nvar round = require('math-intrinsics/round');\nvar sign = require('math-intrinsics/sign');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = require('gopd');\nvar $defineProperty = require('es-define-property');\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = require('get-proto');\nvar $ObjectGPO = require('get-proto/Object.getPrototypeOf');\nvar $ReflectGPO = require('get-proto/Reflect.getPrototypeOf');\n\nvar $apply = require('call-bind-apply-helpers/functionApply');\nvar $call = require('call-bind-apply-helpers/functionCall');\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': $Object,\n\t'%Object.getOwnPropertyDescriptor%': $gOPD,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\n\t'%Function.prototype.call%': $call,\n\t'%Function.prototype.apply%': $apply,\n\t'%Object.defineProperty%': $defineProperty,\n\t'%Object.getPrototypeOf%': $ObjectGPO,\n\t'%Math.abs%': abs,\n\t'%Math.floor%': floor,\n\t'%Math.max%': max,\n\t'%Math.min%': min,\n\t'%Math.pow%': pow,\n\t'%Math.round%': round,\n\t'%Math.sign%': sign,\n\t'%Reflect.getPrototypeOf%': $ReflectGPO\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call($call, Array.prototype.concat);\nvar $spliceApply = bind.call($apply, Array.prototype.splice);\nvar $replace = bind.call($call, String.prototype.replace);\nvar $strSlice = bind.call($call, String.prototype.slice);\nvar $exec = bind.call($call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBindBasic = require('call-bind-apply-helpers');\n\n/** @type {(thisArg: string, searchString: string, position?: number) => number} */\nvar $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]);\n\n/** @type {import('.')} */\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\t// eslint-disable-next-line no-extra-parens\n\tvar intrinsic = /** @type {Parameters[0][0]} */ (GetIntrinsic(name, !!allowMissing));\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBindBasic([intrinsic]);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar $apply = require('./functionApply');\nvar actualApply = require('./actualApply');\n\n/** @type {import('./applyBind')} */\nmodule.exports = function applyBind() {\n\treturn actualApply(bind, $apply, arguments);\n};\n","'use strict';\n\nvar setFunctionLength = require('set-function-length');\n\nvar $defineProperty = require('es-define-property');\n\nvar callBindBasic = require('call-bind-apply-helpers');\nvar applyBind = require('call-bind-apply-helpers/applyBind');\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = callBindBasic(arguments);\n\tvar adjustedLength = originalFunction.length - (arguments.length - 1);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + (adjustedLength > 0 ? adjustedLength : 0),\n\t\ttrue\n\t);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n var i;\n for (i = 0; i < naf.length; i += 1) {\n naf[i] = 0;\n }\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature, options) {\n return this.ec.verify(msg, signature, this, undefined, options);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n if(buf[p.place] === 0x00) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n if ((data[p.place] & 128) !== 0) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n if ((data[p.place] & 128) !== 0) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly, bitLength) {\n var byteLength;\n if (BN.isBN(msg) || typeof msg === 'number') {\n msg = new BN(msg, 16);\n byteLength = msg.byteLength();\n } else if (typeof msg === 'object') {\n // BN assumes an array-like input and asserts length\n byteLength = msg.length;\n msg = new BN(msg, 16);\n } else {\n // BN converts the value to string\n var str = msg.toString();\n // HEX encoding\n byteLength = (str.length + 1) >>> 1;\n msg = new BN(str, 16);\n }\n // Allow overriding\n if (typeof bitLength !== 'number') {\n bitLength = byteLength * 8;\n }\n var delta = bitLength - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n if (typeof msg !== 'string' && typeof msg !== 'number' && !BN.isBN(msg)) {\n assert(typeof msg === 'object' && msg && typeof msg.length === 'number',\n 'Expected message to be an array-like, a hex string, or a BN instance');\n assert((msg.length >>> 0) === msg.length); // non-negative 32-bit integer\n for (var i = 0; i < msg.length; i++) assert((msg[i] & 255) === msg[i]);\n }\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(msg, false, options.msgBitLength);\n\n // Would fail further checks, but let's make the error message clear\n assert(!msg.isNeg(), 'Can not sign a negative message');\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Recheck nonce to be bijective to msg\n assert((new BN(nonce)).eq(msg), 'Can not sign message');\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc, options) {\n if (!options)\n options = {};\n\n msg = this._truncateToN(msg, false, options.msgBitLength);\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n assert(sig.length === eddsa.encodingLength * 2, 'Signature has invalid size');\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength),\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n","'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n if (sig.S().gte(sig.eddsa.curve.n) || sig.S().isNeg()) {\n return false;\n }\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","import log from 'loglevel';\n\nconst loglevel = log.getLogger(\"auth\");\nloglevel.setLevel(\"error\");\n\nexport { loglevel };\n","const TORUS_LEGACY_NETWORK = {\n MAINNET: \"mainnet\",\n TESTNET: \"testnet\",\n CYAN: \"cyan\",\n AQUA: \"aqua\",\n CELESTE: \"celeste\"\n};\nconst TORUS_SAPPHIRE_NETWORK = {\n SAPPHIRE_DEVNET: \"sapphire_devnet\",\n SAPPHIRE_MAINNET: \"sapphire_mainnet\"\n};\nconst PROXY_CONTRACT_ADDRESS = {\n [TORUS_LEGACY_NETWORK.MAINNET]: \"0xf20336e16B5182637f09821c27BDe29b0AFcfe80\",\n [TORUS_LEGACY_NETWORK.TESTNET]: \"0xd084604e5FA387FbC2Da8bAab07fDD6aDED4614A\",\n [TORUS_LEGACY_NETWORK.CYAN]: \"0x9f072ba19b3370e512aa1b4bfcdaf97283168005\",\n [TORUS_LEGACY_NETWORK.AQUA]: \"0x29Dea82a0509153b91040ee13cDBba0f03efb625\",\n [TORUS_LEGACY_NETWORK.CELESTE]: \"0x6Bffb4e89453069E7487f0fa5c9f4a2D771cce6c\"\n};\nconst MULTI_CLUSTER_NETWORKS = [\n // TORUS_LEGACY_NETWORK.AQUA,\n // TORUS_LEGACY_NETWORK.CELESTE,\n // TORUS_LEGACY_NETWORK.CYAN,\n];\nconst LEGACY_NETWORKS_ROUTE_MAP = {\n [TORUS_LEGACY_NETWORK.AQUA]: {\n migrationCompleted: true,\n networkIdentifier: \"aqua\",\n networkMigratedTo: TORUS_SAPPHIRE_NETWORK.SAPPHIRE_MAINNET\n },\n [TORUS_LEGACY_NETWORK.CELESTE]: {\n migrationCompleted: true,\n networkIdentifier: \"celeste\",\n networkMigratedTo: TORUS_SAPPHIRE_NETWORK.SAPPHIRE_MAINNET\n },\n [TORUS_LEGACY_NETWORK.CYAN]: {\n migrationCompleted: true,\n networkIdentifier: \"cyan\",\n networkMigratedTo: TORUS_SAPPHIRE_NETWORK.SAPPHIRE_MAINNET\n },\n [TORUS_LEGACY_NETWORK.MAINNET]: {\n migrationCompleted: true,\n networkIdentifier: \"mainnet\",\n networkMigratedTo: TORUS_SAPPHIRE_NETWORK.SAPPHIRE_MAINNET\n },\n [TORUS_LEGACY_NETWORK.TESTNET]: {\n migrationCompleted: true,\n networkIdentifier: \"teal\",\n networkMigratedTo: TORUS_SAPPHIRE_NETWORK.SAPPHIRE_DEVNET\n }\n};\nconst NETWORK_MAP = {\n [TORUS_LEGACY_NETWORK.MAINNET]: \"mainnet\",\n [TORUS_LEGACY_NETWORK.TESTNET]: \"goerli\",\n [TORUS_LEGACY_NETWORK.CYAN]: \"polygon-mainnet\",\n [TORUS_LEGACY_NETWORK.AQUA]: \"polygon-mainnet\",\n [TORUS_LEGACY_NETWORK.CELESTE]: \"polygon-mainnet\"\n};\nconst SIGNER_MAP = {\n [TORUS_SAPPHIRE_NETWORK.SAPPHIRE_MAINNET]: \"https://api.web3auth.io/signer-service\",\n [TORUS_SAPPHIRE_NETWORK.SAPPHIRE_DEVNET]: \"https://api.web3auth.io/signer-service\",\n [TORUS_LEGACY_NETWORK.MAINNET]: \"https://api.web3auth.io/signer-service\",\n [TORUS_LEGACY_NETWORK.TESTNET]: \"https://api.web3auth.io/signer-service\",\n [TORUS_LEGACY_NETWORK.CYAN]: \"https://api.web3auth.io/signer-polygon-service\",\n [TORUS_LEGACY_NETWORK.AQUA]: \"https://api.web3auth.io/signer-polygon-service\",\n [TORUS_LEGACY_NETWORK.CELESTE]: \"https://api.web3auth.io/signer-polygon-service\"\n};\nconst METADATA_MAP = {\n [TORUS_LEGACY_NETWORK.MAINNET]: \"https://api.web3auth.io/metadata-service\",\n [TORUS_LEGACY_NETWORK.TESTNET]: \"https://api.web3auth.io/metadata-service\",\n [TORUS_LEGACY_NETWORK.CYAN]: \"https://api.web3auth.io/metadata-service\",\n [TORUS_LEGACY_NETWORK.AQUA]: \"https://api.web3auth.io/metadata-service\",\n [TORUS_LEGACY_NETWORK.CELESTE]: \"https://api.web3auth.io/metadata-service\"\n};\n\n// FND backend service\nconst FND_SERVER = \"https://api.web3auth.io/fnd-service\";\n\n// Session backend service\nconst SESSION_SERVER_API_URL = \"https://api.web3auth.io/session-service\";\nconst SESSION_SERVER_SOCKET_URL = \"https://session.web3auth.io\";\n\n// Authjs backend service\nconst AUTHJS_SERVER_URL = \"https://api.web3auth.io/authjs-service\";\nconst KEY_TYPE = {\n SECP256K1: \"secp256k1\",\n ED25519: \"ed25519\"\n};\nconst SIG_TYPE = {\n ECDSA_SECP256K1: \"ecdsa-secp256k1\",\n ED25519: \"ed25519\",\n BIP340: \"bip340\"\n};\n\nexport { AUTHJS_SERVER_URL, FND_SERVER, KEY_TYPE, LEGACY_NETWORKS_ROUTE_MAP, METADATA_MAP, MULTI_CLUSTER_NETWORKS, NETWORK_MAP, PROXY_CONTRACT_ADDRESS, SESSION_SERVER_API_URL, SESSION_SERVER_SOCKET_URL, SIGNER_MAP, SIG_TYPE, TORUS_LEGACY_NETWORK, TORUS_SAPPHIRE_NETWORK };\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","import _objectSpread from '@babel/runtime/helpers/objectSpread2';\nimport merge from 'deepmerge';\nimport logLevel, { levels } from 'loglevel';\n\nconst log = logLevel.getLogger(\"http-helpers\");\nlog.setLevel(levels.INFO);\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\n\nlet apiKey = \"torus-default\";\nlet embedHost = \"\";\n\n// #region API Keys\nconst gatewayAuthHeader = \"x-api-key\";\nconst gatewayEmbedHostHeader = \"x-embed-host\";\nlet sentry = null;\nconst tracingOrigins = [];\nconst tracingPaths = [];\nfunction enableSentryTracing(_sentry, _tracingOrigins, _tracingPaths) {\n sentry = _sentry;\n tracingOrigins.push(..._tracingOrigins);\n tracingPaths.push(..._tracingPaths);\n}\nfunction setEmbedHost(embedHost_) {\n embedHost = embedHost_;\n}\nfunction clearEmbedHost() {\n embedHost = \"\";\n}\nfunction getEmbedHost() {\n return embedHost;\n}\nfunction setAPIKey(apiKey_) {\n apiKey = apiKey_;\n}\nfunction clearAPIKey() {\n apiKey = \"torus-default\";\n}\nfunction getAPIKey() {\n return apiKey;\n}\n\n// #endregion\n\nfunction setLogLevel(level) {\n log.setLevel(level);\n}\nasync function fetchAndTrace(url, init) {\n let _url = null;\n try {\n _url = new URL(url);\n } catch {\n // ignore\n }\n if (sentry && _url && (tracingOrigins.includes(_url.origin) || tracingPaths.includes(_url.pathname))) {\n const result = await sentry.startSpan({\n name: url,\n op: \"http.client\"\n }, async () => {\n const response = await fetch(url, init);\n return response;\n });\n return result;\n }\n return fetch(url, init);\n}\nfunction getApiKeyHeaders() {\n const headers = {};\n if (apiKey) headers[gatewayAuthHeader] = apiKey;\n if (embedHost) headers[gatewayEmbedHostHeader] = embedHost;\n return headers;\n}\nfunction debugLogResponse(response) {\n log.info(`Response: ${response.status} ${response.statusText}`);\n log.info(`Url: ${response.url}`);\n}\nfunction logTracingHeader(response) {\n const tracingHeader = response.headers.get(\"x-web3-correlation-id\");\n if (tracingHeader) log.info(`Request tracing with traceID = ${tracingHeader}`);\n}\nconst promiseTimeout = async (ms, promise) => {\n let timeoutFunc = null;\n try {\n const timeout = new Promise((_resolve, reject) => {\n timeoutFunc = setTimeout(() => {\n reject(new Error(`Timed out in ${ms}ms`));\n }, ms);\n });\n const result = await Promise.race([promise, timeout]);\n // promise.race will return the first resolved promise\n // then we clear the timeout\n if (timeoutFunc != null) {\n clearTimeout(timeoutFunc);\n }\n return result;\n } catch (err) {\n // clear the timeout\n if (timeoutFunc != null) {\n clearTimeout(timeoutFunc);\n }\n // rethrow the original error\n throw err;\n }\n};\nconst get = async (url, options_ = {}, customOptions = {}) => {\n const defaultOptions = {\n mode: \"cors\",\n headers: {}\n };\n if (customOptions.useAPIKey) {\n defaultOptions.headers = _objectSpread(_objectSpread({}, defaultOptions.headers), getApiKeyHeaders());\n }\n options_.method = \"GET\";\n const options = merge(defaultOptions, options_);\n const response = await fetchAndTrace(url, options);\n if (response.ok) {\n const responseContentType = response.headers.get(\"content-type\");\n if (responseContentType !== null && responseContentType !== void 0 && responseContentType.includes(\"application/json\")) {\n return response.json();\n }\n return response.text();\n }\n debugLogResponse(response);\n throw response;\n};\nconst post = (url, data = {}, options_ = {}, customOptions = {}) => {\n const defaultOptions = {\n mode: \"cors\",\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\"\n }\n };\n if (customOptions.useAPIKey) {\n defaultOptions.headers = _objectSpread(_objectSpread({}, defaultOptions.headers), getApiKeyHeaders());\n }\n options_.method = \"POST\";\n const options = merge(defaultOptions, options_);\n\n // deep merge changes the structure of form data and url encoded data ,\n // so we should not deepmerge body data\n if (customOptions.isUrlEncodedData) {\n // for multipart request browser/client will add multipart content type\n // along with multipart boundary , so for multipart request send\n // content-type: undefined or send with multipart boundary if already known\n options.body = data;\n // If url encoded data, this must not be the content type\n if (options.headers[\"Content-Type\"] === \"application/json; charset=utf-8\") delete options.headers[\"Content-Type\"];\n } else {\n options.body = JSON.stringify(data);\n }\n return promiseTimeout(customOptions.timeout || 60000, fetchAndTrace(url, options).then(response => {\n if (customOptions.logTracingHeader) {\n logTracingHeader(response);\n }\n if (response.ok) {\n const responseContentType = response.headers.get(\"content-type\");\n if (responseContentType !== null && responseContentType !== void 0 && responseContentType.includes(\"application/json\")) {\n return response.json();\n }\n return response.text();\n }\n debugLogResponse(response);\n throw response;\n }));\n};\nconst patch = async (url, data = {}, options_ = {}, customOptions = {}) => {\n const defaultOptions = {\n mode: \"cors\",\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\"\n }\n };\n // for multipart request browser/client will add multipart content type\n // along with multipart boundary , so for multipart request send\n // content-type: undefined or send with multipart boundary if already known\n if (customOptions.useAPIKey) {\n defaultOptions.headers = _objectSpread(_objectSpread({}, defaultOptions.headers), getApiKeyHeaders());\n }\n options_.method = \"PATCH\";\n const options = merge(defaultOptions, options_);\n // deep merge changes the structure of form data and url encoded data ,\n // so we should not deepmerge body data\n if (customOptions.isUrlEncodedData) {\n // for multipart request browser/client will add multipart content type\n // along with multipart boundary , so for multipart request send\n // content-type: undefined or send with multipart boundary if already known\n options.body = data;\n // If url encoded data, this must not be the content type\n if (options.headers[\"Content-Type\"] === \"application/json; charset=utf-8\") delete options.headers[\"Content-Type\"];\n } else {\n options.body = JSON.stringify(data);\n }\n const response = await fetchAndTrace(url, options);\n if (response.ok) {\n const responseContentType = response.headers.get(\"content-type\");\n if (responseContentType !== null && responseContentType !== void 0 && responseContentType.includes(\"application/json\")) {\n return response.json();\n }\n return response.text();\n }\n debugLogResponse(response);\n throw response;\n};\nconst put = async (url, data = {}, options_ = {}, customOptions = {}) => {\n const defaultOptions = {\n mode: \"cors\",\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\"\n }\n };\n // for multipart request browser/client will add multipart content type\n // along with multipart boundary , so for multipart request send\n // content-type: undefined or send with multipart boundary if already known\n if (customOptions.useAPIKey) {\n defaultOptions.headers = _objectSpread(_objectSpread({}, defaultOptions.headers), getApiKeyHeaders());\n }\n options_.method = \"PUT\";\n const options = merge(defaultOptions, options_);\n // deep merge changes the structure of form data and url encoded data ,\n // so we should not deepmerge body data\n if (customOptions.isUrlEncodedData) {\n // for multipart request browser/client will add multipart content type\n // along with multipart boundary , so for multipart request send\n // content-type: undefined or send with multipart boundary if already known\n options.body = data;\n // If url encoded data, this must not be the content type\n if (options.headers[\"Content-Type\"] === \"application/json; charset=utf-8\") delete options.headers[\"Content-Type\"];\n } else {\n options.body = JSON.stringify(data);\n }\n const response = await fetchAndTrace(url, options);\n if (response.ok) {\n const responseContentType = response.headers.get(\"content-type\");\n if (responseContentType !== null && responseContentType !== void 0 && responseContentType.includes(\"application/json\")) {\n return response.json();\n }\n return response.text();\n }\n debugLogResponse(response);\n throw response;\n};\nconst remove = async (url, data = {}, options_ = {}, customOptions = {}) => {\n const defaultOptions = {\n mode: \"cors\",\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\"\n }\n };\n // for multipart request browser/client will add multipart content type\n // along with multipart boundary , so for multipart request send\n // content-type: undefined or send with multipart boundary if already known\n if (customOptions.useAPIKey) {\n defaultOptions.headers = _objectSpread(_objectSpread({}, defaultOptions.headers), getApiKeyHeaders());\n }\n options_.method = \"DELETE\";\n const options = merge(defaultOptions, options_);\n if (customOptions.isUrlEncodedData) {\n // for multipart request browser/client will add multipart content type\n // along with multipart boundary , so for multipart request send\n // content-type: undefined or send with multipart boundary if already known\n options.body = data;\n // If url encoded data, this must not be the content type\n if (options.headers[\"Content-Type\"] === \"application/json; charset=utf-8\") delete options.headers[\"Content-Type\"];\n } else {\n options.body = JSON.stringify(data);\n }\n const response = await fetchAndTrace(url, options);\n if (response.ok) {\n const responseContentType = response.headers.get(\"content-type\");\n if (responseContentType !== null && responseContentType !== void 0 && responseContentType.includes(\"application/json\")) {\n return response.json();\n }\n return response.text();\n }\n debugLogResponse(response);\n throw response;\n};\nconst generateJsonRPCObject = (method, parameters) => ({\n jsonrpc: \"2.0\",\n method,\n id: 10,\n params: parameters\n});\nconst promiseRace = (url, options, timeout = 60000) => Promise.race([get(url, options), new Promise((_resolve, reject) => {\n setTimeout(() => {\n reject(new Error(\"timed out\"));\n }, timeout);\n})]);\n\nexport { clearAPIKey, clearEmbedHost, enableSentryTracing, gatewayAuthHeader, gatewayEmbedHostHeader, generateJsonRPCObject, get, getAPIKey, getEmbedHost, patch, post, promiseRace, promiseTimeout, put, remove, setAPIKey, setEmbedHost, setLogLevel };\n","const padHexString = hexString => {\n return hexString.padStart(64, \"0\").slice(0, 64);\n};\n\nexport { padHexString };\n","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport { patch, put, post, get } from '@toruslabs/http-helpers';\nimport { padHexString } from './util.js';\n\nclass BaseSessionManager {\n constructor() {\n _defineProperty(this, \"sessionId\", void 0);\n }\n checkSessionParams() {\n if (!this.sessionId) throw new Error(\"Session id is required\");\n this.sessionId = padHexString(this.sessionId);\n }\n\n /**\n * Common handler method for making an http request.\n *\n * Note: Embed all the query parameters in the path itself.\n */\n request({\n method = \"GET\",\n url,\n data = {},\n headers = {}\n }) {\n const options = {\n headers\n };\n switch (method) {\n case \"GET\":\n return get(url, options);\n case \"POST\":\n return post(url, data, options);\n case \"PUT\":\n return put(url, data, options);\n case \"PATCH\":\n return patch(url, data, options);\n }\n throw new Error(\"Invalid method type\");\n }\n}\n\nexport { BaseSessionManager };\n","import { ec as ec$1 } from 'elliptic';\n\nconst ec = new ec$1(\"secp256k1\");\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, n/no-unsupported-features/node-builtins\nconst browserCrypto = globalThis.crypto || globalThis.msCrypto || {};\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst subtle = browserCrypto.subtle || browserCrypto.webkitSubtle;\nconst EC_GROUP_ORDER = Buffer.from(\"fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141\", \"hex\");\nconst ZERO32 = Buffer.alloc(32, 0);\nfunction assert(condition, message) {\n if (!condition) {\n throw new Error(message || \"Assertion failed\");\n }\n}\nfunction isScalar(x) {\n return Buffer.isBuffer(x) && x.length === 32;\n}\nfunction isValidPrivateKey(privateKey) {\n if (!isScalar(privateKey)) {\n return false;\n }\n return privateKey.compare(ZERO32) > 0 &&\n // > 0\n privateKey.compare(EC_GROUP_ORDER) < 0; // < G\n}\n\n// Compare two buffers in constant time to prevent timing attacks.\nfunction equalConstTime(b1, b2) {\n if (b1.length !== b2.length) {\n return false;\n }\n let res = 0;\n for (let i = 0; i < b1.length; i++) {\n res |= b1[i] ^ b2[i]; // jshint ignore:line\n }\n return res === 0;\n}\n\n/* This must check if we're in the browser or\nnot, since the functions are different and does\nnot convert using browserify */\nfunction randomBytes(size) {\n if (typeof browserCrypto.getRandomValues === \"undefined\") {\n return Buffer.from(browserCrypto.randomBytes(size));\n }\n const arr = new Uint8Array(size);\n browserCrypto.getRandomValues(arr);\n return Buffer.from(arr);\n}\nasync function sha512(msg) {\n if (!browserCrypto.createHash) {\n const hash = await subtle.digest(\"SHA-512\", msg);\n const result = new Uint8Array(hash);\n return result;\n }\n const hash = browserCrypto.createHash(\"sha512\");\n const result = hash.update(msg).digest();\n return new Uint8Array(result);\n}\nfunction getAes(op) {\n return async function (iv, key, data) {\n if (subtle && subtle[op] && subtle.importKey) {\n const importAlgorithm = {\n name: \"AES-CBC\"\n };\n const cryptoKey = await subtle.importKey(\"raw\", key, importAlgorithm, false, [op]);\n const encAlgorithm = {\n name: \"AES-CBC\",\n iv\n };\n // encrypt and decrypt ops are not implemented in react-native-quick-crypto yet.\n const result = await subtle[op](encAlgorithm, cryptoKey, data);\n return Buffer.from(new Uint8Array(result));\n } else if (op === \"encrypt\" && browserCrypto.createCipheriv) {\n // This is available if crypto is polyfilled in react native environment\n const cipher = browserCrypto.createCipheriv(\"aes-256-cbc\", key, iv);\n const firstChunk = cipher.update(data);\n const secondChunk = cipher.final();\n return Buffer.concat([firstChunk, secondChunk]);\n } else if (op === \"decrypt\" && browserCrypto.createDecipheriv) {\n const decipher = browserCrypto.createDecipheriv(\"aes-256-cbc\", key, iv);\n const firstChunk = decipher.update(data);\n const secondChunk = decipher.final();\n return Buffer.concat([firstChunk, secondChunk]);\n }\n throw new Error(`Unsupported operation: ${op}`);\n };\n}\nconst aesCbcEncrypt = getAes(\"encrypt\");\nconst aesCbcDecrypt = getAes(\"decrypt\");\nasync function hmacSha256Sign(key, msg) {\n if (!browserCrypto.createHmac) {\n const importAlgorithm = {\n name: \"HMAC\",\n hash: {\n name: \"SHA-256\"\n }\n };\n const cryptoKey = await subtle.importKey(\"raw\", new Uint8Array(key), importAlgorithm, false, [\"sign\", \"verify\"]);\n const sig = await subtle.sign(\"HMAC\", cryptoKey, msg);\n const result = Buffer.from(new Uint8Array(sig));\n return result;\n }\n const hmac = browserCrypto.createHmac(\"sha256\", Buffer.from(key));\n hmac.update(msg);\n const result = hmac.digest();\n return result;\n}\nasync function hmacSha256Verify(key, msg, sig) {\n const expectedSig = await hmacSha256Sign(key, msg);\n return equalConstTime(expectedSig, sig);\n}\n\n/**\n * Generate a new valid private key. Will use the window.crypto or window.msCrypto as source\n * depending on your browser.\n */\nconst generatePrivate = function () {\n let privateKey = randomBytes(32);\n while (!isValidPrivateKey(privateKey)) {\n privateKey = randomBytes(32);\n }\n return privateKey;\n};\nconst getPublic = function (privateKey) {\n // This function has sync API so we throw an error immediately.\n assert(privateKey.length === 32, \"Bad private key\");\n assert(isValidPrivateKey(privateKey), \"Bad private key\");\n // XXX(Kagami): `elliptic.utils.encode` returns array for every\n // encoding except `hex`.\n return Buffer.from(ec.keyFromPrivate(privateKey).getPublic(\"array\"));\n};\n\n/**\n * Get compressed version of public key.\n */\nconst getPublicCompressed = function (privateKey) {\n // jshint ignore:line\n assert(privateKey.length === 32, \"Bad private key\");\n assert(isValidPrivateKey(privateKey), \"Bad private key\");\n // See https://github.com/wanderer/secp256k1-node/issues/46\n const compressed = true;\n return Buffer.from(ec.keyFromPrivate(privateKey).getPublic(compressed, \"array\"));\n};\n\n// NOTE(Kagami): We don't use promise shim in Browser implementation\n// because it's supported natively in new browsers (see\n// ) and we can use only new browsers\n// because of the WebCryptoAPI (see\n// ).\nconst sign = async function (privateKey, msg) {\n assert(privateKey.length === 32, \"Bad private key\");\n assert(isValidPrivateKey(privateKey), \"Bad private key\");\n assert(msg.length > 0, \"Message should not be empty\");\n assert(msg.length <= 32, \"Message is too long\");\n return Buffer.from(ec.sign(msg, privateKey, {\n canonical: true\n }).toDER());\n};\nconst verify = async function (publicKey, msg, sig) {\n assert(publicKey.length === 65 || publicKey.length === 33, \"Bad public key\");\n if (publicKey.length === 65) {\n assert(publicKey[0] === 4, \"Bad public key\");\n }\n if (publicKey.length === 33) {\n assert(publicKey[0] === 2 || publicKey[0] === 3, \"Bad public key\");\n }\n assert(msg.length > 0, \"Message should not be empty\");\n assert(msg.length <= 32, \"Message is too long\");\n if (ec.verify(msg, sig, publicKey)) {\n return null;\n }\n throw new Error(\"Bad signature\");\n};\nconst derive = async function (privateKeyA, publicKeyB) {\n assert(Buffer.isBuffer(privateKeyA), \"Bad private key\");\n assert(Buffer.isBuffer(publicKeyB), \"Bad public key\");\n assert(privateKeyA.length === 32, \"Bad private key\");\n assert(isValidPrivateKey(privateKeyA), \"Bad private key\");\n assert(publicKeyB.length === 65 || publicKeyB.length === 33, \"Bad public key\");\n if (publicKeyB.length === 65) {\n assert(publicKeyB[0] === 4, \"Bad public key\");\n }\n if (publicKeyB.length === 33) {\n assert(publicKeyB[0] === 2 || publicKeyB[0] === 3, \"Bad public key\");\n }\n const keyA = ec.keyFromPrivate(privateKeyA);\n const keyB = ec.keyFromPublic(publicKeyB);\n const Px = keyA.derive(keyB.getPublic()); // BN instance\n return Buffer.from(Px.toArray());\n};\nconst deriveUnpadded = derive;\nconst derivePadded = async function (privateKeyA, publicKeyB) {\n assert(Buffer.isBuffer(privateKeyA), \"Bad private key\");\n assert(Buffer.isBuffer(publicKeyB), \"Bad public key\");\n assert(privateKeyA.length === 32, \"Bad private key\");\n assert(isValidPrivateKey(privateKeyA), \"Bad private key\");\n assert(publicKeyB.length === 65 || publicKeyB.length === 33, \"Bad public key\");\n if (publicKeyB.length === 65) {\n assert(publicKeyB[0] === 4, \"Bad public key\");\n }\n if (publicKeyB.length === 33) {\n assert(publicKeyB[0] === 2 || publicKeyB[0] === 3, \"Bad public key\");\n }\n const keyA = ec.keyFromPrivate(privateKeyA);\n const keyB = ec.keyFromPublic(publicKeyB);\n const Px = keyA.derive(keyB.getPublic()); // BN instance\n return Buffer.from(Px.toString(16, 64), \"hex\");\n};\nconst encrypt = async function (publicKeyTo, msg, opts) {\n opts = opts || {};\n let ephemPrivateKey = opts.ephemPrivateKey || randomBytes(32);\n // There is a very unlikely possibility that it is not a valid key\n while (!isValidPrivateKey(ephemPrivateKey)) {\n ephemPrivateKey = opts.ephemPrivateKey || randomBytes(32);\n }\n const ephemPublicKey = getPublic(ephemPrivateKey);\n const Px = await deriveUnpadded(ephemPrivateKey, publicKeyTo);\n const hash = await sha512(Px);\n const iv = opts.iv || randomBytes(16);\n const encryptionKey = hash.slice(0, 32);\n const macKey = hash.slice(32);\n const data = await aesCbcEncrypt(iv, Buffer.from(encryptionKey), msg);\n const ciphertext = data;\n const dataToMac = Buffer.concat([iv, ephemPublicKey, ciphertext]);\n const mac = await hmacSha256Sign(Buffer.from(macKey), dataToMac);\n return {\n iv,\n ephemPublicKey,\n ciphertext,\n mac\n };\n};\nconst decrypt = async function (privateKey, opts, _padding) {\n const padding = _padding !== null && _padding !== void 0 ? _padding : false;\n const deriveLocal = padding ? derivePadded : deriveUnpadded;\n const Px = await deriveLocal(privateKey, opts.ephemPublicKey);\n const hash = await sha512(Px);\n const encryptionKey = hash.slice(0, 32);\n const macKey = hash.slice(32);\n const dataToMac = Buffer.concat([opts.iv, opts.ephemPublicKey, opts.ciphertext]);\n const macGood = await hmacSha256Verify(Buffer.from(macKey), dataToMac, opts.mac);\n if (!macGood && padding === false) {\n return decrypt(privateKey, opts, true);\n } else if (!macGood && padding === true) {\n throw new Error(\"bad MAC after trying padded\");\n }\n const msg = await aesCbcDecrypt(opts.iv, Buffer.from(encryptionKey), opts.ciphertext);\n return Buffer.from(new Uint8Array(msg));\n};\n\nexport { decrypt, derive, derivePadded, deriveUnpadded, encrypt, generatePrivate, getPublic, getPublicCompressed, sign, verify };\n","'use strict';\n\nvar at; // The index of the current character\nvar ch; // The current character\nvar escapee = {\n\t'\"': '\"',\n\t'\\\\': '\\\\',\n\t'/': '/',\n\tb: '\\b',\n\tf: '\\f',\n\tn: '\\n',\n\tr: '\\r',\n\tt: '\\t'\n};\nvar text;\n\n// Call error when something is wrong.\nfunction error(m) {\n\tthrow {\n\t\tname: 'SyntaxError',\n\t\tmessage: m,\n\t\tat: at,\n\t\ttext: text\n\t};\n}\n\nfunction next(c) {\n\t// If a c parameter is provided, verify that it matches the current character.\n\tif (c && c !== ch) {\n\t\terror(\"Expected '\" + c + \"' instead of '\" + ch + \"'\");\n\t}\n\n\t// Get the next character. When there are no more characters, return the empty string.\n\n\tch = text.charAt(at);\n\tat += 1;\n\treturn ch;\n}\n\nfunction number() {\n\t// Parse a number value.\n\tvar num;\n\tvar str = '';\n\n\tif (ch === '-') {\n\t\tstr = '-';\n\t\tnext('-');\n\t}\n\twhile (ch >= '0' && ch <= '9') {\n\t\tstr += ch;\n\t\tnext();\n\t}\n\tif (ch === '.') {\n\t\tstr += '.';\n\t\twhile (next() && ch >= '0' && ch <= '9') {\n\t\t\tstr += ch;\n\t\t}\n\t}\n\tif (ch === 'e' || ch === 'E') {\n\t\tstr += ch;\n\t\tnext();\n\t\tif (ch === '-' || ch === '+') {\n\t\t\tstr += ch;\n\t\t\tnext();\n\t\t}\n\t\twhile (ch >= '0' && ch <= '9') {\n\t\t\tstr += ch;\n\t\t\tnext();\n\t\t}\n\t}\n\tnum = Number(str);\n\tif (!isFinite(num)) {\n\t\terror('Bad number');\n\t}\n\treturn num;\n}\n\nfunction string() {\n\t// Parse a string value.\n\tvar hex;\n\tvar i;\n\tvar str = '';\n\tvar uffff;\n\n\t// When parsing for string values, we must look for \" and \\ characters.\n\tif (ch === '\"') {\n\t\twhile (next()) {\n\t\t\tif (ch === '\"') {\n\t\t\t\tnext();\n\t\t\t\treturn str;\n\t\t\t} else if (ch === '\\\\') {\n\t\t\t\tnext();\n\t\t\t\tif (ch === 'u') {\n\t\t\t\t\tuffff = 0;\n\t\t\t\t\tfor (i = 0; i < 4; i += 1) {\n\t\t\t\t\t\thex = parseInt(next(), 16);\n\t\t\t\t\t\tif (!isFinite(hex)) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tuffff = (uffff * 16) + hex;\n\t\t\t\t\t}\n\t\t\t\t\tstr += String.fromCharCode(uffff);\n\t\t\t\t} else if (typeof escapee[ch] === 'string') {\n\t\t\t\t\tstr += escapee[ch];\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tstr += ch;\n\t\t\t}\n\t\t}\n\t}\n\terror('Bad string');\n}\n\n// Skip whitespace.\nfunction white() {\n\twhile (ch && ch <= ' ') {\n\t\tnext();\n\t}\n}\n\n// true, false, or null.\nfunction word() {\n\tswitch (ch) {\n\t\tcase 't':\n\t\t\tnext('t');\n\t\t\tnext('r');\n\t\t\tnext('u');\n\t\t\tnext('e');\n\t\t\treturn true;\n\t\tcase 'f':\n\t\t\tnext('f');\n\t\t\tnext('a');\n\t\t\tnext('l');\n\t\t\tnext('s');\n\t\t\tnext('e');\n\t\t\treturn false;\n\t\tcase 'n':\n\t\t\tnext('n');\n\t\t\tnext('u');\n\t\t\tnext('l');\n\t\t\tnext('l');\n\t\t\treturn null;\n\t\tdefault:\n\t\t\terror(\"Unexpected '\" + ch + \"'\");\n\t}\n}\n\n// Parse an array value.\nfunction array() {\n\tvar arr = [];\n\n\tif (ch === '[') {\n\t\tnext('[');\n\t\twhite();\n\t\tif (ch === ']') {\n\t\t\tnext(']');\n\t\t\treturn arr; // empty array\n\t\t}\n\t\twhile (ch) {\n\t\t\tarr.push(value()); // eslint-disable-line no-use-before-define\n\t\t\twhite();\n\t\t\tif (ch === ']') {\n\t\t\t\tnext(']');\n\t\t\t\treturn arr;\n\t\t\t}\n\t\t\tnext(',');\n\t\t\twhite();\n\t\t}\n\t}\n\terror('Bad array');\n}\n\n// Parse an object value.\nfunction object() {\n\tvar key;\n\tvar obj = {};\n\n\tif (ch === '{') {\n\t\tnext('{');\n\t\twhite();\n\t\tif (ch === '}') {\n\t\t\tnext('}');\n\t\t\treturn obj; // empty object\n\t\t}\n\t\twhile (ch) {\n\t\t\tkey = string();\n\t\t\twhite();\n\t\t\tnext(':');\n\t\t\tif (Object.prototype.hasOwnProperty.call(obj, key)) {\n\t\t\t\terror('Duplicate key \"' + key + '\"');\n\t\t\t}\n\t\t\tobj[key] = value(); // eslint-disable-line no-use-before-define\n\t\t\twhite();\n\t\t\tif (ch === '}') {\n\t\t\t\tnext('}');\n\t\t\t\treturn obj;\n\t\t\t}\n\t\t\tnext(',');\n\t\t\twhite();\n\t\t}\n\t}\n\terror('Bad object');\n}\n\n// Parse a JSON value. It could be an object, an array, a string, a number, or a word.\nfunction value() {\n\twhite();\n\tswitch (ch) {\n\t\tcase '{':\n\t\t\treturn object();\n\t\tcase '[':\n\t\t\treturn array();\n\t\tcase '\"':\n\t\t\treturn string();\n\t\tcase '-':\n\t\t\treturn number();\n\t\tdefault:\n\t\t\treturn ch >= '0' && ch <= '9' ? number() : word();\n\t}\n}\n\n// Return the json_parse function. It will have access to all of the above functions and variables.\nmodule.exports = function (source, reviver) {\n\tvar result;\n\n\ttext = source;\n\tat = 0;\n\tch = ' ';\n\tresult = value();\n\twhite();\n\tif (ch) {\n\t\terror('Syntax error');\n\t}\n\n\t// If there is a reviver function, we recursively walk the new structure,\n\t// passing each name/value pair to the reviver function for possible\n\t// transformation, starting with a temporary root object that holds the result\n\t// in an empty key. If there is not a reviver function, we simply return the\n\t// result.\n\n\treturn typeof reviver === 'function' ? (function walk(holder, key) {\n\t\tvar k;\n\t\tvar v;\n\t\tvar val = holder[key];\n\t\tif (val && typeof val === 'object') {\n\t\t\tfor (k in value) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(val, k)) {\n\t\t\t\t\tv = walk(val, k);\n\t\t\t\t\tif (typeof v === 'undefined') {\n\t\t\t\t\t\tdelete val[k];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tval[k] = v;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn reviver.call(holder, key, val);\n\t}({ '': result }, '')) : result;\n};\n","'use strict';\n\nvar escapable = /[\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g;\nvar gap;\nvar indent;\nvar meta = { // table of character substitutions\n\t'\\b': '\\\\b',\n\t'\\t': '\\\\t',\n\t'\\n': '\\\\n',\n\t'\\f': '\\\\f',\n\t'\\r': '\\\\r',\n\t'\"': '\\\\\"',\n\t'\\\\': '\\\\\\\\'\n};\nvar rep;\n\nfunction quote(string) {\n\t// If the string contains no control characters, no quote characters, and no\n\t// backslash characters, then we can safely slap some quotes around it.\n\t// Otherwise we must also replace the offending characters with safe escape sequences.\n\n\tescapable.lastIndex = 0;\n\treturn escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\n\t\tvar c = meta[a];\n\t\treturn typeof c === 'string' ? c\n\t\t\t: '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n\t}) + '\"' : '\"' + string + '\"';\n}\n\nfunction str(key, holder) {\n\t// Produce a string from holder[key].\n\tvar i; // The loop counter.\n\tvar k; // The member key.\n\tvar v; // The member value.\n\tvar length;\n\tvar mind = gap;\n\tvar partial;\n\tvar value = holder[key];\n\n\t// If the value has a toJSON method, call it to obtain a replacement value.\n\tif (value && typeof value === 'object' && typeof value.toJSON === 'function') {\n\t\tvalue = value.toJSON(key);\n\t}\n\n\t// If we were called with a replacer function, then call the replacer to obtain a replacement value.\n\tif (typeof rep === 'function') {\n\t\tvalue = rep.call(holder, key, value);\n\t}\n\n\t// What happens next depends on the value's type.\n\tswitch (typeof value) {\n\t\tcase 'string':\n\t\t\treturn quote(value);\n\n\t\tcase 'number':\n\t\t\t// JSON numbers must be finite. Encode non-finite numbers as null.\n\t\t\treturn isFinite(value) ? String(value) : 'null';\n\n\t\tcase 'boolean':\n\t\tcase 'null':\n\t\t\t// If the value is a boolean or null, convert it to a string. Note:\n\t\t\t// typeof null does not produce 'null'. The case is included here in\n\t\t\t// the remote chance that this gets fixed someday.\n\t\t\treturn String(value);\n\n\t\tcase 'object':\n\t\t\tif (!value) {\n\t\t\t\treturn 'null';\n\t\t\t}\n\t\t\tgap += indent;\n\t\t\tpartial = [];\n\n\t\t\t// Array.isArray\n\t\t\tif (Object.prototype.toString.apply(value) === '[object Array]') {\n\t\t\t\tlength = value.length;\n\t\t\t\tfor (i = 0; i < length; i += 1) {\n\t\t\t\t\tpartial[i] = str(i, value) || 'null';\n\t\t\t\t}\n\n\t\t\t\t// Join all of the elements together, separated with commas, and wrap them in brackets.\n\t\t\t\tv = partial.length === 0 ? '[]' : gap\n\t\t\t\t\t? '[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']'\n\t\t\t\t\t: '[' + partial.join(',') + ']';\n\t\t\t\tgap = mind;\n\t\t\t\treturn v;\n\t\t\t}\n\n\t\t\t// If the replacer is an array, use it to select the members to be stringified.\n\t\t\tif (rep && typeof rep === 'object') {\n\t\t\t\tlength = rep.length;\n\t\t\t\tfor (i = 0; i < length; i += 1) {\n\t\t\t\t\tk = rep[i];\n\t\t\t\t\tif (typeof k === 'string') {\n\t\t\t\t\t\tv = str(k, value);\n\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\tpartial.push(quote(k) + (gap ? ': ' : ':') + v);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise, iterate through all of the keys in the object.\n\t\t\t\tfor (k in value) {\n\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(value, k)) {\n\t\t\t\t\t\tv = str(k, value);\n\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\tpartial.push(quote(k) + (gap ? ': ' : ':') + v);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Join all of the member texts together, separated with commas, and wrap them in braces.\n\n\t\t\tv = partial.length === 0 ? '{}' : gap\n\t\t\t\t? '{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}'\n\t\t\t\t: '{' + partial.join(',') + '}';\n\t\t\tgap = mind;\n\t\t\treturn v;\n\t\tdefault:\n\t}\n}\n\nmodule.exports = function (value, replacer, space) {\n\tvar i;\n\tgap = '';\n\tindent = '';\n\n\t// If the space parameter is a number, make an indent string containing that many spaces.\n\tif (typeof space === 'number') {\n\t\tfor (i = 0; i < space; i += 1) {\n\t\t\tindent += ' ';\n\t\t}\n\t} else if (typeof space === 'string') {\n\t\t// If the space parameter is a string, it will be used as the indent string.\n\t\tindent = space;\n\t}\n\n\t// If there is a replacer, it must be a function or an array. Otherwise, throw an error.\n\trep = replacer;\n\tif (\n\t\treplacer\n\t\t&& typeof replacer !== 'function'\n\t\t&& (typeof replacer !== 'object' || typeof replacer.length !== 'number')\n\t) {\n\t\tthrow new Error('JSON.stringify');\n\t}\n\n\t// Make a fake root object containing our value under the key of ''.\n\t// Return the result of stringifying the value.\n\treturn str('', { '': value });\n};\n","'use strict';\n\nexports.parse = require('./lib/parse');\nexports.stringify = require('./lib/stringify');\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","'use strict';\n\n/** @type {typeof JSON.stringify} */\nvar jsonStringify = (typeof JSON !== 'undefined' ? JSON : require('jsonify')).stringify;\n\nvar isArray = require('isarray');\nvar objectKeys = require('object-keys');\nvar callBind = require('call-bind');\nvar callBound = require('call-bound');\n\nvar $join = callBound('Array.prototype.join');\nvar $indexOf = callBound('Array.prototype.indexOf');\nvar $splice = callBound('Array.prototype.splice');\nvar $sort = callBound('Array.prototype.sort');\n\n/** @type {(n: number, char: string) => string} */\nvar strRepeat = function repeat(n, char) {\n\tvar str = '';\n\tfor (var i = 0; i < n; i += 1) {\n\t\tstr += char;\n\t}\n\treturn str;\n};\n\n/** @type {(parent: import('.').Node, key: import('.').Key, value: unknown) => unknown} */\nvar defaultReplacer = function (_parent, _key, value) { return value; };\n\n/** @type {import('.')} */\nmodule.exports = function stableStringify(obj) {\n\t/** @type {Parameters[1]} */\n\tvar opts = arguments.length > 1 ? arguments[1] : void undefined;\n\tvar space = (opts && opts.space) || '';\n\tif (typeof space === 'number') { space = strRepeat(space, ' '); }\n\tvar cycles = !!opts && typeof opts.cycles === 'boolean' && opts.cycles;\n\t/** @type {undefined | typeof defaultReplacer} */\n\tvar replacer = opts && opts.replacer ? callBind(opts.replacer) : defaultReplacer;\n\n\tvar cmpOpt = typeof opts === 'function' ? opts : opts && opts.cmp;\n\t/** @type {undefined | ((node: T) => (a: Exclude, b: Exclude) => number)} */\n\tvar cmp = cmpOpt && function (node) {\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar get = /** @type {NonNullable} */ (cmpOpt).length > 2\n\t\t\t&& /** @type {import('.').Getter['get']} */ function get(k) { return node[k]; };\n\t\treturn function (a, b) {\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\treturn /** @type {NonNullable} */ (cmpOpt)(\n\t\t\t\t{ key: a, value: node[a] },\n\t\t\t\t{ key: b, value: node[b] },\n\t\t\t\t// @ts-expect-error TS doesn't understand the optimization used here\n\t\t\t\tget ? /** @type {import('.').Getter} */ { __proto__: null, get: get } : void undefined\n\t\t\t);\n\t\t};\n\t};\n\n\t/** @type {import('.').Node[]} */\n\tvar seen = [];\n\treturn (/** @type {(parent: import('.').Node, key: string | number, node: unknown, level: number) => string | undefined} */\n\t\tfunction stringify(parent, key, node, level) {\n\t\t\tvar indent = space ? '\\n' + strRepeat(level, space) : '';\n\t\t\tvar colonSeparator = space ? ': ' : ':';\n\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tif (node && /** @type {{ toJSON?: unknown }} */ (node).toJSON && typeof /** @type {{ toJSON?: unknown }} */ (node).toJSON === 'function') {\n\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\tnode = /** @type {{ toJSON: Function }} */ (node).toJSON();\n\t\t\t}\n\n\t\t\tnode = replacer(parent, key, node);\n\n\t\t\tif (node === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (typeof node !== 'object' || node === null) {\n\t\t\t\treturn jsonStringify(node);\n\t\t\t}\n\t\t\tif (isArray(node)) {\n\t\t\t\tvar out = [];\n\t\t\t\tfor (var i = 0; i < node.length; i++) {\n\t\t\t\t\tvar item = stringify(node, i, node[i], level + 1) || jsonStringify(null);\n\t\t\t\t\tout[out.length] = indent + space + item;\n\t\t\t\t}\n\t\t\t\treturn '[' + $join(out, ',') + indent + ']';\n\t\t\t}\n\n\t\t\tif ($indexOf(seen, node) !== -1) {\n\t\t\t\tif (cycles) { return jsonStringify('__cycle__'); }\n\t\t\t\tthrow new TypeError('Converting circular structure to JSON');\n\t\t\t} else {\n\t\t\t\tseen[seen.length] = /** @type {import('.').NonArrayNode} */ (node);\n\t\t\t}\n\n\t\t\t/** @type {import('.').Key[]} */\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tvar keys = $sort(objectKeys(node), cmp && cmp(/** @type {import('.').NonArrayNode} */ (node)));\n\t\t\tvar out = [];\n\t\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\t\tvar key = keys[i];\n\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\tvar value = stringify(/** @type {import('.').Node} */ (node), key, /** @type {import('.').NonArrayNode} */ (node)[key], level + 1);\n\n\t\t\t\tif (!value) { continue; }\n\n\t\t\t\tvar keyValue = jsonStringify(key)\n\t\t\t\t\t+ colonSeparator\n\t\t\t\t\t+ value;\n\n\t\t\t\tout[out.length] = indent + space + keyValue;\n\t\t\t}\n\t\t\t$splice(seen, $indexOf(seen, node), 1);\n\t\t\treturn '{' + $join(out, ',') + indent + '}';\n\t\t}({ '': obj }, '', obj, 0)\n\t);\n};\n","function number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`positive integer expected, not ${n}`);\n}\nfunction bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`boolean expected, not ${b}`);\n}\n// copied from utils\nexport function isBytes(a) {\n return (a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array'));\n}\nfunction bytes(b, ...lengths) {\n if (!isBytes(b))\n throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Uint8Array expected of length ${lengths}, not of length=${b.length}`);\n}\nfunction hash(h) {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(h.outputLen);\n number(h.blockLen);\n}\nfunction exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nfunction output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nexport { number, bool, bytes, hash, exists, output };\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n//# sourceMappingURL=_assert.js.map","const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nconst rotr32L = (h, _l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nexport { fromBig, split, toBig, shrSH, shrSL, rotrSH, rotrSL, rotrBH, rotrBL, rotr32H, rotr32L, rotlSH, rotlSL, rotlBH, rotlBL, add, add3L, add3H, add4L, add4H, add5H, add5L, };\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n//# sourceMappingURL=_u64.js.map","export const crypto = typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n//# sourceMappingURL=crypto.js.map","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\nimport { bytes as abytes } from './_assert.js';\n// export { isBytes } from './_assert.js';\n// We can't reuse isBytes from _assert, because somehow this causes huge perf issues\nexport function isBytes(a) {\n return (a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array'));\n}\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\n// The rotate left (circular left shift) operation for uint32\nexport const rotl = (word, shift) => (word << shift) | ((word >>> (32 - shift)) >>> 0);\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\n// The byte swap operation for uint32\nexport const byteSwap = (word) => ((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff);\n// Conditionally byte swap if on a big-endian platform\nexport const byteSwapIfBE = isLE ? (n) => n : (n) => byteSwap(n);\n// In place byte swap for Uint32Array\nexport function byteSwap32(arr) {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n}\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n abytes(bytes);\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, _A: 65, _F: 70, _a: 97, _f: 102 };\nfunction asciiToBase16(char) {\n if (char >= asciis._0 && char <= asciis._9)\n return char - asciis._0;\n if (char >= asciis._A && char <= asciis._F)\n return char - (asciis._A - 10);\n if (char >= asciis._a && char <= asciis._f)\n return char - (asciis._a - 10);\n return;\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2;\n }\n return array;\n}\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => { };\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n// For runtime check if class implements interface\nexport class Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\nconst toStr = {}.toString;\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nexport function wrapConstructor(hashCons) {\n const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexport function wrapXOFConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32) {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","import { bytes, exists, number, output } from './_assert.js';\nimport { rotlBH, rotlBL, rotlSH, rotlSL, split } from './_u64.js';\nimport { Hash, u32, toBytes, wrapConstructor, wrapXOFConstructorWithOpts, isLE, byteSwap32, } from './utils.js';\n// SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size.\n// It's called a sponge function.\n// Various per round constants calculations\nconst SHA3_PI = [];\nconst SHA3_ROTL = [];\nconst _SHA3_IOTA = [];\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nconst _7n = /* @__PURE__ */ BigInt(7);\nconst _256n = /* @__PURE__ */ BigInt(256);\nconst _0x71n = /* @__PURE__ */ BigInt(0x71);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n)\n t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true);\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));\nconst rotlL = (h, l, s) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));\n// Same as keccakf1600, but allows to skip some rounds\nexport function keccakP(s, rounds = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++)\n B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++)\n B[x] = s[y + x];\n for (let x = 0; x < 10; x++)\n s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n B.fill(0);\n}\nexport class Keccak extends Hash {\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n super();\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n this.pos = 0;\n this.posOut = 0;\n this.finished = false;\n this.destroyed = false;\n // Can be passed from user as dkLen\n number(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n if (0 >= this.blockLen || this.blockLen >= 200)\n throw new Error('Sha3 supports only keccak-f1600 function');\n this.state = new Uint8Array(200);\n this.state32 = u32(this.state);\n }\n keccak() {\n if (!isLE)\n byteSwap32(this.state32);\n keccakP(this.state32, this.rounds);\n if (!isLE)\n byteSwap32(this.state32);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data) {\n exists(this);\n const { blockLen, state } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++)\n state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen)\n this.keccak();\n }\n return this;\n }\n finish() {\n if (this.finished)\n return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1)\n this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n writeInto(out) {\n exists(this, false);\n bytes(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len;) {\n if (this.posOut >= blockLen)\n this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out) {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF)\n throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes) {\n number(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out) {\n output(out, this);\n if (this.finished)\n throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n this.state.fill(0);\n }\n _cloneInto(to) {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds));\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\nconst gen = (suffix, blockLen, outputLen) => wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\nexport const sha3_224 = /* @__PURE__ */ gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexport const sha3_256 = /* @__PURE__ */ gen(0x06, 136, 256 / 8);\nexport const sha3_384 = /* @__PURE__ */ gen(0x06, 104, 384 / 8);\nexport const sha3_512 = /* @__PURE__ */ gen(0x06, 72, 512 / 8);\nexport const keccak_224 = /* @__PURE__ */ gen(0x01, 144, 224 / 8);\n/**\n * keccak-256 hash function. Different from SHA3-256.\n * @param message - that would be hashed\n */\nexport const keccak_256 = /* @__PURE__ */ gen(0x01, 136, 256 / 8);\nexport const keccak_384 = /* @__PURE__ */ gen(0x01, 104, 384 / 8);\nexport const keccak_512 = /* @__PURE__ */ gen(0x01, 72, 512 / 8);\nconst genShake = (suffix, blockLen, outputLen) => wrapXOFConstructorWithOpts((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true));\nexport const shake128 = /* @__PURE__ */ genShake(0x1f, 168, 128 / 8);\nexport const shake256 = /* @__PURE__ */ genShake(0x1f, 136, 256 / 8);\n//# sourceMappingURL=sha3.js.map","import assert from \"@noble/hashes/_assert\";\nimport { hexToBytes as _hexToBytes } from \"@noble/hashes/utils\";\nconst assertBool = assert.bool;\nconst assertBytes = assert.bytes;\nexport { assertBool, assertBytes };\nexport { bytesToHex, bytesToHex as toHex, concatBytes, createView, utf8ToBytes } from \"@noble/hashes/utils\";\n// buf.toString('utf8') -> bytesToUtf8(buf)\nexport function bytesToUtf8(data) {\n if (!(data instanceof Uint8Array)) {\n throw new TypeError(`bytesToUtf8 expected Uint8Array, got ${typeof data}`);\n }\n return new TextDecoder().decode(data);\n}\nexport function hexToBytes(data) {\n const sliced = data.startsWith(\"0x\") ? data.substring(2) : data;\n return _hexToBytes(sliced);\n}\n// buf.equals(buf2) -> equalsBytes(buf, buf2)\nexport function equalsBytes(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\n// Internal utils\nexport function wrapHash(hash) {\n return (msg) => {\n assert.bytes(msg);\n return hash(msg);\n };\n}\n// TODO(v3): switch away from node crypto, remove this unnecessary variable.\nexport const crypto = (() => {\n const webCrypto = typeof globalThis === \"object\" && \"crypto\" in globalThis ? globalThis.crypto : undefined;\n const nodeRequire = typeof module !== \"undefined\" &&\n typeof module.require === \"function\" &&\n module.require.bind(module);\n return {\n node: nodeRequire && !webCrypto ? nodeRequire(\"crypto\") : undefined,\n web: webCrypto\n };\n})();\n","import { keccak_224, keccak_256, keccak_384, keccak_512 } from \"@noble/hashes/sha3\";\nimport { wrapHash } from \"./utils.js\";\nexport const keccak224 = wrapHash(keccak_224);\nexport const keccak256 = (() => {\n const k = wrapHash(keccak_256);\n k.create = keccak_256.create;\n return k;\n})();\nexport const keccak384 = wrapHash(keccak_384);\nexport const keccak512 = wrapHash(keccak_512);\n","import { ec as ec$1 } from 'elliptic';\nimport { keccak256 as keccak256$1 } from 'ethereum-cryptography/keccak';\n\nfunction keccak256(a) {\n return Buffer.from(keccak256$1(a));\n}\nconst ec = new ec$1(\"secp256k1\");\n\nexport { ec, keccak256 };\n","import { encrypt, getPublic, decrypt } from '@toruslabs/eccrypto';\nimport { ec } from './utils.js';\n\nconst WEBAUTHN_TORUS_SHARE = \"webauthn_torus_share\";\nconst WEBAUTHN_DEVICE_SHARE = \"webauthn_device_share\";\nfunction encParamsHexToBuf(encParamsHex) {\n return {\n iv: Buffer.from(encParamsHex.iv, \"hex\"),\n ephemPublicKey: Buffer.from(encParamsHex.ephemPublicKey, \"hex\"),\n ciphertext: Buffer.from(encParamsHex.ciphertext, \"hex\"),\n mac: Buffer.from(encParamsHex.mac, \"hex\")\n };\n}\nfunction encParamsBufToHex(encParams) {\n return {\n iv: Buffer.from(encParams.iv).toString(\"hex\"),\n ephemPublicKey: Buffer.from(encParams.ephemPublicKey).toString(\"hex\"),\n ciphertext: Buffer.from(encParams.ciphertext).toString(\"hex\"),\n mac: Buffer.from(encParams.mac).toString(\"hex\")\n };\n}\nasync function encryptData(privKeyHex, d) {\n const serializedDec = JSON.stringify(d);\n const serializedBuf = Buffer.from(serializedDec, \"utf-8\");\n const encParams = await encrypt(getPublic(Buffer.from(privKeyHex, \"hex\")), serializedBuf);\n const encParamsHex = encParamsBufToHex(encParams);\n const sData = JSON.stringify(encParamsHex);\n return sData;\n}\nasync function decryptData(privKeyHex, d) {\n const encParamsHex = JSON.parse(d);\n const encParams = encParamsHexToBuf(encParamsHex);\n const keyPair = ec.keyFromPrivate(privKeyHex);\n const serializedBuf = await decrypt(Buffer.from(keyPair.getPrivate().toString(\"hex\", 64), \"hex\"), encParams);\n const serializedDec = serializedBuf.toString(\"utf-8\");\n const data = JSON.parse(serializedDec);\n return data;\n}\nasync function getAndDecryptData(m, privKeyHex, namespace) {\n const keyPair = ec.keyFromPrivate(privKeyHex, \"hex\");\n const pubKey = keyPair.getPublic();\n const serializedData = await m.getMetadata({\n pub_key_X: pubKey.getX().toString(16, 64),\n pub_key_Y: pubKey.getY().toString(16, 64)\n }, namespace);\n if (!serializedData) {\n return null;\n }\n const data = await decryptData(privKeyHex, serializedData);\n return data;\n}\nasync function encryptAndSetData(m, privKeyHex, d, namespace) {\n const sData = await encryptData(privKeyHex, d);\n const metadataParams = m.generateMetadataParams(sData, privKeyHex);\n await m.setMetadata(metadataParams, namespace);\n}\nasync function setTorusShare(m, webAuthnPubKey, webAuthnRefHex, subspace, subspaceData) {\n const refKeyPair = ec.keyFromPrivate(webAuthnRefHex);\n const privKey = refKeyPair.getPrivate();\n const pubKey = ec.keyFromPublic({\n x: webAuthnPubKey.pub_key_X,\n y: webAuthnPubKey.pub_key_Y\n });\n const data = await getAndDecryptData(m, webAuthnRefHex, WEBAUTHN_TORUS_SHARE);\n let d = {};\n if (data) d = data;\n const serializedSubspaceData = JSON.stringify(subspaceData);\n const serializedSubspaceDataBuf = Buffer.from(serializedSubspaceData, \"utf-8\");\n const encSubspaceData = await encrypt(Buffer.from(pubKey.getPublic(\"hex\"), \"hex\"), serializedSubspaceDataBuf);\n const encSubspaceDataHex = encParamsBufToHex(encSubspaceData);\n d[subspace] = encSubspaceDataHex;\n await encryptAndSetData(m, privKey.toString(\"hex\", 64), d, WEBAUTHN_TORUS_SHARE);\n}\nasync function setDeviceShare(m, webAuthnRefHex, subspace, subspaceData) {\n const keyPair = ec.keyFromPrivate(webAuthnRefHex);\n const privKey = keyPair.getPrivate();\n const data = await getAndDecryptData(m, webAuthnRefHex, WEBAUTHN_DEVICE_SHARE);\n let d = {};\n if (data) d = data;\n d[subspace] = subspaceData;\n await encryptAndSetData(m, privKey.toString(\"hex\", 64), d, WEBAUTHN_DEVICE_SHARE);\n}\nasync function getTorusShare(m, webAuthnKeyHex, webAuthnRefHex, subspace) {\n const data = await getAndDecryptData(m, webAuthnRefHex, WEBAUTHN_TORUS_SHARE);\n if (!data) return null;\n const encParamsHex = data[subspace];\n if (!encParamsHex) return null;\n const encParams = encParamsHexToBuf(encParamsHex);\n const keyPair = ec.keyFromPrivate(webAuthnKeyHex);\n const privKey = keyPair.getPrivate();\n const serializedSubspaceDataBuf = await decrypt(Buffer.from(privKey.toString(\"hex\", 64), \"hex\"), encParams);\n const serializedSubspaceData = serializedSubspaceDataBuf.toString(\"utf-8\");\n const subspaceData = JSON.parse(serializedSubspaceData);\n return subspaceData;\n}\nasync function getDeviceShare(m, webAuthnRefHex, subspace) {\n const data = await getAndDecryptData(m, webAuthnRefHex, WEBAUTHN_DEVICE_SHARE);\n if (data) return data[subspace];\n return null;\n}\n\nexport { decryptData, encParamsBufToHex, encParamsHexToBuf, encryptAndSetData, encryptData, getAndDecryptData, getDeviceShare, getTorusShare, setDeviceShare, setTorusShare };\n","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport { SESSION_SERVER_API_URL } from '@toruslabs/constants';\nimport { generatePrivate, getPublic, sign } from '@toruslabs/eccrypto';\nimport { encryptData, keccak256, decryptData } from '@toruslabs/metadata-helpers';\nimport { BaseSessionManager } from './base.js';\nimport { padHexString } from './util.js';\n\nconst DEFAULT_SESSION_TIMEOUT = 86400;\nclass SessionManager extends BaseSessionManager {\n constructor({\n sessionServerBaseUrl,\n sessionNamespace,\n sessionTime,\n sessionId,\n allowedOrigin\n } = {}) {\n super();\n _defineProperty(this, \"sessionServerBaseUrl\", SESSION_SERVER_API_URL);\n _defineProperty(this, \"sessionNamespace\", void 0);\n _defineProperty(this, \"allowedOrigin\", void 0);\n _defineProperty(this, \"sessionTime\", DEFAULT_SESSION_TIMEOUT);\n _defineProperty(this, \"sessionId\", \"\");\n if (sessionServerBaseUrl) {\n this.sessionServerBaseUrl = sessionServerBaseUrl;\n }\n if (sessionNamespace) this.sessionNamespace = sessionNamespace;\n if (sessionTime) this.sessionTime = sessionTime;\n if (sessionId) this.sessionId = padHexString(sessionId);\n if (allowedOrigin) {\n this.allowedOrigin = allowedOrigin;\n } else {\n this.allowedOrigin = \"*\";\n }\n }\n static generateRandomSessionKey() {\n return padHexString(generatePrivate().toString(\"hex\"));\n }\n async createSession(data, headers = {}) {\n super.checkSessionParams();\n const privKey = Buffer.from(this.sessionId, \"hex\");\n const pubKey = getPublic(privKey).toString(\"hex\");\n const encData = await encryptData(this.sessionId, data);\n const signature = (await sign(privKey, keccak256(Buffer.from(encData, \"utf8\")))).toString(\"hex\");\n const body = {\n key: pubKey,\n data: encData,\n signature,\n namespace: this.sessionNamespace,\n timeout: this.sessionTime,\n allowedOrigin: this.allowedOrigin\n };\n await super.request({\n method: \"POST\",\n url: `${this.sessionServerBaseUrl}/v2/store/set`,\n data: body,\n headers\n });\n return this.sessionId;\n }\n async authorizeSession({\n headers\n } = {\n headers: {}\n }) {\n super.checkSessionParams();\n const pubkey = getPublic(Buffer.from(this.sessionId, \"hex\")).toString(\"hex\");\n const body = {\n key: pubkey,\n namespace: this.sessionNamespace\n };\n const result = await super.request({\n method: \"POST\",\n url: `${this.sessionServerBaseUrl}/v2/store/get`,\n data: body,\n headers\n });\n if (!result.message) {\n throw new Error(\"Session Expired or Invalid public key\");\n }\n const response = await decryptData(this.sessionId, result.message);\n if (response.error) {\n throw new Error(\"There was an error decrypting data.\");\n }\n return response;\n }\n async updateSession(data, headers = {}) {\n super.checkSessionParams();\n const privKey = Buffer.from(this.sessionId, \"hex\");\n const pubKey = getPublic(privKey).toString(\"hex\");\n const encData = await encryptData(this.sessionId, data);\n const signature = (await sign(privKey, keccak256(Buffer.from(encData, \"utf8\")))).toString(\"hex\");\n const body = {\n key: pubKey,\n data: encData,\n signature,\n namespace: this.sessionNamespace,\n allowedOrigin: this.allowedOrigin\n };\n await super.request({\n method: \"PUT\",\n url: `${this.sessionServerBaseUrl}/v2/store/update`,\n data: body,\n headers\n });\n }\n async invalidateSession(headers = {}) {\n super.checkSessionParams();\n const privKey = Buffer.from(this.sessionId, \"hex\");\n const pubKey = getPublic(privKey).toString(\"hex\");\n const encData = await encryptData(this.sessionId, {});\n const signature = (await sign(privKey, keccak256(Buffer.from(encData, \"utf8\")))).toString(\"hex\");\n const data = {\n key: pubKey,\n data: encData,\n signature,\n namespace: this.sessionNamespace,\n timeout: 1\n };\n await super.request({\n method: \"POST\",\n url: `${this.sessionServerBaseUrl}/v2/store/set`,\n data,\n headers\n });\n this.sessionId = \"\";\n return true;\n }\n}\n\nexport { SessionManager };\n","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport { CustomError } from 'ts-custom-error';\n\nclass AuthError extends CustomError {\n constructor(code, message) {\n // takes care of stack and proto\n super(message);\n _defineProperty(this, \"code\", void 0);\n _defineProperty(this, \"message\", void 0);\n this.code = code;\n this.message = message || \"\";\n // Set name explicitly as minification can mangle class names\n Object.defineProperty(this, \"name\", {\n value: \"AuthError\"\n });\n }\n toJSON() {\n return {\n name: this.name,\n code: this.code,\n message: this.message\n };\n }\n toString() {\n return JSON.stringify(this.toJSON());\n }\n}\nclass InitializationError extends AuthError {\n constructor(code, message) {\n // takes care of stack and proto\n super(code, message);\n\n // Set name explicitly as minification can mangle class names\n Object.defineProperty(this, \"name\", {\n value: \"InitializationError\"\n });\n }\n static fromCode(code, extraMessage = \"\") {\n return new InitializationError(code, `${InitializationError.messages[code]}, ${extraMessage}`);\n }\n static invalidParams(extraMessage = \"\") {\n return InitializationError.fromCode(5001, extraMessage);\n }\n static notInitialized(extraMessage = \"\") {\n return InitializationError.fromCode(5002, extraMessage);\n }\n}\n\n/**\n * login errors\n */\n_defineProperty(InitializationError, \"messages\", {\n 5000: \"Custom\",\n 5001: \"Invalid constructor params\",\n 5002: \"SDK not initialized. please call init first\"\n});\nclass LoginError extends AuthError {\n constructor(code, message) {\n // takes care of stack and proto\n super(code, message);\n\n // Set name explicitly as minification can mangle class names\n Object.defineProperty(this, \"name\", {\n value: \"LoginError\"\n });\n }\n static fromCode(code, extraMessage = \"\") {\n return new LoginError(code, `${LoginError.messages[code]}, ${extraMessage}`);\n }\n static invalidLoginParams(extraMessage = \"\") {\n return LoginError.fromCode(5111, extraMessage);\n }\n static userNotLoggedIn(extraMessage = \"\") {\n return LoginError.fromCode(5112, extraMessage);\n }\n static popupClosed(extraMessage = \"\") {\n return LoginError.fromCode(5113, extraMessage);\n }\n static loginFailed(extraMessage = \"\") {\n return LoginError.fromCode(5114, extraMessage);\n }\n static popupBlocked(extraMessage = \"\") {\n return LoginError.fromCode(5115, extraMessage);\n }\n static mfaAlreadyEnabled(extraMessage = \"\") {\n return LoginError.fromCode(5116, extraMessage);\n }\n static mfaNotEnabled(extraMessage = \"\") {\n return LoginError.fromCode(5117, extraMessage);\n }\n}\n_defineProperty(LoginError, \"messages\", {\n 5000: \"Custom\",\n 5111: \"Invalid login params\",\n 5112: \"User not logged in.\",\n 5113: \"login popup has been closed by the user\",\n 5114: \"Login failed\",\n 5115: \"Popup was blocked. Please call this function as soon as user clicks button or use redirect mode\",\n 5116: \"MFA already enabled\",\n 5117: \"MFA not yet enabled. Please call `enableMFA` first\"\n});\n\nexport { AuthError, InitializationError, LoginError };\n","const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach((key) => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + (content || \"\"));\n };\n return fileReader.readAsDataURL(data);\n};\nfunction toArray(data) {\n if (data instanceof Uint8Array) {\n return data;\n }\n else if (data instanceof ArrayBuffer) {\n return new Uint8Array(data);\n }\n else {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n }\n}\nlet TEXT_ENCODER;\nexport function encodePacketToBinary(packet, callback) {\n if (withNativeBlob && packet.data instanceof Blob) {\n return packet.data.arrayBuffer().then(toArray).then(callback);\n }\n else if (withNativeArrayBuffer &&\n (packet.data instanceof ArrayBuffer || isView(packet.data))) {\n return callback(toArray(packet.data));\n }\n encodePacket(packet, false, (encoded) => {\n if (!TEXT_ENCODER) {\n TEXT_ENCODER = new TextEncoder();\n }\n callback(TEXT_ENCODER.encode(encoded));\n });\n}\nexport { encodePacket };\n","// imported from https://github.com/socketio/base64-arraybuffer\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nexport const encode = (arraybuffer) => {\n let bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nexport const decode = (base64) => {\n let bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n const arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE, } from \"./commons.js\";\nimport { decode } from \"./contrib/base64-arraybuffer.js\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nexport const decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType),\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType),\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1),\n }\n : {\n type: PACKET_TYPES_REVERSE[type],\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n if (data instanceof Blob) {\n // from WebSocket + binaryType \"blob\"\n return data;\n }\n else {\n // from HTTP long-polling or WebTransport\n return new Blob([data]);\n }\n case \"arraybuffer\":\n default:\n if (data instanceof ArrayBuffer) {\n // from HTTP long-polling (base64) or WebSocket + binaryType \"arraybuffer\"\n return data;\n }\n else {\n // from WebTransport (Uint8Array)\n return data.buffer;\n }\n }\n};\n","import { encodePacket, encodePacketToBinary } from \"./encodePacket.js\";\nimport { decodePacket } from \"./decodePacket.js\";\nimport { ERROR_PACKET, } from \"./commons.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, (encodedPacket) => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport function createPacketEncoderStream() {\n return new TransformStream({\n transform(packet, controller) {\n encodePacketToBinary(packet, (encodedPacket) => {\n const payloadLength = encodedPacket.length;\n let header;\n // inspired by the WebSocket format: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers#decoding_payload_length\n if (payloadLength < 126) {\n header = new Uint8Array(1);\n new DataView(header.buffer).setUint8(0, payloadLength);\n }\n else if (payloadLength < 65536) {\n header = new Uint8Array(3);\n const view = new DataView(header.buffer);\n view.setUint8(0, 126);\n view.setUint16(1, payloadLength);\n }\n else {\n header = new Uint8Array(9);\n const view = new DataView(header.buffer);\n view.setUint8(0, 127);\n view.setBigUint64(1, BigInt(payloadLength));\n }\n // first bit indicates whether the payload is plain text (0) or binary (1)\n if (packet.data && typeof packet.data !== \"string\") {\n header[0] |= 0x80;\n }\n controller.enqueue(header);\n controller.enqueue(encodedPacket);\n });\n },\n });\n}\nlet TEXT_DECODER;\nfunction totalLength(chunks) {\n return chunks.reduce((acc, chunk) => acc + chunk.length, 0);\n}\nfunction concatChunks(chunks, size) {\n if (chunks[0].length === size) {\n return chunks.shift();\n }\n const buffer = new Uint8Array(size);\n let j = 0;\n for (let i = 0; i < size; i++) {\n buffer[i] = chunks[0][j++];\n if (j === chunks[0].length) {\n chunks.shift();\n j = 0;\n }\n }\n if (chunks.length && j < chunks[0].length) {\n chunks[0] = chunks[0].slice(j);\n }\n return buffer;\n}\nexport function createPacketDecoderStream(maxPayload, binaryType) {\n if (!TEXT_DECODER) {\n TEXT_DECODER = new TextDecoder();\n }\n const chunks = [];\n let state = 0 /* State.READ_HEADER */;\n let expectedLength = -1;\n let isBinary = false;\n return new TransformStream({\n transform(chunk, controller) {\n chunks.push(chunk);\n while (true) {\n if (state === 0 /* State.READ_HEADER */) {\n if (totalLength(chunks) < 1) {\n break;\n }\n const header = concatChunks(chunks, 1);\n isBinary = (header[0] & 0x80) === 0x80;\n expectedLength = header[0] & 0x7f;\n if (expectedLength < 126) {\n state = 3 /* State.READ_PAYLOAD */;\n }\n else if (expectedLength === 126) {\n state = 1 /* State.READ_EXTENDED_LENGTH_16 */;\n }\n else {\n state = 2 /* State.READ_EXTENDED_LENGTH_64 */;\n }\n }\n else if (state === 1 /* State.READ_EXTENDED_LENGTH_16 */) {\n if (totalLength(chunks) < 2) {\n break;\n }\n const headerArray = concatChunks(chunks, 2);\n expectedLength = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length).getUint16(0);\n state = 3 /* State.READ_PAYLOAD */;\n }\n else if (state === 2 /* State.READ_EXTENDED_LENGTH_64 */) {\n if (totalLength(chunks) < 8) {\n break;\n }\n const headerArray = concatChunks(chunks, 8);\n const view = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length);\n const n = view.getUint32(0);\n if (n > Math.pow(2, 53 - 32) - 1) {\n // the maximum safe integer in JavaScript is 2^53 - 1\n controller.enqueue(ERROR_PACKET);\n break;\n }\n expectedLength = n * Math.pow(2, 32) + view.getUint32(4);\n state = 3 /* State.READ_PAYLOAD */;\n }\n else {\n if (totalLength(chunks) < expectedLength) {\n break;\n }\n const data = concatChunks(chunks, expectedLength);\n controller.enqueue(decodePacket(isBinary ? data : TEXT_DECODER.decode(data), binaryType));\n state = 0 /* State.READ_HEADER */;\n }\n if (expectedLength === 0 || expectedLength > maxPayload) {\n controller.enqueue(ERROR_PACKET);\n break;\n }\n }\n },\n });\n}\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload, };\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","export const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return (cb) => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const globalThisShim = (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\nexport const defaultBinaryType = \"arraybuffer\";\nexport function createCookieJar() { }\n","import { globalThisShim as globalThis } from \"./globals.node.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = globalThis.setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = globalThis.clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = globalThis.setTimeout.bind(globalThis);\n obj.clearTimeoutFn = globalThis.clearTimeout.bind(globalThis);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nexport function byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n/**\n * Generates a random 8-characters string.\n */\nexport function randomString() {\n return (Date.now().toString(36).substring(3) +\n Math.random().toString(36).substring(2, 5));\n}\n","// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nexport function encode(obj) {\n let str = '';\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length)\n str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nexport function decode(qs) {\n let qry = {};\n let pairs = qs.split('&');\n for (let i = 0, l = pairs.length; i < l; i++) {\n let pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n}\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nimport { encode } from \"./contrib/parseqs.js\";\nexport class TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} opts - options\n * @protected\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.socket = opts.socket;\n this.supportsBinary = !opts.forceBase64;\n }\n /**\n * Emits an error.\n *\n * @param {String} reason\n * @param description\n * @param context - the error context\n * @return {Transport} for chaining\n * @protected\n */\n onError(reason, description, context) {\n super.emitReserved(\"error\", new TransportError(reason, description, context));\n return this;\n }\n /**\n * Opens the transport.\n */\n open() {\n this.readyState = \"opening\";\n this.doOpen();\n return this;\n }\n /**\n * Closes the transport.\n */\n close() {\n if (this.readyState === \"opening\" || this.readyState === \"open\") {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n */\n send(packets) {\n if (this.readyState === \"open\") {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emitReserved(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\n }\n /**\n * Pauses the transport, in order not to lose packets during an upgrade.\n *\n * @param onPause\n */\n pause(onPause) { }\n createUri(schema, query = {}) {\n return (schema +\n \"://\" +\n this._hostname() +\n this._port() +\n this.opts.path +\n this._query(query));\n }\n _hostname() {\n const hostname = this.opts.hostname;\n return hostname.indexOf(\":\") === -1 ? hostname : \"[\" + hostname + \"]\";\n }\n _port() {\n if (this.opts.port &&\n ((this.opts.secure && Number(this.opts.port !== 443)) ||\n (!this.opts.secure && Number(this.opts.port) !== 80))) {\n return \":\" + this.opts.port;\n }\n else {\n return \"\";\n }\n }\n _query(query) {\n const encodedQuery = encode(query);\n return encodedQuery.length ? \"?\" + encodedQuery : \"\";\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { randomString } from \"../util.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nexport class Polling extends Transport {\n constructor() {\n super(...arguments);\n this._polling = false;\n }\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @protected\n */\n doOpen() {\n this._poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} onPause - callback upon buffers are flushed and transport is paused\n * @package\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this._polling || !this.writable) {\n let total = 0;\n if (this._polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @private\n */\n _poll() {\n this._polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @protected\n */\n onData(data) {\n const callback = (packet) => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose({ description: \"transport closed by the server\" });\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this._polling = false;\n this.emitReserved(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this._poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @protected\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} packets - data packets\n * @protected\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, (data) => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emitReserved(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n const schema = this.opts.secure ? \"https\" : \"http\";\n const query = this.query || {};\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = randomString();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n return this.createUri(schema, query);\n }\n}\n","// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n value = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n}\ncatch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n}\nexport const hasCORS = value;\n","import { Polling } from \"./polling.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { globalThisShim as globalThis } from \"../globals.node.js\";\nimport { hasCORS } from \"../contrib/has-cors.js\";\nfunction empty() { }\nexport class BaseXHR extends Polling {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @package\n */\n constructor(opts) {\n super(opts);\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n }\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data,\n });\n req.on(\"success\", fn);\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr post error\", xhrStatus, context);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr poll error\", xhrStatus, context);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @package\n */\n constructor(createRequest, uri, opts) {\n super();\n this.createRequest = createRequest;\n installTimerFunctions(this, opts);\n this._opts = opts;\n this._method = opts.method || \"GET\";\n this._uri = uri;\n this._data = undefined !== opts.data ? opts.data : null;\n this._create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @private\n */\n _create() {\n var _a;\n const opts = pick(this._opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this._opts.xd;\n const xhr = (this._xhr = this.createRequest(opts));\n try {\n xhr.open(this._method, this._uri, true);\n try {\n if (this._opts.extraHeaders) {\n // @ts-ignore\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this._opts.extraHeaders) {\n if (this._opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this._opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this._method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n (_a = this._opts.cookieJar) === null || _a === void 0 ? void 0 : _a.addCookies(xhr);\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this._opts.withCredentials;\n }\n if (this._opts.requestTimeout) {\n xhr.timeout = this._opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n var _a;\n if (xhr.readyState === 3) {\n (_a = this._opts.cookieJar) === null || _a === void 0 ? void 0 : _a.parseCookies(\n // @ts-ignore\n xhr.getResponseHeader(\"set-cookie\"));\n }\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this._onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this._onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this._data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this._onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this._index = Request.requestsCount++;\n Request.requests[this._index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @private\n */\n _onError(err) {\n this.emitReserved(\"error\", err, this._xhr);\n this._cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @private\n */\n _cleanup(fromError) {\n if (\"undefined\" === typeof this._xhr || null === this._xhr) {\n return;\n }\n this._xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this._xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this._index];\n }\n this._xhr = null;\n }\n /**\n * Called upon load.\n *\n * @private\n */\n _onLoad() {\n const data = this._xhr.responseText;\n if (data !== null) {\n this.emitReserved(\"data\", data);\n this.emitReserved(\"success\");\n this._cleanup();\n }\n }\n /**\n * Aborts the request.\n *\n * @package\n */\n abort() {\n this._cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\nconst hasXHR2 = (function () {\n const xhr = newRequest({\n xdomain: false,\n });\n return xhr && xhr.responseType !== null;\n})();\n/**\n * HTTP long-polling based on the built-in `XMLHttpRequest` object.\n *\n * Usage: browser\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest\n */\nexport class XHR extends BaseXHR {\n constructor(opts) {\n super(opts);\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd }, this.opts);\n return new Request(newRequest, this.uri(), opts);\n }\n}\nfunction newRequest(opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { pick, randomString } from \"../util.js\";\nimport { encodePacket } from \"engine.io-parser\";\nimport { globalThisShim as globalThis, nextTick } from \"../globals.node.js\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class BaseWS extends Transport {\n get name() {\n return \"websocket\";\n }\n doOpen() {\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws = this.createSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = (closeEvent) => this.onClose({\n description: \"websocket connection closed\",\n context: closeEvent,\n });\n this.ws.onmessage = (ev) => this.onData(ev.data);\n this.ws.onerror = (e) => this.onError(\"websocket error\", e);\n }\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, (data) => {\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n this.doWrite(packet, data);\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.onerror = () => { };\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n const query = this.query || {};\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = randomString();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n return this.createUri(schema, query);\n }\n}\nconst WebSocketCtor = globalThis.WebSocket || globalThis.MozWebSocket;\n/**\n * WebSocket transport based on the built-in `WebSocket` object.\n *\n * Usage: browser, Node.js (since v21), Deno, Bun\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @see https://caniuse.com/mdn-api_websocket\n * @see https://nodejs.org/api/globals.html#websocket\n */\nexport class WS extends BaseWS {\n createSocket(uri, protocols, opts) {\n return !isReactNative\n ? protocols\n ? new WebSocketCtor(uri, protocols)\n : new WebSocketCtor(uri)\n : new WebSocketCtor(uri, protocols, opts);\n }\n doWrite(_packet, data) {\n this.ws.send(data);\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { nextTick } from \"../globals.node.js\";\nimport { createPacketDecoderStream, createPacketEncoderStream, } from \"engine.io-parser\";\n/**\n * WebTransport transport based on the built-in `WebTransport` object.\n *\n * Usage: browser, Node.js (with the `@fails-components/webtransport` package)\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebTransport\n * @see https://caniuse.com/webtransport\n */\nexport class WT extends Transport {\n get name() {\n return \"webtransport\";\n }\n doOpen() {\n try {\n // @ts-ignore\n this._transport = new WebTransport(this.createUri(\"https\"), this.opts.transportOptions[this.name]);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this._transport.closed\n .then(() => {\n this.onClose();\n })\n .catch((err) => {\n this.onError(\"webtransport error\", err);\n });\n // note: we could have used async/await, but that would require some additional polyfills\n this._transport.ready.then(() => {\n this._transport.createBidirectionalStream().then((stream) => {\n const decoderStream = createPacketDecoderStream(Number.MAX_SAFE_INTEGER, this.socket.binaryType);\n const reader = stream.readable.pipeThrough(decoderStream).getReader();\n const encoderStream = createPacketEncoderStream();\n encoderStream.readable.pipeTo(stream.writable);\n this._writer = encoderStream.writable.getWriter();\n const read = () => {\n reader\n .read()\n .then(({ done, value }) => {\n if (done) {\n return;\n }\n this.onPacket(value);\n read();\n })\n .catch((err) => {\n });\n };\n read();\n const packet = { type: \"open\" };\n if (this.query.sid) {\n packet.data = `{\"sid\":\"${this.query.sid}\"}`;\n }\n this._writer.write(packet).then(() => this.onOpen());\n });\n });\n }\n write(packets) {\n this.writable = false;\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n this._writer.write(packet).then(() => {\n if (lastPacket) {\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n var _a;\n (_a = this._transport) === null || _a === void 0 ? void 0 : _a.close();\n }\n}\n","import { XHR } from \"./polling-xhr.node.js\";\nimport { WS } from \"./websocket.node.js\";\nimport { WT } from \"./webtransport.js\";\nexport const transports = {\n websocket: WS,\n webtransport: WT,\n polling: XHR,\n};\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses a URI\n *\n * Note: we could also have used the built-in URL object, but it isn't supported on all platforms.\n *\n * See:\n * - https://developer.mozilla.org/en-US/docs/Web/API/URL\n * - https://caniuse.com/url\n * - https://www.rfc-editor.org/rfc/rfc3986#appendix-B\n *\n * History of the parse() method:\n * - first commit: https://github.com/socketio/socket.io-client/commit/4ee1d5d94b3906a9c052b459f1a818b15f38f91c\n * - export into its own module: https://github.com/socketio/engine.io-client/commit/de2c561e4564efeb78f1bdb1ba39ef81b2822cb3\n * - reimport: https://github.com/socketio/engine.io-client/commit/df32277c3f6d622eec5ed09f493cae3f3391d242\n *\n * @author Steven Levithan (MIT license)\n * @api private\n */\nconst re = /^(?:(?![^:@\\/?#]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@\\/?#]*)(?::([^:@\\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\nexport function parse(str) {\n if (str.length > 8000) {\n throw \"URI too long\";\n }\n const src = str, b = str.indexOf('['), e = str.indexOf(']');\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n let m = re.exec(str || ''), uri = {}, i = 14;\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n return uri;\n}\nfunction pathNames(obj, path) {\n const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n if (path.slice(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.slice(-1) == '/') {\n names.splice(names.length - 1, 1);\n }\n return names;\n}\nfunction queryKey(uri, query) {\n const data = {};\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n return data;\n}\n","import { transports as DEFAULT_TRANSPORTS } from \"./transports/index.js\";\nimport { installTimerFunctions, byteLength } from \"./util.js\";\nimport { decode } from \"./contrib/parseqs.js\";\nimport { parse } from \"./contrib/parseuri.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol } from \"engine.io-parser\";\nimport { createCookieJar, defaultBinaryType, nextTick, } from \"./globals.node.js\";\nconst withEventListeners = typeof addEventListener === \"function\" &&\n typeof removeEventListener === \"function\";\nconst OFFLINE_EVENT_LISTENERS = [];\nif (withEventListeners) {\n // within a ServiceWorker, any event handler for the 'offline' event must be added on the initial evaluation of the\n // script, so we create one single event listener here which will forward the event to the socket instances\n addEventListener(\"offline\", () => {\n OFFLINE_EVENT_LISTENERS.forEach((listener) => listener());\n }, false);\n}\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes without upgrade mechanism, which means that it will keep the first low-level transport that\n * successfully establishes the connection.\n *\n * In order to allow tree-shaking, there are no transports included, that's why the `transports` option is mandatory.\n *\n * @example\n * import { SocketWithoutUpgrade, WebSocket } from \"engine.io-client\";\n *\n * const socket = new SocketWithoutUpgrade({\n * transports: [WebSocket]\n * });\n *\n * socket.on(\"open\", () => {\n * socket.send(\"hello\");\n * });\n *\n * @see SocketWithUpgrade\n * @see Socket\n */\nexport class SocketWithoutUpgrade extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri - uri or options\n * @param {Object} opts - options\n */\n constructor(uri, opts) {\n super();\n this.binaryType = defaultBinaryType;\n this.writeBuffer = [];\n this._prevBufferLen = 0;\n this._pingInterval = -1;\n this._pingTimeout = -1;\n this._maxPayload = -1;\n /**\n * The expiration timestamp of the {@link _pingTimeoutTimer} object is tracked, in case the timer is throttled and the\n * callback is not fired on time. This can happen for example when a laptop is suspended or when a phone is locked.\n */\n this._pingTimeoutTime = Infinity;\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n const parsedUri = parse(uri);\n opts.hostname = parsedUri.host;\n opts.secure =\n parsedUri.protocol === \"https\" || parsedUri.protocol === \"wss\";\n opts.port = parsedUri.port;\n if (parsedUri.query)\n opts.query = parsedUri.query;\n }\n else if (opts.host) {\n opts.hostname = parse(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = [];\n this._transportsByName = {};\n opts.transports.forEach((t) => {\n const transportName = t.prototype.name;\n this.transports.push(transportName);\n this._transportsByName[transportName] = t;\n });\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n addTrailingSlash: true,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024,\n },\n transportOptions: {},\n closeOnBeforeunload: false,\n }, opts);\n this.opts.path =\n this.opts.path.replace(/\\/$/, \"\") +\n (this.opts.addTrailingSlash ? \"/\" : \"\");\n if (typeof this.opts.query === \"string\") {\n this.opts.query = decode(this.opts.query);\n }\n if (withEventListeners) {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n this._beforeunloadEventListener = () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n };\n addEventListener(\"beforeunload\", this._beforeunloadEventListener, false);\n }\n if (this.hostname !== \"localhost\") {\n this._offlineEventListener = () => {\n this._onClose(\"transport close\", {\n description: \"network connection lost\",\n });\n };\n OFFLINE_EVENT_LISTENERS.push(this._offlineEventListener);\n }\n }\n if (this.opts.withCredentials) {\n this._cookieJar = createCookieJar();\n }\n this._open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} name - transport name\n * @return {Transport}\n * @private\n */\n createTransport(name) {\n const query = Object.assign({}, this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port,\n }, this.opts.transportOptions[name]);\n return new this._transportsByName[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @private\n */\n _open() {\n if (this.transports.length === 0) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n const transportName = this.opts.rememberUpgrade &&\n SocketWithoutUpgrade.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1\n ? \"websocket\"\n : this.transports[0];\n this.readyState = \"opening\";\n const transport = this.createTransport(transportName);\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this._onDrain.bind(this))\n .on(\"packet\", this._onPacket.bind(this))\n .on(\"error\", this._onError.bind(this))\n .on(\"close\", (reason) => this._onClose(\"transport close\", reason));\n }\n /**\n * Called when connection is deemed open.\n *\n * @private\n */\n onOpen() {\n this.readyState = \"open\";\n SocketWithoutUpgrade.priorWebsocketSuccess =\n \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n }\n /**\n * Handles a packet.\n *\n * @private\n */\n _onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this._sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n this._resetPingTimeout();\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this._onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this._pingInterval = data.pingInterval;\n this._pingTimeout = data.pingTimeout;\n this._maxPayload = data.maxPayload;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this._resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @private\n */\n _resetPingTimeout() {\n this.clearTimeoutFn(this._pingTimeoutTimer);\n const delay = this._pingInterval + this._pingTimeout;\n this._pingTimeoutTime = Date.now() + delay;\n this._pingTimeoutTimer = this.setTimeoutFn(() => {\n this._onClose(\"ping timeout\");\n }, delay);\n if (this.opts.autoUnref) {\n this._pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @private\n */\n _onDrain() {\n this.writeBuffer.splice(0, this._prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this._prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n const packets = this._getWritablePackets();\n this.transport.send(packets);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this._prevBufferLen = packets.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n * long-polling)\n *\n * @private\n */\n _getWritablePackets() {\n const shouldCheckPayloadSize = this._maxPayload &&\n this.transport.name === \"polling\" &&\n this.writeBuffer.length > 1;\n if (!shouldCheckPayloadSize) {\n return this.writeBuffer;\n }\n let payloadSize = 1; // first packet type\n for (let i = 0; i < this.writeBuffer.length; i++) {\n const data = this.writeBuffer[i].data;\n if (data) {\n payloadSize += byteLength(data);\n }\n if (i > 0 && payloadSize > this._maxPayload) {\n return this.writeBuffer.slice(0, i);\n }\n payloadSize += 2; // separator + packet type\n }\n return this.writeBuffer;\n }\n /**\n * Checks whether the heartbeat timer has expired but the socket has not yet been notified.\n *\n * Note: this method is private for now because it does not really fit the WebSocket API, but if we put it in the\n * `write()` method then the message would not be buffered by the Socket.IO client.\n *\n * @return {boolean}\n * @private\n */\n /* private */ _hasPingExpired() {\n if (!this._pingTimeoutTime)\n return true;\n const hasExpired = Date.now() > this._pingTimeoutTime;\n if (hasExpired) {\n this._pingTimeoutTime = 0;\n nextTick(() => {\n this._onClose(\"ping timeout\");\n }, this.setTimeoutFn);\n }\n return hasExpired;\n }\n /**\n * Sends a message.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @return {Socket} for chaining.\n */\n write(msg, options, fn) {\n this._sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a message. Alias of {@link Socket#write}.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @return {Socket} for chaining.\n */\n send(msg, options, fn) {\n this._sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} type: packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @private\n */\n _sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options,\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n */\n close() {\n const close = () => {\n this._onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @private\n */\n _onError(err) {\n SocketWithoutUpgrade.priorWebsocketSuccess = false;\n if (this.opts.tryAllTransports &&\n this.transports.length > 1 &&\n this.readyState === \"opening\") {\n this.transports.shift();\n return this._open();\n }\n this.emitReserved(\"error\", err);\n this._onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @private\n */\n _onClose(reason, description) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this._pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (withEventListeners) {\n if (this._beforeunloadEventListener) {\n removeEventListener(\"beforeunload\", this._beforeunloadEventListener, false);\n }\n if (this._offlineEventListener) {\n const i = OFFLINE_EVENT_LISTENERS.indexOf(this._offlineEventListener);\n if (i !== -1) {\n OFFLINE_EVENT_LISTENERS.splice(i, 1);\n }\n }\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, description);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this._prevBufferLen = 0;\n }\n }\n}\nSocketWithoutUpgrade.protocol = protocol;\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes with an upgrade mechanism, which means that once the connection is established with the first\n * low-level transport, it will try to upgrade to a better transport.\n *\n * In order to allow tree-shaking, there are no transports included, that's why the `transports` option is mandatory.\n *\n * @example\n * import { SocketWithUpgrade, WebSocket } from \"engine.io-client\";\n *\n * const socket = new SocketWithUpgrade({\n * transports: [WebSocket]\n * });\n *\n * socket.on(\"open\", () => {\n * socket.send(\"hello\");\n * });\n *\n * @see SocketWithoutUpgrade\n * @see Socket\n */\nexport class SocketWithUpgrade extends SocketWithoutUpgrade {\n constructor() {\n super(...arguments);\n this._upgrades = [];\n }\n onOpen() {\n super.onOpen();\n if (\"open\" === this.readyState && this.opts.upgrade) {\n for (let i = 0; i < this._upgrades.length; i++) {\n this._probe(this._upgrades[i]);\n }\n }\n }\n /**\n * Probes a transport.\n *\n * @param {String} name - transport name\n * @private\n */\n _probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n SocketWithoutUpgrade.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", (msg) => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n SocketWithoutUpgrade.priorWebsocketSuccess =\n \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = (err) => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n if (this._upgrades.indexOf(\"webtransport\") !== -1 &&\n name !== \"webtransport\") {\n // favor WebTransport\n this.setTimeoutFn(() => {\n if (!failed) {\n transport.open();\n }\n }, 200);\n }\n else {\n transport.open();\n }\n }\n onHandshake(data) {\n this._upgrades = this._filterUpgrades(data.upgrades);\n super.onHandshake(data);\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} upgrades - server upgrades\n * @private\n */\n _filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n for (let i = 0; i < upgrades.length; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes with an upgrade mechanism, which means that once the connection is established with the first\n * low-level transport, it will try to upgrade to a better transport.\n *\n * @example\n * import { Socket } from \"engine.io-client\";\n *\n * const socket = new Socket();\n *\n * socket.on(\"open\", () => {\n * socket.send(\"hello\");\n * });\n *\n * @see SocketWithoutUpgrade\n * @see SocketWithUpgrade\n */\nexport class Socket extends SocketWithUpgrade {\n constructor(uri, opts = {}) {\n const o = typeof uri === \"object\" ? uri : opts;\n if (!o.transports ||\n (o.transports && typeof o.transports[0] === \"string\")) {\n o.transports = (o.transports || [\"polling\", \"websocket\", \"webtransport\"])\n .map((transportName) => DEFAULT_TRANSPORTS[transportName])\n .filter((t) => !!t);\n }\n super(uri, o);\n }\n}\n","import { parse } from \"engine.io-client\";\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n * Defaults to window.location.\n * @public\n */\nexport function url(uri, path = \"\", loc) {\n let obj = uri;\n // default to window.location\n loc = loc || (typeof location !== \"undefined\" && location);\n if (null == uri)\n uri = loc.protocol + \"//\" + loc.host;\n // relative path support\n if (typeof uri === \"string\") {\n if (\"/\" === uri.charAt(0)) {\n if (\"/\" === uri.charAt(1)) {\n uri = loc.protocol + uri;\n }\n else {\n uri = loc.host + uri;\n }\n }\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n if (\"undefined\" !== typeof loc) {\n uri = loc.protocol + \"//\" + uri;\n }\n else {\n uri = \"https://\" + uri;\n }\n }\n // parse\n obj = parse(uri);\n }\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = \"80\";\n }\n else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = \"443\";\n }\n }\n obj.path = obj.path || \"/\";\n const ipv6 = obj.host.indexOf(\":\") !== -1;\n const host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host;\n // define unique id\n obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n // define href\n obj.href =\n obj.protocol +\n \"://\" +\n host +\n (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n return obj;\n}\n","const withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj.buffer instanceof ArrayBuffer;\n};\nconst toString = Object.prototype.toString;\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeFile = typeof File === \"function\" ||\n (typeof File !== \"undefined\" &&\n toString.call(File) === \"[object FileConstructor]\");\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */\nexport function isBinary(obj) {\n return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File));\n}\nexport function hasBinary(obj, toJSON) {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n if (isBinary(obj)) {\n return true;\n }\n if (obj.toJSON &&\n typeof obj.toJSON === \"function\" &&\n arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n return false;\n}\n","import { isBinary } from \"./is-binary.js\";\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */\nexport function deconstructPacket(packet) {\n const buffers = [];\n const packetData = packet.data;\n const pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return { packet: pack, buffers: buffers };\n}\nfunction _deconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (isBinary(data)) {\n const placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n }\n else if (Array.isArray(data)) {\n const newData = new Array(data.length);\n for (let i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n }\n else if (typeof data === \"object\" && !(data instanceof Date)) {\n const newData = {};\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n }\n return newData;\n }\n return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */\nexport function reconstructPacket(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n delete packet.attachments; // no longer useful\n return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (data && data._placeholder === true) {\n const isIndexValid = typeof data.num === \"number\" &&\n data.num >= 0 &&\n data.num < buffers.length;\n if (isIndexValid) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n }\n else {\n throw new Error(\"illegal attachments\");\n }\n }\n else if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n }\n else if (typeof data === \"object\") {\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n }\n return data;\n}\n","import { Emitter } from \"@socket.io/component-emitter\";\nimport { deconstructPacket, reconstructPacket } from \"./binary.js\";\nimport { isBinary, hasBinary } from \"./is-binary.js\";\n/**\n * These strings must not be used as event names, as they have a special meaning.\n */\nconst RESERVED_EVENTS = [\n \"connect\",\n \"connect_error\",\n \"disconnect\",\n \"disconnecting\",\n \"newListener\",\n \"removeListener\", // used by the Node.js EventEmitter\n];\n/**\n * Protocol version.\n *\n * @public\n */\nexport const protocol = 5;\nexport var PacketType;\n(function (PacketType) {\n PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\nexport class Encoder {\n /**\n * Encoder constructor\n *\n * @param {function} replacer - custom replacer to pass down to JSON.parse\n */\n constructor(replacer) {\n this.replacer = replacer;\n }\n /**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n */\n encode(obj) {\n if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n if (hasBinary(obj)) {\n return this.encodeAsBinary({\n type: obj.type === PacketType.EVENT\n ? PacketType.BINARY_EVENT\n : PacketType.BINARY_ACK,\n nsp: obj.nsp,\n data: obj.data,\n id: obj.id,\n });\n }\n }\n return [this.encodeAsString(obj)];\n }\n /**\n * Encode packet as string.\n */\n encodeAsString(obj) {\n // first is type\n let str = \"\" + obj.type;\n // attachments if we have them\n if (obj.type === PacketType.BINARY_EVENT ||\n obj.type === PacketType.BINARY_ACK) {\n str += obj.attachments + \"-\";\n }\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && \"/\" !== obj.nsp) {\n str += obj.nsp + \",\";\n }\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n // json data\n if (null != obj.data) {\n str += JSON.stringify(obj.data, this.replacer);\n }\n return str;\n }\n /**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n */\n encodeAsBinary(obj) {\n const deconstruction = deconstructPacket(obj);\n const pack = this.encodeAsString(deconstruction.packet);\n const buffers = deconstruction.buffers;\n buffers.unshift(pack); // add packet info to beginning of data list\n return buffers; // write all the buffers\n }\n}\n// see https://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript\nfunction isObject(value) {\n return Object.prototype.toString.call(value) === \"[object Object]\";\n}\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\nexport class Decoder extends Emitter {\n /**\n * Decoder constructor\n *\n * @param {function} reviver - custom reviver to pass down to JSON.stringify\n */\n constructor(reviver) {\n super();\n this.reviver = reviver;\n }\n /**\n * Decodes an encoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n */\n add(obj) {\n let packet;\n if (typeof obj === \"string\") {\n if (this.reconstructor) {\n throw new Error(\"got plaintext data when reconstructing a packet\");\n }\n packet = this.decodeString(obj);\n const isBinaryEvent = packet.type === PacketType.BINARY_EVENT;\n if (isBinaryEvent || packet.type === PacketType.BINARY_ACK) {\n packet.type = isBinaryEvent ? PacketType.EVENT : PacketType.ACK;\n // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n // no attachments, labeled binary but no binary data to follow\n if (packet.attachments === 0) {\n super.emitReserved(\"decoded\", packet);\n }\n }\n else {\n // non-binary full packet\n super.emitReserved(\"decoded\", packet);\n }\n }\n else if (isBinary(obj) || obj.base64) {\n // raw binary data\n if (!this.reconstructor) {\n throw new Error(\"got binary data when not reconstructing a packet\");\n }\n else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) {\n // received final buffer\n this.reconstructor = null;\n super.emitReserved(\"decoded\", packet);\n }\n }\n }\n else {\n throw new Error(\"Unknown type: \" + obj);\n }\n }\n /**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n */\n decodeString(str) {\n let i = 0;\n // look up type\n const p = {\n type: Number(str.charAt(0)),\n };\n if (PacketType[p.type] === undefined) {\n throw new Error(\"unknown packet type \" + p.type);\n }\n // look up attachments if type binary\n if (p.type === PacketType.BINARY_EVENT ||\n p.type === PacketType.BINARY_ACK) {\n const start = i + 1;\n while (str.charAt(++i) !== \"-\" && i != str.length) { }\n const buf = str.substring(start, i);\n if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n throw new Error(\"Illegal attachments\");\n }\n p.attachments = Number(buf);\n }\n // look up namespace (if any)\n if (\"/\" === str.charAt(i + 1)) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (\",\" === c)\n break;\n if (i === str.length)\n break;\n }\n p.nsp = str.substring(start, i);\n }\n else {\n p.nsp = \"/\";\n }\n // look up id\n const next = str.charAt(i + 1);\n if (\"\" !== next && Number(next) == next) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n if (i === str.length)\n break;\n }\n p.id = Number(str.substring(start, i + 1));\n }\n // look up json data\n if (str.charAt(++i)) {\n const payload = this.tryParse(str.substr(i));\n if (Decoder.isPayloadValid(p.type, payload)) {\n p.data = payload;\n }\n else {\n throw new Error(\"invalid payload\");\n }\n }\n return p;\n }\n tryParse(str) {\n try {\n return JSON.parse(str, this.reviver);\n }\n catch (e) {\n return false;\n }\n }\n static isPayloadValid(type, payload) {\n switch (type) {\n case PacketType.CONNECT:\n return isObject(payload);\n case PacketType.DISCONNECT:\n return payload === undefined;\n case PacketType.CONNECT_ERROR:\n return typeof payload === \"string\" || isObject(payload);\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n return (Array.isArray(payload) &&\n (typeof payload[0] === \"number\" ||\n (typeof payload[0] === \"string\" &&\n RESERVED_EVENTS.indexOf(payload[0]) === -1)));\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n return Array.isArray(payload);\n }\n }\n /**\n * Deallocates a parser's resources\n */\n destroy() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n this.reconstructor = null;\n }\n }\n}\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\nclass BinaryReconstructor {\n constructor(packet) {\n this.packet = packet;\n this.buffers = [];\n this.reconPack = packet;\n }\n /**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n */\n takeBinaryData(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) {\n // done with buffer list\n const packet = reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n }\n /**\n * Cleans up binary packet reconstruction variables.\n */\n finishedReconstruction() {\n this.reconPack = null;\n this.buffers = [];\n }\n}\n","export function on(obj, ev, fn) {\n obj.on(ev, fn);\n return function subDestroy() {\n obj.off(ev, fn);\n };\n}\n","import { PacketType } from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\nconst RESERVED_EVENTS = Object.freeze({\n connect: 1,\n connect_error: 1,\n disconnect: 1,\n disconnecting: 1,\n // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n newListener: 1,\n removeListener: 1,\n});\n/**\n * A Socket is the fundamental class for interacting with the server.\n *\n * A Socket belongs to a certain Namespace (by default /) and uses an underlying {@link Manager} to communicate.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(\"connected\");\n * });\n *\n * // send an event to the server\n * socket.emit(\"foo\", \"bar\");\n *\n * socket.on(\"foobar\", () => {\n * // an event was received from the server\n * });\n *\n * // upon disconnection\n * socket.on(\"disconnect\", (reason) => {\n * console.log(`disconnected due to ${reason}`);\n * });\n */\nexport class Socket extends Emitter {\n /**\n * `Socket` constructor.\n */\n constructor(io, nsp, opts) {\n super();\n /**\n * Whether the socket is currently connected to the server.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.connected); // true\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.connected); // false\n * });\n */\n this.connected = false;\n /**\n * Whether the connection state was recovered after a temporary disconnection. In that case, any missed packets will\n * be transmitted by the server.\n */\n this.recovered = false;\n /**\n * Buffer for packets received before the CONNECT packet\n */\n this.receiveBuffer = [];\n /**\n * Buffer for packets that will be sent once the socket is connected\n */\n this.sendBuffer = [];\n /**\n * The queue of packets to be sent with retry in case of failure.\n *\n * Packets are sent one by one, each waiting for the server acknowledgement, in order to guarantee the delivery order.\n * @private\n */\n this._queue = [];\n /**\n * A sequence to generate the ID of the {@link QueuedPacket}.\n * @private\n */\n this._queueSeq = 0;\n this.ids = 0;\n /**\n * A map containing acknowledgement handlers.\n *\n * The `withError` attribute is used to differentiate handlers that accept an error as first argument:\n *\n * - `socket.emit(\"test\", (err, value) => { ... })` with `ackTimeout` option\n * - `socket.timeout(5000).emit(\"test\", (err, value) => { ... })`\n * - `const value = await socket.emitWithAck(\"test\")`\n *\n * From those that don't:\n *\n * - `socket.emit(\"test\", (value) => { ... });`\n *\n * In the first case, the handlers will be called with an error when:\n *\n * - the timeout is reached\n * - the socket gets disconnected\n *\n * In the second case, the handlers will be simply discarded upon disconnection, since the client will never receive\n * an acknowledgement from the server.\n *\n * @private\n */\n this.acks = {};\n this.flags = {};\n this.io = io;\n this.nsp = nsp;\n if (opts && opts.auth) {\n this.auth = opts.auth;\n }\n this._opts = Object.assign({}, opts);\n if (this.io._autoConnect)\n this.open();\n }\n /**\n * Whether the socket is currently disconnected\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.disconnected); // false\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.disconnected); // true\n * });\n */\n get disconnected() {\n return !this.connected;\n }\n /**\n * Subscribe to open, close and packet events\n *\n * @private\n */\n subEvents() {\n if (this.subs)\n return;\n const io = this.io;\n this.subs = [\n on(io, \"open\", this.onopen.bind(this)),\n on(io, \"packet\", this.onpacket.bind(this)),\n on(io, \"error\", this.onerror.bind(this)),\n on(io, \"close\", this.onclose.bind(this)),\n ];\n }\n /**\n * Whether the Socket will try to reconnect when its Manager connects or reconnects.\n *\n * @example\n * const socket = io();\n *\n * console.log(socket.active); // true\n *\n * socket.on(\"disconnect\", (reason) => {\n * if (reason === \"io server disconnect\") {\n * // the disconnection was initiated by the server, you need to manually reconnect\n * console.log(socket.active); // false\n * }\n * // else the socket will automatically try to reconnect\n * console.log(socket.active); // true\n * });\n */\n get active() {\n return !!this.subs;\n }\n /**\n * \"Opens\" the socket.\n *\n * @example\n * const socket = io({\n * autoConnect: false\n * });\n *\n * socket.connect();\n */\n connect() {\n if (this.connected)\n return this;\n this.subEvents();\n if (!this.io[\"_reconnecting\"])\n this.io.open(); // ensure open\n if (\"open\" === this.io._readyState)\n this.onopen();\n return this;\n }\n /**\n * Alias for {@link connect()}.\n */\n open() {\n return this.connect();\n }\n /**\n * Sends a `message` event.\n *\n * This method mimics the WebSocket.send() method.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send\n *\n * @example\n * socket.send(\"hello\");\n *\n * // this is equivalent to\n * socket.emit(\"message\", \"hello\");\n *\n * @return self\n */\n send(...args) {\n args.unshift(\"message\");\n this.emit.apply(this, args);\n return this;\n }\n /**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @example\n * socket.emit(\"hello\", \"world\");\n *\n * // all serializable datastructures are supported (no need to call JSON.stringify)\n * socket.emit(\"hello\", 1, \"2\", { 3: [\"4\"], 5: Uint8Array.from([6]) });\n *\n * // with an acknowledgement from the server\n * socket.emit(\"hello\", \"world\", (val) => {\n * // ...\n * });\n *\n * @return self\n */\n emit(ev, ...args) {\n var _a, _b, _c;\n if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n throw new Error('\"' + ev.toString() + '\" is a reserved event name');\n }\n args.unshift(ev);\n if (this._opts.retries && !this.flags.fromQueue && !this.flags.volatile) {\n this._addToQueue(args);\n return this;\n }\n const packet = {\n type: PacketType.EVENT,\n data: args,\n };\n packet.options = {};\n packet.options.compress = this.flags.compress !== false;\n // event ack callback\n if (\"function\" === typeof args[args.length - 1]) {\n const id = this.ids++;\n const ack = args.pop();\n this._registerAckCallback(id, ack);\n packet.id = id;\n }\n const isTransportWritable = (_b = (_a = this.io.engine) === null || _a === void 0 ? void 0 : _a.transport) === null || _b === void 0 ? void 0 : _b.writable;\n const isConnected = this.connected && !((_c = this.io.engine) === null || _c === void 0 ? void 0 : _c._hasPingExpired());\n const discardPacket = this.flags.volatile && !isTransportWritable;\n if (discardPacket) {\n }\n else if (isConnected) {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n }\n else {\n this.sendBuffer.push(packet);\n }\n this.flags = {};\n return this;\n }\n /**\n * @private\n */\n _registerAckCallback(id, ack) {\n var _a;\n const timeout = (_a = this.flags.timeout) !== null && _a !== void 0 ? _a : this._opts.ackTimeout;\n if (timeout === undefined) {\n this.acks[id] = ack;\n return;\n }\n // @ts-ignore\n const timer = this.io.setTimeoutFn(() => {\n delete this.acks[id];\n for (let i = 0; i < this.sendBuffer.length; i++) {\n if (this.sendBuffer[i].id === id) {\n this.sendBuffer.splice(i, 1);\n }\n }\n ack.call(this, new Error(\"operation has timed out\"));\n }, timeout);\n const fn = (...args) => {\n // @ts-ignore\n this.io.clearTimeoutFn(timer);\n ack.apply(this, args);\n };\n fn.withError = true;\n this.acks[id] = fn;\n }\n /**\n * Emits an event and waits for an acknowledgement\n *\n * @example\n * // without timeout\n * const response = await socket.emitWithAck(\"hello\", \"world\");\n *\n * // with a specific timeout\n * try {\n * const response = await socket.timeout(1000).emitWithAck(\"hello\", \"world\");\n * } catch (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n *\n * @return a Promise that will be fulfilled when the server acknowledges the event\n */\n emitWithAck(ev, ...args) {\n return new Promise((resolve, reject) => {\n const fn = (arg1, arg2) => {\n return arg1 ? reject(arg1) : resolve(arg2);\n };\n fn.withError = true;\n args.push(fn);\n this.emit(ev, ...args);\n });\n }\n /**\n * Add the packet to the queue.\n * @param args\n * @private\n */\n _addToQueue(args) {\n let ack;\n if (typeof args[args.length - 1] === \"function\") {\n ack = args.pop();\n }\n const packet = {\n id: this._queueSeq++,\n tryCount: 0,\n pending: false,\n args,\n flags: Object.assign({ fromQueue: true }, this.flags),\n };\n args.push((err, ...responseArgs) => {\n if (packet !== this._queue[0]) {\n // the packet has already been acknowledged\n return;\n }\n const hasError = err !== null;\n if (hasError) {\n if (packet.tryCount > this._opts.retries) {\n this._queue.shift();\n if (ack) {\n ack(err);\n }\n }\n }\n else {\n this._queue.shift();\n if (ack) {\n ack(null, ...responseArgs);\n }\n }\n packet.pending = false;\n return this._drainQueue();\n });\n this._queue.push(packet);\n this._drainQueue();\n }\n /**\n * Send the first packet of the queue, and wait for an acknowledgement from the server.\n * @param force - whether to resend a packet that has not been acknowledged yet\n *\n * @private\n */\n _drainQueue(force = false) {\n if (!this.connected || this._queue.length === 0) {\n return;\n }\n const packet = this._queue[0];\n if (packet.pending && !force) {\n return;\n }\n packet.pending = true;\n packet.tryCount++;\n this.flags = packet.flags;\n this.emit.apply(this, packet.args);\n }\n /**\n * Sends a packet.\n *\n * @param packet\n * @private\n */\n packet(packet) {\n packet.nsp = this.nsp;\n this.io._packet(packet);\n }\n /**\n * Called upon engine `open`.\n *\n * @private\n */\n onopen() {\n if (typeof this.auth == \"function\") {\n this.auth((data) => {\n this._sendConnectPacket(data);\n });\n }\n else {\n this._sendConnectPacket(this.auth);\n }\n }\n /**\n * Sends a CONNECT packet to initiate the Socket.IO session.\n *\n * @param data\n * @private\n */\n _sendConnectPacket(data) {\n this.packet({\n type: PacketType.CONNECT,\n data: this._pid\n ? Object.assign({ pid: this._pid, offset: this._lastOffset }, data)\n : data,\n });\n }\n /**\n * Called upon engine or manager `error`.\n *\n * @param err\n * @private\n */\n onerror(err) {\n if (!this.connected) {\n this.emitReserved(\"connect_error\", err);\n }\n }\n /**\n * Called upon engine `close`.\n *\n * @param reason\n * @param description\n * @private\n */\n onclose(reason, description) {\n this.connected = false;\n delete this.id;\n this.emitReserved(\"disconnect\", reason, description);\n this._clearAcks();\n }\n /**\n * Clears the acknowledgement handlers upon disconnection, since the client will never receive an acknowledgement from\n * the server.\n *\n * @private\n */\n _clearAcks() {\n Object.keys(this.acks).forEach((id) => {\n const isBuffered = this.sendBuffer.some((packet) => String(packet.id) === id);\n if (!isBuffered) {\n // note: handlers that do not accept an error as first argument are ignored here\n const ack = this.acks[id];\n delete this.acks[id];\n if (ack.withError) {\n ack.call(this, new Error(\"socket has been disconnected\"));\n }\n }\n });\n }\n /**\n * Called with socket packet.\n *\n * @param packet\n * @private\n */\n onpacket(packet) {\n const sameNamespace = packet.nsp === this.nsp;\n if (!sameNamespace)\n return;\n switch (packet.type) {\n case PacketType.CONNECT:\n if (packet.data && packet.data.sid) {\n this.onconnect(packet.data.sid, packet.data.pid);\n }\n else {\n this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n }\n break;\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n this.onevent(packet);\n break;\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n this.onack(packet);\n break;\n case PacketType.DISCONNECT:\n this.ondisconnect();\n break;\n case PacketType.CONNECT_ERROR:\n this.destroy();\n const err = new Error(packet.data.message);\n // @ts-ignore\n err.data = packet.data.data;\n this.emitReserved(\"connect_error\", err);\n break;\n }\n }\n /**\n * Called upon a server event.\n *\n * @param packet\n * @private\n */\n onevent(packet) {\n const args = packet.data || [];\n if (null != packet.id) {\n args.push(this.ack(packet.id));\n }\n if (this.connected) {\n this.emitEvent(args);\n }\n else {\n this.receiveBuffer.push(Object.freeze(args));\n }\n }\n emitEvent(args) {\n if (this._anyListeners && this._anyListeners.length) {\n const listeners = this._anyListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, args);\n }\n }\n super.emit.apply(this, args);\n if (this._pid && args.length && typeof args[args.length - 1] === \"string\") {\n this._lastOffset = args[args.length - 1];\n }\n }\n /**\n * Produces an ack callback to emit with an event.\n *\n * @private\n */\n ack(id) {\n const self = this;\n let sent = false;\n return function (...args) {\n // prevent double callbacks\n if (sent)\n return;\n sent = true;\n self.packet({\n type: PacketType.ACK,\n id: id,\n data: args,\n });\n };\n }\n /**\n * Called upon a server acknowledgement.\n *\n * @param packet\n * @private\n */\n onack(packet) {\n const ack = this.acks[packet.id];\n if (typeof ack !== \"function\") {\n return;\n }\n delete this.acks[packet.id];\n // @ts-ignore FIXME ack is incorrectly inferred as 'never'\n if (ack.withError) {\n packet.data.unshift(null);\n }\n // @ts-ignore\n ack.apply(this, packet.data);\n }\n /**\n * Called upon server connect.\n *\n * @private\n */\n onconnect(id, pid) {\n this.id = id;\n this.recovered = pid && this._pid === pid;\n this._pid = pid; // defined only if connection state recovery is enabled\n this.connected = true;\n this.emitBuffered();\n this.emitReserved(\"connect\");\n this._drainQueue(true);\n }\n /**\n * Emit buffered events (received and emitted).\n *\n * @private\n */\n emitBuffered() {\n this.receiveBuffer.forEach((args) => this.emitEvent(args));\n this.receiveBuffer = [];\n this.sendBuffer.forEach((packet) => {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n });\n this.sendBuffer = [];\n }\n /**\n * Called upon server disconnect.\n *\n * @private\n */\n ondisconnect() {\n this.destroy();\n this.onclose(\"io server disconnect\");\n }\n /**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @private\n */\n destroy() {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs = undefined;\n }\n this.io[\"_destroy\"](this);\n }\n /**\n * Disconnects the socket manually. In that case, the socket will not try to reconnect.\n *\n * If this is the last active Socket instance of the {@link Manager}, the low-level connection will be closed.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"disconnect\", (reason) => {\n * // console.log(reason); prints \"io client disconnect\"\n * });\n *\n * socket.disconnect();\n *\n * @return self\n */\n disconnect() {\n if (this.connected) {\n this.packet({ type: PacketType.DISCONNECT });\n }\n // remove socket from pool\n this.destroy();\n if (this.connected) {\n // fire events\n this.onclose(\"io client disconnect\");\n }\n return this;\n }\n /**\n * Alias for {@link disconnect()}.\n *\n * @return self\n */\n close() {\n return this.disconnect();\n }\n /**\n * Sets the compress flag.\n *\n * @example\n * socket.compress(false).emit(\"hello\");\n *\n * @param compress - if `true`, compresses the sending data\n * @return self\n */\n compress(compress) {\n this.flags.compress = compress;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n * ready to send messages.\n *\n * @example\n * socket.volatile.emit(\"hello\"); // the server may or may not receive it\n *\n * @returns self\n */\n get volatile() {\n this.flags.volatile = true;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n * given number of milliseconds have elapsed without an acknowledgement from the server:\n *\n * @example\n * socket.timeout(5000).emit(\"my-event\", (err) => {\n * if (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n * });\n *\n * @returns self\n */\n timeout(timeout) {\n this.flags.timeout = timeout;\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * @example\n * socket.onAny((event, ...args) => {\n * console.log(`got ${event}`);\n * });\n *\n * @param listener\n */\n onAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * @example\n * socket.prependAny((event, ...args) => {\n * console.log(`got event ${event}`);\n * });\n *\n * @param listener\n */\n prependAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`got event ${event}`);\n * }\n *\n * socket.onAny(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAny(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAny();\n *\n * @param listener\n */\n offAny(listener) {\n if (!this._anyListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAny() {\n return this._anyListeners || [];\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.onAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n onAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.prependAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n prependAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`sent event ${event}`);\n * }\n *\n * socket.onAnyOutgoing(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAnyOutgoing(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAnyOutgoing();\n *\n * @param [listener] - the catch-all listener (optional)\n */\n offAnyOutgoing(listener) {\n if (!this._anyOutgoingListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyOutgoingListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyOutgoingListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAnyOutgoing() {\n return this._anyOutgoingListeners || [];\n }\n /**\n * Notify the listeners for each packet sent\n *\n * @param packet\n *\n * @private\n */\n notifyOutgoingListeners(packet) {\n if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {\n const listeners = this._anyOutgoingListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, packet.data);\n }\n }\n }\n}\n","/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\nexport function Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\nBackoff.prototype.duration = function () {\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\nBackoff.prototype.reset = function () {\n this.attempts = 0;\n};\n/**\n * Set the minimum duration\n *\n * @api public\n */\nBackoff.prototype.setMin = function (min) {\n this.ms = min;\n};\n/**\n * Set the maximum duration\n *\n * @api public\n */\nBackoff.prototype.setMax = function (max) {\n this.max = max;\n};\n/**\n * Set the jitter\n *\n * @api public\n */\nBackoff.prototype.setJitter = function (jitter) {\n this.jitter = jitter;\n};\n","import { Socket as Engine, installTimerFunctions, nextTick, } from \"engine.io-client\";\nimport { Socket } from \"./socket.js\";\nimport * as parser from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Backoff } from \"./contrib/backo2.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\nexport class Manager extends Emitter {\n constructor(uri, opts) {\n var _a;\n super();\n this.nsps = {};\n this.subs = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n opts.path = opts.path || \"/socket.io\";\n this.opts = opts;\n installTimerFunctions(this, opts);\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor(),\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this._readyState = \"closed\";\n this.uri = uri;\n const _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this._autoConnect = opts.autoConnect !== false;\n if (this._autoConnect)\n this.open();\n }\n reconnection(v) {\n if (!arguments.length)\n return this._reconnection;\n this._reconnection = !!v;\n if (!v) {\n this.skipReconnect = true;\n }\n return this;\n }\n reconnectionAttempts(v) {\n if (v === undefined)\n return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n }\n reconnectionDelay(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelay;\n this._reconnectionDelay = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n return this;\n }\n randomizationFactor(v) {\n var _a;\n if (v === undefined)\n return this._randomizationFactor;\n this._randomizationFactor = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n return this;\n }\n reconnectionDelayMax(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n return this;\n }\n timeout(v) {\n if (!arguments.length)\n return this._timeout;\n this._timeout = v;\n return this;\n }\n /**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @private\n */\n maybeReconnectOnOpen() {\n // Only try to reconnect if it's the first time we're connecting\n if (!this._reconnecting &&\n this._reconnection &&\n this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n }\n /**\n * Sets the current transport `socket`.\n *\n * @param {Function} fn - optional, callback\n * @return self\n * @public\n */\n open(fn) {\n if (~this._readyState.indexOf(\"open\"))\n return this;\n this.engine = new Engine(this.uri, this.opts);\n const socket = this.engine;\n const self = this;\n this._readyState = \"opening\";\n this.skipReconnect = false;\n // emit `open`\n const openSubDestroy = on(socket, \"open\", function () {\n self.onopen();\n fn && fn();\n });\n const onError = (err) => {\n this.cleanup();\n this._readyState = \"closed\";\n this.emitReserved(\"error\", err);\n if (fn) {\n fn(err);\n }\n else {\n // Only do this if there is no fn to handle the error\n this.maybeReconnectOnOpen();\n }\n };\n // emit `error`\n const errorSub = on(socket, \"error\", onError);\n if (false !== this._timeout) {\n const timeout = this._timeout;\n // set timer\n const timer = this.setTimeoutFn(() => {\n openSubDestroy();\n onError(new Error(\"timeout\"));\n socket.close();\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(() => {\n this.clearTimeoutFn(timer);\n });\n }\n this.subs.push(openSubDestroy);\n this.subs.push(errorSub);\n return this;\n }\n /**\n * Alias for open()\n *\n * @return self\n * @public\n */\n connect(fn) {\n return this.open(fn);\n }\n /**\n * Called upon transport open.\n *\n * @private\n */\n onopen() {\n // clear old subs\n this.cleanup();\n // mark as open\n this._readyState = \"open\";\n this.emitReserved(\"open\");\n // add new subs\n const socket = this.engine;\n this.subs.push(on(socket, \"ping\", this.onping.bind(this)), on(socket, \"data\", this.ondata.bind(this)), on(socket, \"error\", this.onerror.bind(this)), on(socket, \"close\", this.onclose.bind(this)), \n // @ts-ignore\n on(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n }\n /**\n * Called upon a ping.\n *\n * @private\n */\n onping() {\n this.emitReserved(\"ping\");\n }\n /**\n * Called with data.\n *\n * @private\n */\n ondata(data) {\n try {\n this.decoder.add(data);\n }\n catch (e) {\n this.onclose(\"parse error\", e);\n }\n }\n /**\n * Called when parser fully decodes a packet.\n *\n * @private\n */\n ondecoded(packet) {\n // the nextTick call prevents an exception in a user-provided event listener from triggering a disconnection due to a \"parse error\"\n nextTick(() => {\n this.emitReserved(\"packet\", packet);\n }, this.setTimeoutFn);\n }\n /**\n * Called upon socket error.\n *\n * @private\n */\n onerror(err) {\n this.emitReserved(\"error\", err);\n }\n /**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @public\n */\n socket(nsp, opts) {\n let socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n }\n else if (this._autoConnect && !socket.active) {\n socket.connect();\n }\n return socket;\n }\n /**\n * Called upon a socket close.\n *\n * @param socket\n * @private\n */\n _destroy(socket) {\n const nsps = Object.keys(this.nsps);\n for (const nsp of nsps) {\n const socket = this.nsps[nsp];\n if (socket.active) {\n return;\n }\n }\n this._close();\n }\n /**\n * Writes a packet.\n *\n * @param packet\n * @private\n */\n _packet(packet) {\n const encodedPackets = this.encoder.encode(packet);\n for (let i = 0; i < encodedPackets.length; i++) {\n this.engine.write(encodedPackets[i], packet.options);\n }\n }\n /**\n * Clean up transport subscriptions and packet buffer.\n *\n * @private\n */\n cleanup() {\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs.length = 0;\n this.decoder.destroy();\n }\n /**\n * Close the current socket.\n *\n * @private\n */\n _close() {\n this.skipReconnect = true;\n this._reconnecting = false;\n this.onclose(\"forced close\");\n }\n /**\n * Alias for close()\n *\n * @private\n */\n disconnect() {\n return this._close();\n }\n /**\n * Called when:\n *\n * - the low-level engine is closed\n * - the parser encountered a badly formatted packet\n * - all sockets are disconnected\n *\n * @private\n */\n onclose(reason, description) {\n var _a;\n this.cleanup();\n (_a = this.engine) === null || _a === void 0 ? void 0 : _a.close();\n this.backoff.reset();\n this._readyState = \"closed\";\n this.emitReserved(\"close\", reason, description);\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n }\n /**\n * Attempt a reconnection.\n *\n * @private\n */\n reconnect() {\n if (this._reconnecting || this.skipReconnect)\n return this;\n const self = this;\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n this.backoff.reset();\n this.emitReserved(\"reconnect_failed\");\n this._reconnecting = false;\n }\n else {\n const delay = this.backoff.duration();\n this._reconnecting = true;\n const timer = this.setTimeoutFn(() => {\n if (self.skipReconnect)\n return;\n this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n // check again for the case socket closed in above events\n if (self.skipReconnect)\n return;\n self.open((err) => {\n if (err) {\n self._reconnecting = false;\n self.reconnect();\n this.emitReserved(\"reconnect_error\", err);\n }\n else {\n self.onreconnect();\n }\n });\n }, delay);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(() => {\n this.clearTimeoutFn(timer);\n });\n }\n }\n /**\n * Called upon successful reconnect.\n *\n * @private\n */\n onreconnect() {\n const attempt = this.backoff.attempts;\n this._reconnecting = false;\n this.backoff.reset();\n this.emitReserved(\"reconnect\", attempt);\n }\n}\n","import { url } from \"./url.js\";\nimport { Manager } from \"./manager.js\";\nimport { Socket } from \"./socket.js\";\n/**\n * Managers cache.\n */\nconst cache = {};\nfunction lookup(uri, opts) {\n if (typeof uri === \"object\") {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n const parsed = url(uri, opts.path || \"/socket.io\");\n const source = parsed.source;\n const id = parsed.id;\n const path = parsed.path;\n const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n const newConnection = opts.forceNew ||\n opts[\"force new connection\"] ||\n false === opts.multiplex ||\n sameNamespace;\n let io;\n if (newConnection) {\n io = new Manager(source, opts);\n }\n else {\n if (!cache[id]) {\n cache[id] = new Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.queryKey;\n }\n return io.socket(parsed.path, opts);\n}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n Manager,\n Socket,\n io: lookup,\n connect: lookup,\n});\n/**\n * Protocol version.\n *\n * @public\n */\nexport { protocol } from \"socket.io-parser\";\n/**\n * Expose constructors for standalone build.\n *\n * @public\n */\nexport { Manager, Socket, lookup as io, lookup as connect, lookup as default, };\nexport { Fetch, NodeXHR, XHR, NodeWebSocket, WebSocket, WebTransport, } from \"engine.io-client\";\n","import log$1 from 'loglevel';\n\nvar log = log$1.getLogger(\"SecurePubSub\");\n\nexport { log as default };\n","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport { SESSION_SERVER_API_URL, SESSION_SERVER_SOCKET_URL } from '@toruslabs/constants';\nimport { sign, getPublic } from '@toruslabs/eccrypto';\nimport { setLogLevel, post } from '@toruslabs/http-helpers';\nimport { keccak256, encryptData, decryptData } from '@toruslabs/metadata-helpers';\nimport { io } from 'socket.io-client';\nimport log from './log.js';\n\nclass SecurePubSub {\n constructor(options = {}) {\n _defineProperty(this, \"options\", void 0);\n _defineProperty(this, \"SOCKET_CONN\", null);\n this.options = options;\n this.options.timeout = options.timeout || 600; // 10 mins is default timeout\n this.options.serverUrl = options.serverUrl || SESSION_SERVER_API_URL;\n this.options.socketUrl = options.socketUrl || SESSION_SERVER_SOCKET_URL;\n this.options.enableLogging = options.enableLogging || false;\n this.options.namespace = options.namespace || \"\";\n this.options.sameIpCheck = options.sameIpCheck || false;\n this.options.sameOriginCheck = options.sameOriginCheck || false;\n if (this.options.enableLogging) log.enableAll();else log.disableAll();\n }\n static setLogLevel(level) {\n log.setLevel(level);\n setLogLevel(level);\n }\n async publish(topic, message) {\n const topicPrivKey = keccak256(Buffer.from(topic, \"utf8\"));\n const encryptedData = await encryptData(topicPrivKey.toString(\"hex\"), message);\n const signature = await sign(topicPrivKey, keccak256(Buffer.from(encryptedData, \"utf8\")));\n const fetchBody = {\n key: getPublic(topicPrivKey).toString(\"hex\"),\n // already padded\n data: encryptedData,\n signature: signature.toString(\"hex\"),\n timeout: this.options.timeout,\n namespace: this.options.namespace,\n sameIpCheck: this.options.sameIpCheck,\n sameOriginCheck: this.options.sameOriginCheck\n };\n return post(`${this.options.serverUrl}/channel/set`, fetchBody);\n }\n async subscribe(topic) {\n let isPromisePending = true;\n const topicPrivKey = keccak256(Buffer.from(topic, \"utf8\"));\n const topicPubKey = getPublic(topicPrivKey).toString(\"hex\"); // already padded\n const currentSocketConnection = this.getSocketConnection();\n if (currentSocketConnection.connected) {\n log.debug(\"already connected with socket\");\n currentSocketConnection.emit(\"check_auth_status\", topicPubKey, {\n namespace: this.options.namespace,\n sameIpCheck: this.options.sameIpCheck,\n sameOriginCheck: this.options.sameOriginCheck\n });\n } else {\n currentSocketConnection.once(\"connect\", () => {\n log.debug(\"connected with socket\");\n currentSocketConnection.emit(\"check_auth_status\", topicPubKey, {\n namespace: this.options.namespace,\n sameIpCheck: this.options.sameIpCheck,\n sameOriginCheck: this.options.sameOriginCheck\n });\n });\n }\n const reconnect = () => {\n currentSocketConnection.once(\"connect\", async () => {\n log.debug(\"connected with socket using reconnect\");\n if (isPromisePending) currentSocketConnection.emit(\"check_auth_status\", topicPubKey, {\n namespace: this.options.namespace,\n sameIpCheck: this.options.sameIpCheck,\n sameOriginCheck: this.options.sameOriginCheck\n });\n });\n };\n const visibilityListener = () => {\n if (!isPromisePending) document.removeEventListener(\"visibilitychange\", visibilityListener);\n // if not connected, then wait for connection and ping server for latest msg.\n if (!currentSocketConnection.connected && document.visibilityState === \"visible\") {\n reconnect();\n }\n };\n const disconnectListener = () => {\n log.debug(\"socket disconnected\", isPromisePending);\n if (isPromisePending) {\n log.error(\"socket disconnected unexpectedly, reconnecting socket\");\n reconnect();\n } else {\n currentSocketConnection.removeListener(\"disconnect\", disconnectListener);\n }\n };\n currentSocketConnection.on(\"disconnect\", disconnectListener);\n const returnPromise = new Promise((resolve, reject) => {\n const listener = async ev => {\n try {\n const decData = await decryptData(topicPrivKey.toString(\"hex\"), ev);\n log.info(\"got data\", decData);\n resolve(decData);\n } catch (error) {\n log.error(error);\n reject(error);\n } finally {\n isPromisePending = false;\n document.removeEventListener(\"visibilitychange\", visibilityListener);\n }\n };\n log.info(\"listening to\", `${topicPubKey}_success`);\n currentSocketConnection.once(`${topicPubKey}_success`, listener);\n });\n if (typeof document !== \"undefined\") document.addEventListener(\"visibilitychange\", visibilityListener);\n return returnPromise;\n }\n cleanup() {\n if (this.SOCKET_CONN) {\n this.SOCKET_CONN.disconnect();\n this.SOCKET_CONN = null;\n }\n }\n getSocketConnection() {\n if (this.SOCKET_CONN) return this.SOCKET_CONN;\n const localSocketConnection = io(this.options.socketUrl, {\n transports: [\"websocket\", \"polling\"],\n // use WebSocket first, if available\n withCredentials: true,\n reconnectionDelayMax: 10000,\n reconnectionAttempts: 10\n });\n localSocketConnection.on(\"connect_error\", err => {\n // revert to classic upgrade\n localSocketConnection.io.opts.transports = [\"polling\", \"websocket\"];\n log.error(\"connect error\", err);\n });\n localSocketConnection.on(\"connect\", async () => {\n const {\n engine\n } = localSocketConnection.io;\n log.debug(\"initially connected to\", engine.transport.name); // in most cases, prints \"polling\"\n engine.once(\"upgrade\", () => {\n // called when the transport is upgraded (i.e. from HTTP long-polling to WebSocket)\n log.debug(\"upgraded\", engine.transport.name); // in most cases, prints \"websocket\"\n });\n engine.once(\"close\", reason => {\n // called when the underlying connection is closed\n log.debug(\"connection closed\", reason);\n });\n });\n localSocketConnection.on(\"error\", err => {\n log.error(\"socket errored\", err);\n localSocketConnection.disconnect();\n });\n this.SOCKET_CONN = localSocketConnection;\n return this.SOCKET_CONN;\n }\n}\n\nexport { SecurePubSub };\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","// NOTE: this list must be up-to-date with browsers listed in\n// test/acceptance/useragentstrings.yml\nexport const BROWSER_ALIASES_MAP = {\n 'Amazon Silk': 'amazon_silk',\n 'Android Browser': 'android',\n Bada: 'bada',\n BlackBerry: 'blackberry',\n Chrome: 'chrome',\n Chromium: 'chromium',\n Electron: 'electron',\n Epiphany: 'epiphany',\n Firefox: 'firefox',\n Focus: 'focus',\n Generic: 'generic',\n 'Google Search': 'google_search',\n Googlebot: 'googlebot',\n 'Internet Explorer': 'ie',\n 'K-Meleon': 'k_meleon',\n Maxthon: 'maxthon',\n 'Microsoft Edge': 'edge',\n 'MZ Browser': 'mz',\n 'NAVER Whale Browser': 'naver',\n Opera: 'opera',\n 'Opera Coast': 'opera_coast',\n PhantomJS: 'phantomjs',\n Puffin: 'puffin',\n QupZilla: 'qupzilla',\n QQ: 'qq',\n QQLite: 'qqlite',\n Safari: 'safari',\n Sailfish: 'sailfish',\n 'Samsung Internet for Android': 'samsung_internet',\n SeaMonkey: 'seamonkey',\n Sleipnir: 'sleipnir',\n Swing: 'swing',\n Tizen: 'tizen',\n 'UC Browser': 'uc',\n Vivaldi: 'vivaldi',\n 'WebOS Browser': 'webos',\n WeChat: 'wechat',\n 'Yandex Browser': 'yandex',\n Roku: 'roku',\n};\n\nexport const BROWSER_MAP = {\n amazon_silk: 'Amazon Silk',\n android: 'Android Browser',\n bada: 'Bada',\n blackberry: 'BlackBerry',\n chrome: 'Chrome',\n chromium: 'Chromium',\n electron: 'Electron',\n epiphany: 'Epiphany',\n firefox: 'Firefox',\n focus: 'Focus',\n generic: 'Generic',\n googlebot: 'Googlebot',\n google_search: 'Google Search',\n ie: 'Internet Explorer',\n k_meleon: 'K-Meleon',\n maxthon: 'Maxthon',\n edge: 'Microsoft Edge',\n mz: 'MZ Browser',\n naver: 'NAVER Whale Browser',\n opera: 'Opera',\n opera_coast: 'Opera Coast',\n phantomjs: 'PhantomJS',\n puffin: 'Puffin',\n qupzilla: 'QupZilla',\n qq: 'QQ Browser',\n qqlite: 'QQ Browser Lite',\n safari: 'Safari',\n sailfish: 'Sailfish',\n samsung_internet: 'Samsung Internet for Android',\n seamonkey: 'SeaMonkey',\n sleipnir: 'Sleipnir',\n swing: 'Swing',\n tizen: 'Tizen',\n uc: 'UC Browser',\n vivaldi: 'Vivaldi',\n webos: 'WebOS Browser',\n wechat: 'WeChat',\n yandex: 'Yandex Browser',\n};\n\nexport const PLATFORMS_MAP = {\n tablet: 'tablet',\n mobile: 'mobile',\n desktop: 'desktop',\n tv: 'tv',\n};\n\nexport const OS_MAP = {\n WindowsPhone: 'Windows Phone',\n Windows: 'Windows',\n MacOS: 'macOS',\n iOS: 'iOS',\n Android: 'Android',\n WebOS: 'WebOS',\n BlackBerry: 'BlackBerry',\n Bada: 'Bada',\n Tizen: 'Tizen',\n Linux: 'Linux',\n ChromeOS: 'Chrome OS',\n PlayStation4: 'PlayStation 4',\n Roku: 'Roku',\n};\n\nexport const ENGINE_MAP = {\n EdgeHTML: 'EdgeHTML',\n Blink: 'Blink',\n Trident: 'Trident',\n Presto: 'Presto',\n Gecko: 'Gecko',\n WebKit: 'WebKit',\n};\n","import { BROWSER_MAP, BROWSER_ALIASES_MAP } from './constants.js';\n\nexport default class Utils {\n /**\n * Get first matched item for a string\n * @param {RegExp} regexp\n * @param {String} ua\n * @return {Array|{index: number, input: string}|*|boolean|string}\n */\n static getFirstMatch(regexp, ua) {\n const match = ua.match(regexp);\n return (match && match.length > 0 && match[1]) || '';\n }\n\n /**\n * Get second matched item for a string\n * @param regexp\n * @param {String} ua\n * @return {Array|{index: number, input: string}|*|boolean|string}\n */\n static getSecondMatch(regexp, ua) {\n const match = ua.match(regexp);\n return (match && match.length > 1 && match[2]) || '';\n }\n\n /**\n * Match a regexp and return a constant or undefined\n * @param {RegExp} regexp\n * @param {String} ua\n * @param {*} _const Any const that will be returned if regexp matches the string\n * @return {*}\n */\n static matchAndReturnConst(regexp, ua, _const) {\n if (regexp.test(ua)) {\n return _const;\n }\n return void (0);\n }\n\n static getWindowsVersionName(version) {\n switch (version) {\n case 'NT': return 'NT';\n case 'XP': return 'XP';\n case 'NT 5.0': return '2000';\n case 'NT 5.1': return 'XP';\n case 'NT 5.2': return '2003';\n case 'NT 6.0': return 'Vista';\n case 'NT 6.1': return '7';\n case 'NT 6.2': return '8';\n case 'NT 6.3': return '8.1';\n case 'NT 10.0': return '10';\n default: return undefined;\n }\n }\n\n /**\n * Get macOS version name\n * 10.5 - Leopard\n * 10.6 - Snow Leopard\n * 10.7 - Lion\n * 10.8 - Mountain Lion\n * 10.9 - Mavericks\n * 10.10 - Yosemite\n * 10.11 - El Capitan\n * 10.12 - Sierra\n * 10.13 - High Sierra\n * 10.14 - Mojave\n * 10.15 - Catalina\n *\n * @example\n * getMacOSVersionName(\"10.14\") // 'Mojave'\n *\n * @param {string} version\n * @return {string} versionName\n */\n static getMacOSVersionName(version) {\n const v = version.split('.').splice(0, 2).map(s => parseInt(s, 10) || 0);\n v.push(0);\n if (v[0] !== 10) return undefined;\n switch (v[1]) {\n case 5: return 'Leopard';\n case 6: return 'Snow Leopard';\n case 7: return 'Lion';\n case 8: return 'Mountain Lion';\n case 9: return 'Mavericks';\n case 10: return 'Yosemite';\n case 11: return 'El Capitan';\n case 12: return 'Sierra';\n case 13: return 'High Sierra';\n case 14: return 'Mojave';\n case 15: return 'Catalina';\n default: return undefined;\n }\n }\n\n /**\n * Get Android version name\n * 1.5 - Cupcake\n * 1.6 - Donut\n * 2.0 - Eclair\n * 2.1 - Eclair\n * 2.2 - Froyo\n * 2.x - Gingerbread\n * 3.x - Honeycomb\n * 4.0 - Ice Cream Sandwich\n * 4.1 - Jelly Bean\n * 4.4 - KitKat\n * 5.x - Lollipop\n * 6.x - Marshmallow\n * 7.x - Nougat\n * 8.x - Oreo\n * 9.x - Pie\n *\n * @example\n * getAndroidVersionName(\"7.0\") // 'Nougat'\n *\n * @param {string} version\n * @return {string} versionName\n */\n static getAndroidVersionName(version) {\n const v = version.split('.').splice(0, 2).map(s => parseInt(s, 10) || 0);\n v.push(0);\n if (v[0] === 1 && v[1] < 5) return undefined;\n if (v[0] === 1 && v[1] < 6) return 'Cupcake';\n if (v[0] === 1 && v[1] >= 6) return 'Donut';\n if (v[0] === 2 && v[1] < 2) return 'Eclair';\n if (v[0] === 2 && v[1] === 2) return 'Froyo';\n if (v[0] === 2 && v[1] > 2) return 'Gingerbread';\n if (v[0] === 3) return 'Honeycomb';\n if (v[0] === 4 && v[1] < 1) return 'Ice Cream Sandwich';\n if (v[0] === 4 && v[1] < 4) return 'Jelly Bean';\n if (v[0] === 4 && v[1] >= 4) return 'KitKat';\n if (v[0] === 5) return 'Lollipop';\n if (v[0] === 6) return 'Marshmallow';\n if (v[0] === 7) return 'Nougat';\n if (v[0] === 8) return 'Oreo';\n if (v[0] === 9) return 'Pie';\n return undefined;\n }\n\n /**\n * Get version precisions count\n *\n * @example\n * getVersionPrecision(\"1.10.3\") // 3\n *\n * @param {string} version\n * @return {number}\n */\n static getVersionPrecision(version) {\n return version.split('.').length;\n }\n\n /**\n * Calculate browser version weight\n *\n * @example\n * compareVersions('1.10.2.1', '1.8.2.1.90') // 1\n * compareVersions('1.010.2.1', '1.09.2.1.90'); // 1\n * compareVersions('1.10.2.1', '1.10.2.1'); // 0\n * compareVersions('1.10.2.1', '1.0800.2'); // -1\n * compareVersions('1.10.2.1', '1.10', true); // 0\n *\n * @param {String} versionA versions versions to compare\n * @param {String} versionB versions versions to compare\n * @param {boolean} [isLoose] enable loose comparison\n * @return {Number} comparison result: -1 when versionA is lower,\n * 1 when versionA is bigger, 0 when both equal\n */\n /* eslint consistent-return: 1 */\n static compareVersions(versionA, versionB, isLoose = false) {\n // 1) get common precision for both versions, for example for \"10.0\" and \"9\" it should be 2\n const versionAPrecision = Utils.getVersionPrecision(versionA);\n const versionBPrecision = Utils.getVersionPrecision(versionB);\n\n let precision = Math.max(versionAPrecision, versionBPrecision);\n let lastPrecision = 0;\n\n const chunks = Utils.map([versionA, versionB], (version) => {\n const delta = precision - Utils.getVersionPrecision(version);\n\n // 2) \"9\" -> \"9.0\" (for precision = 2)\n const _version = version + new Array(delta + 1).join('.0');\n\n // 3) \"9.0\" -> [\"000000000\"\", \"000000009\"]\n return Utils.map(_version.split('.'), chunk => new Array(20 - chunk.length).join('0') + chunk).reverse();\n });\n\n // adjust precision for loose comparison\n if (isLoose) {\n lastPrecision = precision - Math.min(versionAPrecision, versionBPrecision);\n }\n\n // iterate in reverse order by reversed chunks array\n precision -= 1;\n while (precision >= lastPrecision) {\n // 4) compare: \"000000009\" > \"000000010\" = false (but \"9\" > \"10\" = true)\n if (chunks[0][precision] > chunks[1][precision]) {\n return 1;\n }\n\n if (chunks[0][precision] === chunks[1][precision]) {\n if (precision === lastPrecision) {\n // all version chunks are same\n return 0;\n }\n\n precision -= 1;\n } else if (chunks[0][precision] < chunks[1][precision]) {\n return -1;\n }\n }\n\n return undefined;\n }\n\n /**\n * Array::map polyfill\n *\n * @param {Array} arr\n * @param {Function} iterator\n * @return {Array}\n */\n static map(arr, iterator) {\n const result = [];\n let i;\n if (Array.prototype.map) {\n return Array.prototype.map.call(arr, iterator);\n }\n for (i = 0; i < arr.length; i += 1) {\n result.push(iterator(arr[i]));\n }\n return result;\n }\n\n /**\n * Array::find polyfill\n *\n * @param {Array} arr\n * @param {Function} predicate\n * @return {Array}\n */\n static find(arr, predicate) {\n let i;\n let l;\n if (Array.prototype.find) {\n return Array.prototype.find.call(arr, predicate);\n }\n for (i = 0, l = arr.length; i < l; i += 1) {\n const value = arr[i];\n if (predicate(value, i)) {\n return value;\n }\n }\n return undefined;\n }\n\n /**\n * Object::assign polyfill\n *\n * @param {Object} obj\n * @param {Object} ...objs\n * @return {Object}\n */\n static assign(obj, ...assigners) {\n const result = obj;\n let i;\n let l;\n if (Object.assign) {\n return Object.assign(obj, ...assigners);\n }\n for (i = 0, l = assigners.length; i < l; i += 1) {\n const assigner = assigners[i];\n if (typeof assigner === 'object' && assigner !== null) {\n const keys = Object.keys(assigner);\n keys.forEach((key) => {\n result[key] = assigner[key];\n });\n }\n }\n return obj;\n }\n\n /**\n * Get short version/alias for a browser name\n *\n * @example\n * getBrowserAlias('Microsoft Edge') // edge\n *\n * @param {string} browserName\n * @return {string}\n */\n static getBrowserAlias(browserName) {\n return BROWSER_ALIASES_MAP[browserName];\n }\n\n /**\n * Get short version/alias for a browser name\n *\n * @example\n * getBrowserAlias('edge') // Microsoft Edge\n *\n * @param {string} browserAlias\n * @return {string}\n */\n static getBrowserTypeByAlias(browserAlias) {\n return BROWSER_MAP[browserAlias] || '';\n }\n}\n","/**\n * Browsers' descriptors\n *\n * The idea of descriptors is simple. You should know about them two simple things:\n * 1. Every descriptor has a method or property called `test` and a `describe` method.\n * 2. Order of descriptors is important.\n *\n * More details:\n * 1. Method or property `test` serves as a way to detect whether the UA string\n * matches some certain browser or not. The `describe` method helps to make a result\n * object with params that show some browser-specific things: name, version, etc.\n * 2. Order of descriptors is important because a Parser goes through them one by one\n * in course. For example, if you insert Chrome's descriptor as the first one,\n * more then a half of browsers will be described as Chrome, because they will pass\n * the Chrome descriptor's test.\n *\n * Descriptor's `test` could be a property with an array of RegExps, where every RegExp\n * will be applied to a UA string to test it whether it matches or not.\n * If a descriptor has two or more regexps in the `test` array it tests them one by one\n * with a logical sum operation. Parser stops if it has found any RegExp that matches the UA.\n *\n * Or `test` could be a method. In that case it gets a Parser instance and should\n * return true/false to get the Parser know if this browser descriptor matches the UA or not.\n */\n\nimport Utils from './utils.js';\n\nconst commonVersionIdentifier = /version\\/(\\d+(\\.?_?\\d+)+)/i;\n\nconst browsersList = [\n /* Googlebot */\n {\n test: [/googlebot/i],\n describe(ua) {\n const browser = {\n name: 'Googlebot',\n };\n const version = Utils.getFirstMatch(/googlebot\\/(\\d+(\\.\\d+))/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n\n /* Opera < 13.0 */\n {\n test: [/opera/i],\n describe(ua) {\n const browser = {\n name: 'Opera',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:opera)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n\n /* Opera > 13.0 */\n {\n test: [/opr\\/|opios/i],\n describe(ua) {\n const browser = {\n name: 'Opera',\n };\n const version = Utils.getFirstMatch(/(?:opr|opios)[\\s/](\\S+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/SamsungBrowser/i],\n describe(ua) {\n const browser = {\n name: 'Samsung Internet for Android',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:SamsungBrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/Whale/i],\n describe(ua) {\n const browser = {\n name: 'NAVER Whale Browser',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:whale)[\\s/](\\d+(?:\\.\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/MZBrowser/i],\n describe(ua) {\n const browser = {\n name: 'MZ Browser',\n };\n const version = Utils.getFirstMatch(/(?:MZBrowser)[\\s/](\\d+(?:\\.\\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/focus/i],\n describe(ua) {\n const browser = {\n name: 'Focus',\n };\n const version = Utils.getFirstMatch(/(?:focus)[\\s/](\\d+(?:\\.\\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/swing/i],\n describe(ua) {\n const browser = {\n name: 'Swing',\n };\n const version = Utils.getFirstMatch(/(?:swing)[\\s/](\\d+(?:\\.\\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/coast/i],\n describe(ua) {\n const browser = {\n name: 'Opera Coast',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:coast)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/opt\\/\\d+(?:.?_?\\d+)+/i],\n describe(ua) {\n const browser = {\n name: 'Opera Touch',\n };\n const version = Utils.getFirstMatch(/(?:opt)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/yabrowser/i],\n describe(ua) {\n const browser = {\n name: 'Yandex Browser',\n };\n const version = Utils.getFirstMatch(/(?:yabrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/ucbrowser/i],\n describe(ua) {\n const browser = {\n name: 'UC Browser',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:ucbrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/Maxthon|mxios/i],\n describe(ua) {\n const browser = {\n name: 'Maxthon',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:Maxthon|mxios)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/epiphany/i],\n describe(ua) {\n const browser = {\n name: 'Epiphany',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:epiphany)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/puffin/i],\n describe(ua) {\n const browser = {\n name: 'Puffin',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:puffin)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/sleipnir/i],\n describe(ua) {\n const browser = {\n name: 'Sleipnir',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:sleipnir)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/k-meleon/i],\n describe(ua) {\n const browser = {\n name: 'K-Meleon',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:k-meleon)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/micromessenger/i],\n describe(ua) {\n const browser = {\n name: 'WeChat',\n };\n const version = Utils.getFirstMatch(/(?:micromessenger)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/qqbrowser/i],\n describe(ua) {\n const browser = {\n name: (/qqbrowserlite/i).test(ua) ? 'QQ Browser Lite' : 'QQ Browser',\n };\n const version = Utils.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\\d+(\\.?_?\\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/msie|trident/i],\n describe(ua) {\n const browser = {\n name: 'Internet Explorer',\n };\n const version = Utils.getFirstMatch(/(?:msie |rv:)(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/\\sedg\\//i],\n describe(ua) {\n const browser = {\n name: 'Microsoft Edge',\n };\n\n const version = Utils.getFirstMatch(/\\sedg\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/edg([ea]|ios)/i],\n describe(ua) {\n const browser = {\n name: 'Microsoft Edge',\n };\n\n const version = Utils.getSecondMatch(/edg([ea]|ios)\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/vivaldi/i],\n describe(ua) {\n const browser = {\n name: 'Vivaldi',\n };\n const version = Utils.getFirstMatch(/vivaldi\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/seamonkey/i],\n describe(ua) {\n const browser = {\n name: 'SeaMonkey',\n };\n const version = Utils.getFirstMatch(/seamonkey\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/sailfish/i],\n describe(ua) {\n const browser = {\n name: 'Sailfish',\n };\n\n const version = Utils.getFirstMatch(/sailfish\\s?browser\\/(\\d+(\\.\\d+)?)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/silk/i],\n describe(ua) {\n const browser = {\n name: 'Amazon Silk',\n };\n const version = Utils.getFirstMatch(/silk\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/phantom/i],\n describe(ua) {\n const browser = {\n name: 'PhantomJS',\n };\n const version = Utils.getFirstMatch(/phantomjs\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/slimerjs/i],\n describe(ua) {\n const browser = {\n name: 'SlimerJS',\n };\n const version = Utils.getFirstMatch(/slimerjs\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/blackberry|\\bbb\\d+/i, /rim\\stablet/i],\n describe(ua) {\n const browser = {\n name: 'BlackBerry',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/blackberry[\\d]+\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/(web|hpw)[o0]s/i],\n describe(ua) {\n const browser = {\n name: 'WebOS Browser',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/w(?:eb)?[o0]sbrowser\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/bada/i],\n describe(ua) {\n const browser = {\n name: 'Bada',\n };\n const version = Utils.getFirstMatch(/dolfin\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/tizen/i],\n describe(ua) {\n const browser = {\n name: 'Tizen',\n };\n const version = Utils.getFirstMatch(/(?:tizen\\s?)?browser\\/(\\d+(\\.?_?\\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/qupzilla/i],\n describe(ua) {\n const browser = {\n name: 'QupZilla',\n };\n const version = Utils.getFirstMatch(/(?:qupzilla)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/firefox|iceweasel|fxios/i],\n describe(ua) {\n const browser = {\n name: 'Firefox',\n };\n const version = Utils.getFirstMatch(/(?:firefox|iceweasel|fxios)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/electron/i],\n describe(ua) {\n const browser = {\n name: 'Electron',\n };\n const version = Utils.getFirstMatch(/(?:electron)\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/MiuiBrowser/i],\n describe(ua) {\n const browser = {\n name: 'Miui',\n };\n const version = Utils.getFirstMatch(/(?:MiuiBrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/chromium/i],\n describe(ua) {\n const browser = {\n name: 'Chromium',\n };\n const version = Utils.getFirstMatch(/(?:chromium)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/chrome|crios|crmo/i],\n describe(ua) {\n const browser = {\n name: 'Chrome',\n };\n const version = Utils.getFirstMatch(/(?:chrome|crios|crmo)\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/GSA/i],\n describe(ua) {\n const browser = {\n name: 'Google Search',\n };\n const version = Utils.getFirstMatch(/(?:GSA)\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n\n /* Android Browser */\n {\n test(parser) {\n const notLikeAndroid = !parser.test(/like android/i);\n const butAndroid = parser.test(/android/i);\n return notLikeAndroid && butAndroid;\n },\n describe(ua) {\n const browser = {\n name: 'Android Browser',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n\n /* PlayStation 4 */\n {\n test: [/playstation 4/i],\n describe(ua) {\n const browser = {\n name: 'PlayStation 4',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n\n /* Safari */\n {\n test: [/safari|applewebkit/i],\n describe(ua) {\n const browser = {\n name: 'Safari',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n\n /* Something else */\n {\n test: [/.*/i],\n describe(ua) {\n /* Here we try to make sure that there are explicit details about the device\n * in order to decide what regexp exactly we want to apply\n * (as there is a specific decision based on that conclusion)\n */\n const regexpWithoutDeviceSpec = /^(.*)\\/(.*) /;\n const regexpWithDeviceSpec = /^(.*)\\/(.*)[ \\t]\\((.*)/;\n const hasDeviceSpec = ua.search('\\\\(') !== -1;\n const regexp = hasDeviceSpec ? regexpWithDeviceSpec : regexpWithoutDeviceSpec;\n return {\n name: Utils.getFirstMatch(regexp, ua),\n version: Utils.getSecondMatch(regexp, ua),\n };\n },\n },\n];\n\nexport default browsersList;\n","import Utils from './utils.js';\nimport { OS_MAP } from './constants.js';\n\nexport default [\n /* Roku */\n {\n test: [/Roku\\/DVP/],\n describe(ua) {\n const version = Utils.getFirstMatch(/Roku\\/DVP-(\\d+\\.\\d+)/i, ua);\n return {\n name: OS_MAP.Roku,\n version,\n };\n },\n },\n\n /* Windows Phone */\n {\n test: [/windows phone/i],\n describe(ua) {\n const version = Utils.getFirstMatch(/windows phone (?:os)?\\s?(\\d+(\\.\\d+)*)/i, ua);\n return {\n name: OS_MAP.WindowsPhone,\n version,\n };\n },\n },\n\n /* Windows */\n {\n test: [/windows /i],\n describe(ua) {\n const version = Utils.getFirstMatch(/Windows ((NT|XP)( \\d\\d?.\\d)?)/i, ua);\n const versionName = Utils.getWindowsVersionName(version);\n\n return {\n name: OS_MAP.Windows,\n version,\n versionName,\n };\n },\n },\n\n /* Firefox on iPad */\n {\n test: [/Macintosh(.*?) FxiOS(.*?)\\//],\n describe(ua) {\n const result = {\n name: OS_MAP.iOS,\n };\n const version = Utils.getSecondMatch(/(Version\\/)(\\d[\\d.]+)/, ua);\n if (version) {\n result.version = version;\n }\n return result;\n },\n },\n\n /* macOS */\n {\n test: [/macintosh/i],\n describe(ua) {\n const version = Utils.getFirstMatch(/mac os x (\\d+(\\.?_?\\d+)+)/i, ua).replace(/[_\\s]/g, '.');\n const versionName = Utils.getMacOSVersionName(version);\n\n const os = {\n name: OS_MAP.MacOS,\n version,\n };\n if (versionName) {\n os.versionName = versionName;\n }\n return os;\n },\n },\n\n /* iOS */\n {\n test: [/(ipod|iphone|ipad)/i],\n describe(ua) {\n const version = Utils.getFirstMatch(/os (\\d+([_\\s]\\d+)*) like mac os x/i, ua).replace(/[_\\s]/g, '.');\n\n return {\n name: OS_MAP.iOS,\n version,\n };\n },\n },\n\n /* Android */\n {\n test(parser) {\n const notLikeAndroid = !parser.test(/like android/i);\n const butAndroid = parser.test(/android/i);\n return notLikeAndroid && butAndroid;\n },\n describe(ua) {\n const version = Utils.getFirstMatch(/android[\\s/-](\\d+(\\.\\d+)*)/i, ua);\n const versionName = Utils.getAndroidVersionName(version);\n const os = {\n name: OS_MAP.Android,\n version,\n };\n if (versionName) {\n os.versionName = versionName;\n }\n return os;\n },\n },\n\n /* WebOS */\n {\n test: [/(web|hpw)[o0]s/i],\n describe(ua) {\n const version = Utils.getFirstMatch(/(?:web|hpw)[o0]s\\/(\\d+(\\.\\d+)*)/i, ua);\n const os = {\n name: OS_MAP.WebOS,\n };\n\n if (version && version.length) {\n os.version = version;\n }\n return os;\n },\n },\n\n /* BlackBerry */\n {\n test: [/blackberry|\\bbb\\d+/i, /rim\\stablet/i],\n describe(ua) {\n const version = Utils.getFirstMatch(/rim\\stablet\\sos\\s(\\d+(\\.\\d+)*)/i, ua)\n || Utils.getFirstMatch(/blackberry\\d+\\/(\\d+([_\\s]\\d+)*)/i, ua)\n || Utils.getFirstMatch(/\\bbb(\\d+)/i, ua);\n\n return {\n name: OS_MAP.BlackBerry,\n version,\n };\n },\n },\n\n /* Bada */\n {\n test: [/bada/i],\n describe(ua) {\n const version = Utils.getFirstMatch(/bada\\/(\\d+(\\.\\d+)*)/i, ua);\n\n return {\n name: OS_MAP.Bada,\n version,\n };\n },\n },\n\n /* Tizen */\n {\n test: [/tizen/i],\n describe(ua) {\n const version = Utils.getFirstMatch(/tizen[/\\s](\\d+(\\.\\d+)*)/i, ua);\n\n return {\n name: OS_MAP.Tizen,\n version,\n };\n },\n },\n\n /* Linux */\n {\n test: [/linux/i],\n describe() {\n return {\n name: OS_MAP.Linux,\n };\n },\n },\n\n /* Chrome OS */\n {\n test: [/CrOS/],\n describe() {\n return {\n name: OS_MAP.ChromeOS,\n };\n },\n },\n\n /* Playstation 4 */\n {\n test: [/PlayStation 4/],\n describe(ua) {\n const version = Utils.getFirstMatch(/PlayStation 4[/\\s](\\d+(\\.\\d+)*)/i, ua);\n return {\n name: OS_MAP.PlayStation4,\n version,\n };\n },\n },\n];\n","import Utils from './utils.js';\nimport { PLATFORMS_MAP } from './constants.js';\n\n/*\n * Tablets go first since usually they have more specific\n * signs to detect.\n */\n\nexport default [\n /* Googlebot */\n {\n test: [/googlebot/i],\n describe() {\n return {\n type: 'bot',\n vendor: 'Google',\n };\n },\n },\n\n /* Huawei */\n {\n test: [/huawei/i],\n describe(ua) {\n const model = Utils.getFirstMatch(/(can-l01)/i, ua) && 'Nova';\n const platform = {\n type: PLATFORMS_MAP.mobile,\n vendor: 'Huawei',\n };\n if (model) {\n platform.model = model;\n }\n return platform;\n },\n },\n\n /* Nexus Tablet */\n {\n test: [/nexus\\s*(?:7|8|9|10).*/i],\n describe() {\n return {\n type: PLATFORMS_MAP.tablet,\n vendor: 'Nexus',\n };\n },\n },\n\n /* iPad */\n {\n test: [/ipad/i],\n describe() {\n return {\n type: PLATFORMS_MAP.tablet,\n vendor: 'Apple',\n model: 'iPad',\n };\n },\n },\n\n /* Firefox on iPad */\n {\n test: [/Macintosh(.*?) FxiOS(.*?)\\//],\n describe() {\n return {\n type: PLATFORMS_MAP.tablet,\n vendor: 'Apple',\n model: 'iPad',\n };\n },\n },\n\n /* Amazon Kindle Fire */\n {\n test: [/kftt build/i],\n describe() {\n return {\n type: PLATFORMS_MAP.tablet,\n vendor: 'Amazon',\n model: 'Kindle Fire HD 7',\n };\n },\n },\n\n /* Another Amazon Tablet with Silk */\n {\n test: [/silk/i],\n describe() {\n return {\n type: PLATFORMS_MAP.tablet,\n vendor: 'Amazon',\n };\n },\n },\n\n /* Tablet */\n {\n test: [/tablet(?! pc)/i],\n describe() {\n return {\n type: PLATFORMS_MAP.tablet,\n };\n },\n },\n\n /* iPod/iPhone */\n {\n test(parser) {\n const iDevice = parser.test(/ipod|iphone/i);\n const likeIDevice = parser.test(/like (ipod|iphone)/i);\n return iDevice && !likeIDevice;\n },\n describe(ua) {\n const model = Utils.getFirstMatch(/(ipod|iphone)/i, ua);\n return {\n type: PLATFORMS_MAP.mobile,\n vendor: 'Apple',\n model,\n };\n },\n },\n\n /* Nexus Mobile */\n {\n test: [/nexus\\s*[0-6].*/i, /galaxy nexus/i],\n describe() {\n return {\n type: PLATFORMS_MAP.mobile,\n vendor: 'Nexus',\n };\n },\n },\n\n /* Mobile */\n {\n test: [/[^-]mobi/i],\n describe() {\n return {\n type: PLATFORMS_MAP.mobile,\n };\n },\n },\n\n /* BlackBerry */\n {\n test(parser) {\n return parser.getBrowserName(true) === 'blackberry';\n },\n describe() {\n return {\n type: PLATFORMS_MAP.mobile,\n vendor: 'BlackBerry',\n };\n },\n },\n\n /* Bada */\n {\n test(parser) {\n return parser.getBrowserName(true) === 'bada';\n },\n describe() {\n return {\n type: PLATFORMS_MAP.mobile,\n };\n },\n },\n\n /* Windows Phone */\n {\n test(parser) {\n return parser.getBrowserName() === 'windows phone';\n },\n describe() {\n return {\n type: PLATFORMS_MAP.mobile,\n vendor: 'Microsoft',\n };\n },\n },\n\n /* Android Tablet */\n {\n test(parser) {\n const osMajorVersion = Number(String(parser.getOSVersion()).split('.')[0]);\n return parser.getOSName(true) === 'android' && (osMajorVersion >= 3);\n },\n describe() {\n return {\n type: PLATFORMS_MAP.tablet,\n };\n },\n },\n\n /* Android Mobile */\n {\n test(parser) {\n return parser.getOSName(true) === 'android';\n },\n describe() {\n return {\n type: PLATFORMS_MAP.mobile,\n };\n },\n },\n\n /* desktop */\n {\n test(parser) {\n return parser.getOSName(true) === 'macos';\n },\n describe() {\n return {\n type: PLATFORMS_MAP.desktop,\n vendor: 'Apple',\n };\n },\n },\n\n /* Windows */\n {\n test(parser) {\n return parser.getOSName(true) === 'windows';\n },\n describe() {\n return {\n type: PLATFORMS_MAP.desktop,\n };\n },\n },\n\n /* Linux */\n {\n test(parser) {\n return parser.getOSName(true) === 'linux';\n },\n describe() {\n return {\n type: PLATFORMS_MAP.desktop,\n };\n },\n },\n\n /* PlayStation 4 */\n {\n test(parser) {\n return parser.getOSName(true) === 'playstation 4';\n },\n describe() {\n return {\n type: PLATFORMS_MAP.tv,\n };\n },\n },\n\n /* Roku */\n {\n test(parser) {\n return parser.getOSName(true) === 'roku';\n },\n describe() {\n return {\n type: PLATFORMS_MAP.tv,\n };\n },\n },\n];\n","import Utils from './utils.js';\nimport { ENGINE_MAP } from './constants.js';\n\n/*\n * More specific goes first\n */\nexport default [\n /* EdgeHTML */\n {\n test(parser) {\n return parser.getBrowserName(true) === 'microsoft edge';\n },\n describe(ua) {\n const isBlinkBased = /\\sedg\\//i.test(ua);\n\n // return blink if it's blink-based one\n if (isBlinkBased) {\n return {\n name: ENGINE_MAP.Blink,\n };\n }\n\n // otherwise match the version and return EdgeHTML\n const version = Utils.getFirstMatch(/edge\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n return {\n name: ENGINE_MAP.EdgeHTML,\n version,\n };\n },\n },\n\n /* Trident */\n {\n test: [/trident/i],\n describe(ua) {\n const engine = {\n name: ENGINE_MAP.Trident,\n };\n\n const version = Utils.getFirstMatch(/trident\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n engine.version = version;\n }\n\n return engine;\n },\n },\n\n /* Presto */\n {\n test(parser) {\n return parser.test(/presto/i);\n },\n describe(ua) {\n const engine = {\n name: ENGINE_MAP.Presto,\n };\n\n const version = Utils.getFirstMatch(/presto\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n engine.version = version;\n }\n\n return engine;\n },\n },\n\n /* Gecko */\n {\n test(parser) {\n const isGecko = parser.test(/gecko/i);\n const likeGecko = parser.test(/like gecko/i);\n return isGecko && !likeGecko;\n },\n describe(ua) {\n const engine = {\n name: ENGINE_MAP.Gecko,\n };\n\n const version = Utils.getFirstMatch(/gecko\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n engine.version = version;\n }\n\n return engine;\n },\n },\n\n /* Blink */\n {\n test: [/(apple)?webkit\\/537\\.36/i],\n describe() {\n return {\n name: ENGINE_MAP.Blink,\n };\n },\n },\n\n /* WebKit */\n {\n test: [/(apple)?webkit/i],\n describe(ua) {\n const engine = {\n name: ENGINE_MAP.WebKit,\n };\n\n const version = Utils.getFirstMatch(/webkit\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n engine.version = version;\n }\n\n return engine;\n },\n },\n];\n","import browserParsersList from './parser-browsers.js';\nimport osParsersList from './parser-os.js';\nimport platformParsersList from './parser-platforms.js';\nimport enginesParsersList from './parser-engines.js';\nimport Utils from './utils.js';\n\n/**\n * The main class that arranges the whole parsing process.\n */\nclass Parser {\n /**\n * Create instance of Parser\n *\n * @param {String} UA User-Agent string\n * @param {Boolean} [skipParsing=false] parser can skip parsing in purpose of performance\n * improvements if you need to make a more particular parsing\n * like {@link Parser#parseBrowser} or {@link Parser#parsePlatform}\n *\n * @throw {Error} in case of empty UA String\n *\n * @constructor\n */\n constructor(UA, skipParsing = false) {\n if (UA === void (0) || UA === null || UA === '') {\n throw new Error(\"UserAgent parameter can't be empty\");\n }\n\n this._ua = UA;\n\n /**\n * @typedef ParsedResult\n * @property {Object} browser\n * @property {String|undefined} [browser.name]\n * Browser name, like `\"Chrome\"` or `\"Internet Explorer\"`\n * @property {String|undefined} [browser.version] Browser version as a String `\"12.01.45334.10\"`\n * @property {Object} os\n * @property {String|undefined} [os.name] OS name, like `\"Windows\"` or `\"macOS\"`\n * @property {String|undefined} [os.version] OS version, like `\"NT 5.1\"` or `\"10.11.1\"`\n * @property {String|undefined} [os.versionName] OS name, like `\"XP\"` or `\"High Sierra\"`\n * @property {Object} platform\n * @property {String|undefined} [platform.type]\n * platform type, can be either `\"desktop\"`, `\"tablet\"` or `\"mobile\"`\n * @property {String|undefined} [platform.vendor] Vendor of the device,\n * like `\"Apple\"` or `\"Samsung\"`\n * @property {String|undefined} [platform.model] Device model,\n * like `\"iPhone\"` or `\"Kindle Fire HD 7\"`\n * @property {Object} engine\n * @property {String|undefined} [engine.name]\n * Can be any of this: `WebKit`, `Blink`, `Gecko`, `Trident`, `Presto`, `EdgeHTML`\n * @property {String|undefined} [engine.version] String version of the engine\n */\n this.parsedResult = {};\n\n if (skipParsing !== true) {\n this.parse();\n }\n }\n\n /**\n * Get UserAgent string of current Parser instance\n * @return {String} User-Agent String of the current object\n *\n * @public\n */\n getUA() {\n return this._ua;\n }\n\n /**\n * Test a UA string for a regexp\n * @param {RegExp} regex\n * @return {Boolean}\n */\n test(regex) {\n return regex.test(this._ua);\n }\n\n /**\n * Get parsed browser object\n * @return {Object}\n */\n parseBrowser() {\n this.parsedResult.browser = {};\n\n const browserDescriptor = Utils.find(browserParsersList, (_browser) => {\n if (typeof _browser.test === 'function') {\n return _browser.test(this);\n }\n\n if (_browser.test instanceof Array) {\n return _browser.test.some(condition => this.test(condition));\n }\n\n throw new Error(\"Browser's test function is not valid\");\n });\n\n if (browserDescriptor) {\n this.parsedResult.browser = browserDescriptor.describe(this.getUA());\n }\n\n return this.parsedResult.browser;\n }\n\n /**\n * Get parsed browser object\n * @return {Object}\n *\n * @public\n */\n getBrowser() {\n if (this.parsedResult.browser) {\n return this.parsedResult.browser;\n }\n\n return this.parseBrowser();\n }\n\n /**\n * Get browser's name\n * @return {String} Browser's name or an empty string\n *\n * @public\n */\n getBrowserName(toLowerCase) {\n if (toLowerCase) {\n return String(this.getBrowser().name).toLowerCase() || '';\n }\n return this.getBrowser().name || '';\n }\n\n\n /**\n * Get browser's version\n * @return {String} version of browser\n *\n * @public\n */\n getBrowserVersion() {\n return this.getBrowser().version;\n }\n\n /**\n * Get OS\n * @return {Object}\n *\n * @example\n * this.getOS();\n * {\n * name: 'macOS',\n * version: '10.11.12'\n * }\n */\n getOS() {\n if (this.parsedResult.os) {\n return this.parsedResult.os;\n }\n\n return this.parseOS();\n }\n\n /**\n * Parse OS and save it to this.parsedResult.os\n * @return {*|{}}\n */\n parseOS() {\n this.parsedResult.os = {};\n\n const os = Utils.find(osParsersList, (_os) => {\n if (typeof _os.test === 'function') {\n return _os.test(this);\n }\n\n if (_os.test instanceof Array) {\n return _os.test.some(condition => this.test(condition));\n }\n\n throw new Error(\"Browser's test function is not valid\");\n });\n\n if (os) {\n this.parsedResult.os = os.describe(this.getUA());\n }\n\n return this.parsedResult.os;\n }\n\n /**\n * Get OS name\n * @param {Boolean} [toLowerCase] return lower-cased value\n * @return {String} name of the OS — macOS, Windows, Linux, etc.\n */\n getOSName(toLowerCase) {\n const { name } = this.getOS();\n\n if (toLowerCase) {\n return String(name).toLowerCase() || '';\n }\n\n return name || '';\n }\n\n /**\n * Get OS version\n * @return {String} full version with dots ('10.11.12', '5.6', etc)\n */\n getOSVersion() {\n return this.getOS().version;\n }\n\n /**\n * Get parsed platform\n * @return {{}}\n */\n getPlatform() {\n if (this.parsedResult.platform) {\n return this.parsedResult.platform;\n }\n\n return this.parsePlatform();\n }\n\n /**\n * Get platform name\n * @param {Boolean} [toLowerCase=false]\n * @return {*}\n */\n getPlatformType(toLowerCase = false) {\n const { type } = this.getPlatform();\n\n if (toLowerCase) {\n return String(type).toLowerCase() || '';\n }\n\n return type || '';\n }\n\n /**\n * Get parsed platform\n * @return {{}}\n */\n parsePlatform() {\n this.parsedResult.platform = {};\n\n const platform = Utils.find(platformParsersList, (_platform) => {\n if (typeof _platform.test === 'function') {\n return _platform.test(this);\n }\n\n if (_platform.test instanceof Array) {\n return _platform.test.some(condition => this.test(condition));\n }\n\n throw new Error(\"Browser's test function is not valid\");\n });\n\n if (platform) {\n this.parsedResult.platform = platform.describe(this.getUA());\n }\n\n return this.parsedResult.platform;\n }\n\n /**\n * Get parsed engine\n * @return {{}}\n */\n getEngine() {\n if (this.parsedResult.engine) {\n return this.parsedResult.engine;\n }\n\n return this.parseEngine();\n }\n\n /**\n * Get engines's name\n * @return {String} Engines's name or an empty string\n *\n * @public\n */\n getEngineName(toLowerCase) {\n if (toLowerCase) {\n return String(this.getEngine().name).toLowerCase() || '';\n }\n return this.getEngine().name || '';\n }\n\n /**\n * Get parsed platform\n * @return {{}}\n */\n parseEngine() {\n this.parsedResult.engine = {};\n\n const engine = Utils.find(enginesParsersList, (_engine) => {\n if (typeof _engine.test === 'function') {\n return _engine.test(this);\n }\n\n if (_engine.test instanceof Array) {\n return _engine.test.some(condition => this.test(condition));\n }\n\n throw new Error(\"Browser's test function is not valid\");\n });\n\n if (engine) {\n this.parsedResult.engine = engine.describe(this.getUA());\n }\n\n return this.parsedResult.engine;\n }\n\n /**\n * Parse full information about the browser\n * @returns {Parser}\n */\n parse() {\n this.parseBrowser();\n this.parseOS();\n this.parsePlatform();\n this.parseEngine();\n\n return this;\n }\n\n /**\n * Get parsed result\n * @return {ParsedResult}\n */\n getResult() {\n return Utils.assign({}, this.parsedResult);\n }\n\n /**\n * Check if parsed browser matches certain conditions\n *\n * @param {Object} checkTree It's one or two layered object,\n * which can include a platform or an OS on the first layer\n * and should have browsers specs on the bottom-laying layer\n *\n * @returns {Boolean|undefined} Whether the browser satisfies the set conditions or not.\n * Returns `undefined` when the browser is no described in the checkTree object.\n *\n * @example\n * const browser = Bowser.getParser(window.navigator.userAgent);\n * if (browser.satisfies({chrome: '>118.01.1322' }))\n * // or with os\n * if (browser.satisfies({windows: { chrome: '>118.01.1322' } }))\n * // or with platforms\n * if (browser.satisfies({desktop: { chrome: '>118.01.1322' } }))\n */\n satisfies(checkTree) {\n const platformsAndOSes = {};\n let platformsAndOSCounter = 0;\n const browsers = {};\n let browsersCounter = 0;\n\n const allDefinitions = Object.keys(checkTree);\n\n allDefinitions.forEach((key) => {\n const currentDefinition = checkTree[key];\n if (typeof currentDefinition === 'string') {\n browsers[key] = currentDefinition;\n browsersCounter += 1;\n } else if (typeof currentDefinition === 'object') {\n platformsAndOSes[key] = currentDefinition;\n platformsAndOSCounter += 1;\n }\n });\n\n if (platformsAndOSCounter > 0) {\n const platformsAndOSNames = Object.keys(platformsAndOSes);\n const OSMatchingDefinition = Utils.find(platformsAndOSNames, name => (this.isOS(name)));\n\n if (OSMatchingDefinition) {\n const osResult = this.satisfies(platformsAndOSes[OSMatchingDefinition]);\n\n if (osResult !== void 0) {\n return osResult;\n }\n }\n\n const platformMatchingDefinition = Utils.find(\n platformsAndOSNames,\n name => (this.isPlatform(name)),\n );\n if (platformMatchingDefinition) {\n const platformResult = this.satisfies(platformsAndOSes[platformMatchingDefinition]);\n\n if (platformResult !== void 0) {\n return platformResult;\n }\n }\n }\n\n if (browsersCounter > 0) {\n const browserNames = Object.keys(browsers);\n const matchingDefinition = Utils.find(browserNames, name => (this.isBrowser(name, true)));\n\n if (matchingDefinition !== void 0) {\n return this.compareVersion(browsers[matchingDefinition]);\n }\n }\n\n return undefined;\n }\n\n /**\n * Check if the browser name equals the passed string\n * @param browserName The string to compare with the browser name\n * @param [includingAlias=false] The flag showing whether alias will be included into comparison\n * @returns {boolean}\n */\n isBrowser(browserName, includingAlias = false) {\n const defaultBrowserName = this.getBrowserName().toLowerCase();\n let browserNameLower = browserName.toLowerCase();\n const alias = Utils.getBrowserTypeByAlias(browserNameLower);\n\n if (includingAlias && alias) {\n browserNameLower = alias.toLowerCase();\n }\n return browserNameLower === defaultBrowserName;\n }\n\n compareVersion(version) {\n let expectedResults = [0];\n let comparableVersion = version;\n let isLoose = false;\n\n const currentBrowserVersion = this.getBrowserVersion();\n\n if (typeof currentBrowserVersion !== 'string') {\n return void 0;\n }\n\n if (version[0] === '>' || version[0] === '<') {\n comparableVersion = version.substr(1);\n if (version[1] === '=') {\n isLoose = true;\n comparableVersion = version.substr(2);\n } else {\n expectedResults = [];\n }\n if (version[0] === '>') {\n expectedResults.push(1);\n } else {\n expectedResults.push(-1);\n }\n } else if (version[0] === '=') {\n comparableVersion = version.substr(1);\n } else if (version[0] === '~') {\n isLoose = true;\n comparableVersion = version.substr(1);\n }\n\n return expectedResults.indexOf(\n Utils.compareVersions(currentBrowserVersion, comparableVersion, isLoose),\n ) > -1;\n }\n\n isOS(osName) {\n return this.getOSName(true) === String(osName).toLowerCase();\n }\n\n isPlatform(platformType) {\n return this.getPlatformType(true) === String(platformType).toLowerCase();\n }\n\n isEngine(engineName) {\n return this.getEngineName(true) === String(engineName).toLowerCase();\n }\n\n /**\n * Is anything? Check if the browser is called \"anything\",\n * the OS called \"anything\" or the platform called \"anything\"\n * @param {String} anything\n * @param [includingAlias=false] The flag showing whether alias will be included into comparison\n * @returns {Boolean}\n */\n is(anything, includingAlias = false) {\n return this.isBrowser(anything, includingAlias) || this.isOS(anything)\n || this.isPlatform(anything);\n }\n\n /**\n * Check if any of the given values satisfies this.is(anything)\n * @param {String[]} anythings\n * @returns {Boolean}\n */\n some(anythings = []) {\n return anythings.some(anything => this.is(anything));\n }\n}\n\nexport default Parser;\n","/*!\n * Bowser - a browser detector\n * https://github.com/lancedikson/bowser\n * MIT License | (c) Dustin Diaz 2012-2015\n * MIT License | (c) Denis Demchenko 2015-2019\n */\nimport Parser from './parser.js';\nimport {\n BROWSER_MAP,\n ENGINE_MAP,\n OS_MAP,\n PLATFORMS_MAP,\n} from './constants.js';\n\n/**\n * Bowser class.\n * Keep it simple as much as it can be.\n * It's supposed to work with collections of {@link Parser} instances\n * rather then solve one-instance problems.\n * All the one-instance stuff is located in Parser class.\n *\n * @class\n * @classdesc Bowser is a static object, that provides an API to the Parsers\n * @hideconstructor\n */\nclass Bowser {\n /**\n * Creates a {@link Parser} instance\n *\n * @param {String} UA UserAgent string\n * @param {Boolean} [skipParsing=false] Will make the Parser postpone parsing until you ask it\n * explicitly. Same as `skipParsing` for {@link Parser}.\n * @returns {Parser}\n * @throws {Error} when UA is not a String\n *\n * @example\n * const parser = Bowser.getParser(window.navigator.userAgent);\n * const result = parser.getResult();\n */\n static getParser(UA, skipParsing = false) {\n if (typeof UA !== 'string') {\n throw new Error('UserAgent should be a string');\n }\n return new Parser(UA, skipParsing);\n }\n\n /**\n * Creates a {@link Parser} instance and runs {@link Parser.getResult} immediately\n *\n * @param UA\n * @return {ParsedResult}\n *\n * @example\n * const result = Bowser.parse(window.navigator.userAgent);\n */\n static parse(UA) {\n return (new Parser(UA)).getResult();\n }\n\n static get BROWSER_MAP() {\n return BROWSER_MAP;\n }\n\n static get ENGINE_MAP() {\n return ENGINE_MAP;\n }\n\n static get OS_MAP() {\n return OS_MAP;\n }\n\n static get PLATFORMS_MAP() {\n return PLATFORMS_MAP;\n }\n}\n\nexport default Bowser;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction padString(input) {\n var segmentLength = 4;\n var stringLength = input.length;\n var diff = stringLength % segmentLength;\n if (!diff) {\n return input;\n }\n var position = stringLength;\n var padLength = segmentLength - diff;\n var paddedStringLength = stringLength + padLength;\n var buffer = Buffer.alloc(paddedStringLength);\n buffer.write(input);\n while (padLength--) {\n buffer.write(\"=\", position++);\n }\n return buffer.toString();\n}\nexports.default = padString;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar pad_string_1 = require(\"./pad-string\");\nfunction encode(input, encoding) {\n if (encoding === void 0) { encoding = \"utf8\"; }\n if (Buffer.isBuffer(input)) {\n return fromBase64(input.toString(\"base64\"));\n }\n return fromBase64(Buffer.from(input, encoding).toString(\"base64\"));\n}\n;\nfunction decode(base64url, encoding) {\n if (encoding === void 0) { encoding = \"utf8\"; }\n return Buffer.from(toBase64(base64url), \"base64\").toString(encoding);\n}\nfunction toBase64(base64url) {\n base64url = base64url.toString();\n return pad_string_1.default(base64url)\n .replace(/\\-/g, \"+\")\n .replace(/_/g, \"/\");\n}\nfunction fromBase64(base64) {\n return base64\n .replace(/=/g, \"\")\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\");\n}\nfunction toBuffer(base64url) {\n return Buffer.from(toBase64(base64url), \"base64\");\n}\nvar base64url = encode;\nbase64url.encode = encode;\nbase64url.decode = decode;\nbase64url.toBase64 = toBase64;\nbase64url.fromBase64 = fromBase64;\nbase64url.toBuffer = toBuffer;\nexports.default = base64url;\n","module.exports = require('./dist/base64url').default;\nmodule.exports.default = module.exports;\n","import base64urlLib from 'base64url';\n\nconst base64url = base64urlLib;\nfunction safebtoa(str) {\n return base64url.encode(str);\n}\nfunction safeatob(str) {\n // Going backwards: from bytestream, to percent-encoding, to original string.\n return base64url.decode(str);\n}\nfunction base64toJSON(b64str) {\n return JSON.parse(base64url.decode(b64str));\n}\nfunction jsonToBase64(json) {\n return base64url.encode(JSON.stringify(json));\n}\nfunction storageAvailable(type) {\n let storageExists = false;\n let storageLength = 0;\n let storage;\n try {\n storage = window[type];\n storageExists = true;\n storageLength = storage.length;\n const x = \"__storage_test__\";\n storage.setItem(x, x);\n storage.removeItem(x);\n return true;\n } catch (err) {\n const error = err;\n return error && (\n // everything except Firefox\n error.code === 22 ||\n // Firefox\n error.code === 1014 ||\n // test name field too, because code might not be present\n // everything except Firefox\n error.name === \"QuotaExceededError\" ||\n // Firefox\n error.name === \"NS_ERROR_DOM_QUOTA_REACHED\") &&\n // acknowledge QuotaExceededError only if there's something already stored\n storageExists && storageLength !== 0;\n }\n}\n\nexport { base64toJSON, base64url, jsonToBase64, safeatob, safebtoa, storageAvailable };\n","import _objectSpread from '@babel/runtime/helpers/objectSpread2';\nimport { TORUS_LEGACY_NETWORK, TORUS_SAPPHIRE_NETWORK } from '@toruslabs/constants';\n\nconst storeKey = \"auth_store\";\nconst WEB3AUTH_LEGACY_NETWORK = TORUS_LEGACY_NETWORK;\nconst WEB3AUTH_SAPPHIRE_NETWORK = TORUS_SAPPHIRE_NETWORK;\nconst UX_MODE = {\n POPUP: \"popup\",\n REDIRECT: \"redirect\"\n};\nconst WEB3AUTH_NETWORK = _objectSpread(_objectSpread({}, WEB3AUTH_SAPPHIRE_NETWORK), WEB3AUTH_LEGACY_NETWORK);\nconst SUPPORTED_KEY_CURVES = {\n SECP256K1: \"secp256k1\",\n ED25519: \"ed25519\",\n OTHER: \"other\"\n};\nconst LOGIN_PROVIDER = {\n GOOGLE: \"google\",\n FACEBOOK: \"facebook\",\n REDDIT: \"reddit\",\n DISCORD: \"discord\",\n TWITCH: \"twitch\",\n APPLE: \"apple\",\n LINE: \"line\",\n GITHUB: \"github\",\n KAKAO: \"kakao\",\n LINKEDIN: \"linkedin\",\n TWITTER: \"twitter\",\n WEIBO: \"weibo\",\n WECHAT: \"wechat\",\n FARCASTER: \"farcaster\",\n EMAIL_PASSWORDLESS: \"email_passwordless\",\n SMS_PASSWORDLESS: \"sms_passwordless\",\n WEBAUTHN: \"webauthn\",\n JWT: \"jwt\",\n PASSKEYS: \"passkeys\",\n AUTHENTICATOR: \"authenticator\"\n};\nconst MFA_LEVELS = {\n DEFAULT: \"default\",\n OPTIONAL: \"optional\",\n MANDATORY: \"mandatory\",\n NONE: \"none\"\n};\nconst AUTH_ACTIONS = {\n LOGIN: \"login\",\n ENABLE_MFA: \"enable_mfa\",\n MANAGE_MFA: \"manage_mfa\",\n ADD_SOCIAL_FACTOR: \"add_social_factor\",\n MODIFY_SOCIAL_FACTOR: \"modify_social_factor\",\n ADD_AUTHENTICATOR_FACTOR: \"add_authenticator_factor\",\n ADD_PASSKEY_FACTOR: \"add_passkey_factor\"\n};\nconst BUILD_ENV = {\n PRODUCTION: \"production\",\n DEVELOPMENT: \"development\",\n STAGING: \"staging\",\n TESTING: \"testing\"\n};\n\nexport { AUTH_ACTIONS, BUILD_ENV, LOGIN_PROVIDER, MFA_LEVELS, SUPPORTED_KEY_CURVES, UX_MODE, WEB3AUTH_LEGACY_NETWORK, WEB3AUTH_NETWORK, WEB3AUTH_SAPPHIRE_NETWORK, storeKey };\n","import _objectSpread from '@babel/runtime/helpers/objectSpread2';\nimport bowser from 'bowser';\nimport { loglevel } from '../utils/logger.js';\nimport { safeatob } from '../utils/utils.js';\nimport { LOGIN_PROVIDER } from '../utils/constants.js';\n\n// don't use destructuring for process.env cause it messes up webpack env plugin\nconst version = \"9.6.3\";\nfunction getHashQueryParams(replaceUrl = false) {\n const result = {};\n const queryUrlParams = new URLSearchParams(window.location.search.slice(1));\n queryUrlParams.forEach((value, key) => {\n if (key !== \"b64Params\") {\n result[key] = value;\n }\n });\n const queryResult = queryUrlParams.get(\"b64Params\");\n if (queryResult) {\n try {\n const queryParams = JSON.parse(safeatob(queryResult));\n Object.keys(queryParams).forEach(key => {\n result[key] = queryParams[key];\n });\n } catch (error) {\n loglevel.error(error);\n }\n }\n const hashUrlParams = new URLSearchParams(window.location.hash.substring(1));\n hashUrlParams.forEach((value, key) => {\n if (key !== \"b64Params\") {\n result[key] = value;\n }\n });\n const hashResult = hashUrlParams.get(\"b64Params\");\n if (hashResult) {\n try {\n const hashParams = JSON.parse(safeatob(hashResult));\n Object.keys(hashParams).forEach(key => {\n result[key] = hashParams[key];\n });\n } catch (error) {\n loglevel.error(error);\n }\n }\n if (replaceUrl) {\n const cleanUrl = new URL(window.location.origin + window.location.pathname);\n // https://dapp.com/#b64Params=asacsdnvdfv&state=sldjvndfkjvn&dappValue=sdjvndf\n // NB: `params.size !== 0` evaluates to true even if `.size` isn't implemented and returns `undefined`, like in Safari <17 and Chrome <113.\n if (queryUrlParams.size !== 0) {\n queryUrlParams.delete(\"error\");\n queryUrlParams.delete(\"state\");\n queryUrlParams.delete(\"b64Params\");\n queryUrlParams.delete(\"sessionNamespace\");\n cleanUrl.search = queryUrlParams.toString();\n }\n if (hashUrlParams.size !== 0) {\n hashUrlParams.delete(\"error\");\n hashUrlParams.delete(\"state\");\n hashUrlParams.delete(\"b64Params\");\n hashUrlParams.delete(\"sessionNamespace\");\n cleanUrl.hash = hashUrlParams.toString();\n }\n window.history.replaceState(_objectSpread(_objectSpread({}, window.history.state), {}, {\n as: cleanUrl.href,\n url: cleanUrl.href\n }), \"\", cleanUrl.href);\n }\n return result;\n}\nfunction constructURL(params) {\n const {\n baseURL,\n query,\n hash\n } = params;\n const url = new URL(baseURL);\n if (query) {\n Object.keys(query).forEach(key => {\n url.searchParams.append(key, query[key]);\n });\n }\n if (hash) {\n const h = new URL(constructURL({\n baseURL,\n query: hash\n })).searchParams.toString();\n url.hash = h;\n }\n return url.toString();\n}\nfunction getPopupFeatures() {\n if (typeof window === \"undefined\") return \"\";\n // Fixes dual-screen position Most browsers Firefox\n const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : window.screenX;\n const dualScreenTop = window.screenTop !== undefined ? window.screenTop : window.screenY;\n const w = 1200;\n const h = 700;\n const width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : window.screen.width;\n const height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : window.screen.height;\n const systemZoom = 1; // No reliable estimate\n\n const left = Math.abs((width - w) / 2 / systemZoom + dualScreenLeft);\n const top = Math.abs((height - h) / 2 / systemZoom + dualScreenTop);\n const features = `titlebar=0,toolbar=0,status=0,location=0,menubar=0,height=${h / systemZoom},width=${w / systemZoom},top=${top},left=${left}`;\n return features;\n}\nfunction isMobileOrTablet() {\n if (typeof window === \"undefined\") return false;\n const browser = bowser.getParser(window.navigator.userAgent);\n const platform = browser.getPlatform();\n return platform.type === bowser.PLATFORMS_MAP.tablet || platform.type === bowser.PLATFORMS_MAP.mobile;\n}\nfunction getTimeout(loginProvider) {\n if ((loginProvider === LOGIN_PROVIDER.FACEBOOK || loginProvider === LOGIN_PROVIDER.LINE) && isMobileOrTablet()) {\n return 1000 * 60 * 5; // 5 minutes to finish the login\n }\n return 1000 * 10; // 10 seconds\n}\n\nexport { constructURL, getHashQueryParams, getPopupFeatures, getTimeout, isMobileOrTablet, version };\n","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport { SESSION_SERVER_API_URL, SESSION_SERVER_SOCKET_URL } from '@toruslabs/constants';\nimport { SecurePubSub } from '@toruslabs/secure-pub-sub';\nimport { EventEmitter } from 'events';\nimport { LoginError } from './errors.js';\nimport { getPopupFeatures } from './utils.js';\n\nclass PopupHandler extends EventEmitter {\n constructor({\n url,\n target,\n features,\n timeout = 30000,\n sessionSocketUrl,\n sessionServerUrl\n }) {\n // Disabling the rule here, as it is a false positive.\n // eslint-disable-next-line constructor-super\n super();\n _defineProperty(this, \"url\", void 0);\n _defineProperty(this, \"target\", void 0);\n _defineProperty(this, \"features\", void 0);\n _defineProperty(this, \"window\", void 0);\n _defineProperty(this, \"windowTimer\", void 0);\n _defineProperty(this, \"iClosedWindow\", void 0);\n _defineProperty(this, \"timeout\", void 0);\n _defineProperty(this, \"sessionSocketUrl\", void 0);\n _defineProperty(this, \"sessionServerUrl\", void 0);\n this.url = url;\n this.target = target || \"_blank\";\n this.features = features || getPopupFeatures();\n this.window = undefined;\n this.windowTimer = undefined;\n this.iClosedWindow = false;\n this.timeout = timeout;\n this.sessionServerUrl = sessionServerUrl || SESSION_SERVER_API_URL;\n this.sessionSocketUrl = sessionSocketUrl || SESSION_SERVER_SOCKET_URL;\n this._setupTimer();\n }\n _setupTimer() {\n this.windowTimer = Number(setInterval(() => {\n if (this.window && this.window.closed) {\n clearInterval(this.windowTimer);\n setTimeout(() => {\n if (!this.iClosedWindow) {\n this.emit(\"close\");\n }\n this.iClosedWindow = false;\n this.window = undefined;\n }, this.timeout);\n }\n if (this.window === undefined) clearInterval(this.windowTimer);\n }, 500));\n }\n open() {\n var _this$window;\n this.window = window.open(this.url, this.target, this.features);\n if (!this.window) throw LoginError.popupBlocked();\n if ((_this$window = this.window) !== null && _this$window !== void 0 && _this$window.focus) this.window.focus();\n }\n close() {\n this.iClosedWindow = true;\n if (this.window) this.window.close();\n }\n redirect(locationReplaceOnRedirect) {\n if (locationReplaceOnRedirect) {\n window.location.replace(this.url);\n } else {\n window.location.href = this.url;\n }\n }\n async listenOnChannel(loginId) {\n const securePubSub = new SecurePubSub({\n serverUrl: this.sessionServerUrl,\n socketUrl: this.sessionSocketUrl\n });\n const data = await securePubSub.subscribe(loginId);\n this.close();\n securePubSub.cleanup();\n const parsedData = JSON.parse(data);\n if (parsedData.error) {\n return {\n error: parsedData.error,\n state: parsedData.state\n };\n }\n return parsedData.data;\n }\n}\n\nexport { PopupHandler as default };\n","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport { storageAvailable } from './utils.js';\n\nclass MemoryStore {\n constructor() {\n _defineProperty(this, \"store\", new Map());\n }\n getItem(key) {\n return this.store.get(key) || null;\n }\n setItem(key, value) {\n this.store.set(key, value);\n }\n removeItem(key) {\n this.store.delete(key);\n }\n}\nclass BrowserStorage {\n constructor(storeKey, storage) {\n _defineProperty(this, \"storage\", void 0);\n _defineProperty(this, \"_storeKey\", void 0);\n this.storage = storage;\n this._storeKey = storeKey;\n try {\n if (!storage.getItem(storeKey)) {\n this.resetStore();\n }\n } catch (error) {\n // Storage is not available\n }\n }\n static getInstance(key, storageKey = \"local\") {\n if (!this.instanceMap.has(key)) {\n let storage;\n if (storageKey === \"local\" && storageAvailable(\"localStorage\")) {\n storage = window.localStorage;\n } else if (storageKey === \"session\" && storageAvailable(\"sessionStorage\")) {\n storage = window.sessionStorage;\n } else {\n storage = new MemoryStore();\n }\n this.instanceMap.set(key, new this(key, storage));\n }\n return this.instanceMap.get(key);\n }\n toJSON() {\n return this.storage.getItem(this._storeKey);\n }\n resetStore() {\n const currStore = this.getStore();\n this.storage.removeItem(this._storeKey);\n return currStore;\n }\n getStore() {\n return JSON.parse(this.storage.getItem(this._storeKey) || \"{}\");\n }\n get(key) {\n const store = JSON.parse(this.storage.getItem(this._storeKey) || \"{}\");\n return store[key];\n }\n set(key, value) {\n const store = JSON.parse(this.storage.getItem(this._storeKey) || \"{}\");\n store[key] = value;\n this.storage.setItem(this._storeKey, JSON.stringify(store));\n }\n}\n_defineProperty(BrowserStorage, \"instanceMap\", new Map());\n\nexport { BrowserStorage, MemoryStore };\n","import _objectSpread from '@babel/runtime/helpers/objectSpread2';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport { SESSION_SERVER_API_URL, SESSION_SERVER_SOCKET_URL } from '@toruslabs/constants';\nimport { SessionManager } from '@toruslabs/session-manager';\nimport { loglevel } from '../utils/logger.js';\nimport { InitializationError, LoginError } from './errors.js';\nimport PopupHandler from './PopupHandler.js';\nimport { version, getHashQueryParams, getTimeout, constructURL } from './utils.js';\nimport { WEB3AUTH_NETWORK, BUILD_ENV, WEB3AUTH_LEGACY_NETWORK, UX_MODE, AUTH_ACTIONS, LOGIN_PROVIDER } from '../utils/constants.js';\nimport { BrowserStorage } from '../utils/browserStorage.js';\nimport { jsonToBase64 } from '../utils/utils.js';\n\nclass Auth {\n constructor(options) {\n _defineProperty(this, \"state\", {});\n _defineProperty(this, \"options\", void 0);\n _defineProperty(this, \"sessionManager\", void 0);\n _defineProperty(this, \"currentStorage\", void 0);\n _defineProperty(this, \"_storageBaseKey\", \"auth_store\");\n _defineProperty(this, \"dappState\", void 0);\n _defineProperty(this, \"addVersionInUrls\", true);\n if (!options.clientId) throw InitializationError.invalidParams(\"clientId is required\");\n if (!options.network) options.network = WEB3AUTH_NETWORK.SAPPHIRE_MAINNET;\n if (!options.buildEnv) options.buildEnv = BUILD_ENV.PRODUCTION;\n if (options.buildEnv === BUILD_ENV.DEVELOPMENT || options.buildEnv === BUILD_ENV.TESTING || options.sdkUrl) this.addVersionInUrls = false;\n if (!options.sdkUrl && !options.useMpc) {\n if (options.buildEnv === BUILD_ENV.DEVELOPMENT) {\n options.sdkUrl = \"http://localhost:3000\";\n options.dashboardUrl = \"http://localhost:5173\";\n } else if (options.buildEnv === BUILD_ENV.STAGING) {\n options.sdkUrl = \"https://staging-auth.web3auth.io\";\n options.dashboardUrl = \"https://staging-account.web3auth.io\";\n } else if (options.buildEnv === BUILD_ENV.TESTING) {\n options.sdkUrl = \"https://develop-auth.web3auth.io\";\n options.dashboardUrl = \"https://develop-account.web3auth.io\";\n } else {\n options.sdkUrl = \"https://auth.web3auth.io\";\n options.dashboardUrl = \"https://account.web3auth.io\";\n }\n }\n if (options.useMpc && !options.sdkUrl) {\n if (Object.values(WEB3AUTH_LEGACY_NETWORK).includes(options.network)) throw InitializationError.invalidParams(\"MPC is not supported on legacy networks, please use sapphire_devnet or sapphire_mainnet.\");\n if (options.buildEnv === BUILD_ENV.DEVELOPMENT) {\n options.sdkUrl = \"http://localhost:3000\";\n } else if (options.buildEnv === BUILD_ENV.STAGING) {\n options.sdkUrl = \"https://staging-mpc-auth.web3auth.io\";\n } else if (options.buildEnv === BUILD_ENV.TESTING) {\n options.sdkUrl = \"https://develop-mpc-auth.web3auth.io\";\n } else {\n options.sdkUrl = \"https://mpc-auth.web3auth.io\";\n }\n }\n if (!options.redirectUrl && typeof window !== \"undefined\") {\n options.redirectUrl = `${window.location.protocol}//${window.location.host}${window.location.pathname}`;\n }\n if (!options.uxMode) options.uxMode = UX_MODE.REDIRECT;\n if (typeof options.replaceUrlOnRedirect !== \"boolean\") options.replaceUrlOnRedirect = true;\n if (!options.originData) options.originData = {};\n if (!options.whiteLabel) options.whiteLabel = {};\n if (!options.loginConfig) options.loginConfig = {};\n if (!options.mfaSettings) options.mfaSettings = {};\n if (!options.storageServerUrl) options.storageServerUrl = SESSION_SERVER_API_URL;\n if (!options.sessionSocketUrl) options.sessionSocketUrl = SESSION_SERVER_SOCKET_URL;\n if (!options.storageKey) options.storageKey = \"local\";\n if (!options.webauthnTransports) options.webauthnTransports = [\"internal\"];\n if (!options.sessionTime) options.sessionTime = 86400;\n this.options = options;\n }\n get privKey() {\n if (this.options.useMpc) return this.state.factorKey || \"\";\n return this.state.privKey ? this.state.privKey.padStart(64, \"0\") : \"\";\n }\n get coreKitKey() {\n return this.state.coreKitKey ? this.state.coreKitKey.padStart(64, \"0\") : \"\";\n }\n get ed25519PrivKey() {\n return this.state.ed25519PrivKey ? this.state.ed25519PrivKey.padStart(128, \"0\") : \"\";\n }\n get coreKitEd25519Key() {\n return this.state.coreKitEd25519PrivKey ? this.state.coreKitEd25519PrivKey.padStart(128, \"0\") : \"\";\n }\n get sessionId() {\n return this.state.sessionId || \"\";\n }\n get sessionNamespace() {\n return this.options.sessionNamespace || \"\";\n }\n get appState() {\n return this.state.userInfo.appState || this.dappState || \"\";\n }\n get baseUrl() {\n // testing and develop don't have versioning\n if (!this.addVersionInUrls) return `${this.options.sdkUrl}`;\n return `${this.options.sdkUrl}/v${version.split(\".\")[0]}`;\n }\n get dashboardUrl() {\n // testing and develop don't have versioning\n if (!this.addVersionInUrls) return `${this.options.dashboardUrl}`;\n return `${this.options.dashboardUrl}/v${version.split(\".\")[0]}`;\n }\n async init() {\n // get sessionNamespace from the redirect result.\n const params = getHashQueryParams(this.options.replaceUrlOnRedirect);\n if (params.sessionNamespace) this.options.sessionNamespace = params.sessionNamespace;\n const storageKey = this.options.sessionNamespace ? `${this._storageBaseKey}_${this.options.sessionNamespace}` : this._storageBaseKey;\n this.currentStorage = BrowserStorage.getInstance(storageKey, this.options.storageKey);\n const sessionId = this.currentStorage.get(\"sessionId\");\n this.sessionManager = new SessionManager({\n sessionServerBaseUrl: this.options.storageServerUrl,\n sessionNamespace: this.options.sessionNamespace,\n sessionTime: this.options.sessionTime,\n sessionId,\n allowedOrigin: this.options.sdkUrl\n });\n if (this.options.network === WEB3AUTH_NETWORK.TESTNET || this.options.network === WEB3AUTH_NETWORK.SAPPHIRE_DEVNET) {\n // using console log because it shouldn't be affected by loglevel config\n // eslint-disable-next-line no-console\n console.log(`%c WARNING! You are on ${this.options.network}. Please set network: 'mainnet' or 'sapphire_mainnet' in production`, \"color: #FF0000\");\n }\n if (this.options.buildEnv !== BUILD_ENV.PRODUCTION) {\n // using console log because it shouldn't be affected by loglevel config\n // eslint-disable-next-line no-console\n console.log(`%c WARNING! You are using build env ${this.options.buildEnv}. Please set buildEnv: 'production' in production`, \"color: #FF0000\");\n }\n if (params.error) {\n this.dappState = params.state;\n throw LoginError.loginFailed(params.error);\n }\n if (params.sessionId) {\n this.currentStorage.set(\"sessionId\", params.sessionId);\n this.sessionManager.sessionId = params.sessionId;\n }\n if (this.sessionManager.sessionId) {\n const data = await this._authorizeSession();\n // Fill state with correct info from session\n // If session is invalid all the data is unset here.\n this.updateState(data);\n if (Object.keys(data).length === 0) {\n // If session is invalid, unset the sessionId from localStorage.\n this.currentStorage.set(\"sessionId\", \"\");\n } else {\n this.updateState({\n sessionId: this.sessionManager.sessionId\n });\n }\n }\n }\n async login(params) {\n if (!params.loginProvider) throw LoginError.invalidLoginParams(`loginProvider is required`);\n\n // in case of redirect mode, redirect url will be dapp specified\n // in case of popup mode, redirect url will be sdk specified\n const defaultParams = {\n redirectUrl: this.options.redirectUrl\n };\n const loginParams = _objectSpread(_objectSpread({\n loginProvider: params.loginProvider\n }, defaultParams), params);\n const dataObject = {\n actionType: AUTH_ACTIONS.LOGIN,\n options: this.options,\n params: loginParams\n };\n const result = await this.authHandler(`${this.baseUrl}/start`, dataObject, getTimeout(params.loginProvider));\n if (this.options.uxMode === UX_MODE.REDIRECT) return null;\n if (result.error) {\n this.dappState = result.state;\n throw LoginError.loginFailed(result.error);\n }\n this.sessionManager.sessionId = result.sessionId;\n this.options.sessionNamespace = result.sessionNamespace;\n this.currentStorage.set(\"sessionId\", result.sessionId);\n await this.rehydrateSession();\n return {\n privKey: this.privKey\n };\n }\n async logout() {\n if (!this.sessionManager.sessionId) throw LoginError.userNotLoggedIn();\n await this.sessionManager.invalidateSession();\n this.updateState({\n privKey: \"\",\n coreKitKey: \"\",\n coreKitEd25519PrivKey: \"\",\n ed25519PrivKey: \"\",\n walletKey: \"\",\n oAuthPrivateKey: \"\",\n tKey: \"\",\n metadataNonce: \"\",\n keyMode: undefined,\n userInfo: {\n name: \"\",\n profileImage: \"\",\n dappShare: \"\",\n idToken: \"\",\n oAuthIdToken: \"\",\n oAuthAccessToken: \"\",\n appState: \"\",\n email: \"\",\n verifier: \"\",\n verifierId: \"\",\n aggregateVerifier: \"\",\n typeOfLogin: \"\",\n isMfaEnabled: false\n },\n authToken: \"\",\n sessionId: \"\",\n factorKey: \"\",\n signatures: [],\n tssShareIndex: -1,\n tssPubKey: \"\",\n tssShare: \"\",\n tssNonce: -1\n });\n this.currentStorage.set(\"sessionId\", \"\");\n }\n async enableMFA(params) {\n var _this$state$userInfo;\n if (!this.sessionId) throw LoginError.userNotLoggedIn();\n if (this.state.userInfo.isMfaEnabled) throw LoginError.mfaAlreadyEnabled();\n // in case of redirect mode, redirect url will be dapp specified\n // in case of popup mode, redirect url will be sdk specified\n const defaultParams = {\n redirectUrl: this.options.redirectUrl\n };\n const dataObject = {\n actionType: AUTH_ACTIONS.ENABLE_MFA,\n options: this.options,\n params: _objectSpread(_objectSpread(_objectSpread({}, defaultParams), params), {}, {\n loginProvider: this.state.userInfo.typeOfLogin,\n extraLoginOptions: {\n login_hint: this.state.userInfo.verifierId\n },\n mfaLevel: \"mandatory\"\n }),\n sessionId: this.sessionId\n };\n const result = await this.authHandler(`${this.baseUrl}/start`, dataObject, getTimeout(dataObject.params.loginProvider));\n if (this.options.uxMode === UX_MODE.REDIRECT) return null;\n if (result.error) {\n this.dappState = result.state;\n throw LoginError.loginFailed(result.error);\n }\n this.sessionManager.sessionId = result.sessionId;\n this.options.sessionNamespace = result.sessionNamespace;\n this.currentStorage.set(\"sessionId\", result.sessionId);\n await this.rehydrateSession();\n return Boolean((_this$state$userInfo = this.state.userInfo) === null || _this$state$userInfo === void 0 ? void 0 : _this$state$userInfo.isMfaEnabled);\n }\n async manageMFA(params) {\n if (!this.sessionId) throw LoginError.userNotLoggedIn();\n if (!this.state.userInfo.isMfaEnabled) throw LoginError.mfaNotEnabled();\n\n // in case of redirect mode, redirect url will be dapp specified\n // in case of popup mode, redirect url will be sdk specified\n const defaultParams = {\n redirectUrl: `${this.dashboardUrl}/wallet/account`,\n dappUrl: `${window.location.origin}${window.location.pathname}`\n };\n const loginId = SessionManager.generateRandomSessionKey();\n const dataObject = {\n actionType: AUTH_ACTIONS.MANAGE_MFA,\n options: this.options,\n params: _objectSpread(_objectSpread(_objectSpread({}, defaultParams), params), {}, {\n loginProvider: this.state.userInfo.typeOfLogin,\n extraLoginOptions: {\n login_hint: this.state.userInfo.verifierId\n },\n appState: jsonToBase64({\n loginId\n })\n }),\n sessionId: this.sessionId\n };\n this.createLoginSession(loginId, dataObject, dataObject.options.sessionTime, true);\n const configParams = {\n loginId,\n sessionNamespace: this.options.sessionNamespace,\n storageServerUrl: this.options.storageServerUrl\n };\n const loginUrl = constructURL({\n baseURL: `${this.baseUrl}/start`,\n hash: {\n b64Params: jsonToBase64(configParams)\n }\n });\n window.open(loginUrl, \"_blank\");\n }\n async manageSocialFactor(actionType, params) {\n if (!this.sessionId) throw LoginError.userNotLoggedIn();\n\n // in case of redirect mode, redirect url will be dapp specified\n // in case of popup mode, redirect url will be sdk specified\n const defaultParams = {\n redirectUrl: this.options.redirectUrl\n };\n const dataObject = {\n actionType,\n options: this.options,\n params: _objectSpread(_objectSpread({}, defaultParams), params),\n sessionId: this.sessionId\n };\n const result = await this.authHandler(`${this.baseUrl}/start`, dataObject);\n if (this.options.uxMode === UX_MODE.REDIRECT) return undefined;\n if (result.error) return false;\n return true;\n }\n async addAuthenticatorFactor(params) {\n if (!this.sessionId) throw LoginError.userNotLoggedIn();\n\n // in case of redirect mode, redirect url will be dapp specified\n // in case of popup mode, redirect url will be sdk specified\n const defaultParams = {\n redirectUrl: this.options.redirectUrl\n };\n const dataObject = {\n actionType: AUTH_ACTIONS.ADD_AUTHENTICATOR_FACTOR,\n options: this.options,\n params: _objectSpread(_objectSpread(_objectSpread({}, defaultParams), params), {}, {\n loginProvider: LOGIN_PROVIDER.AUTHENTICATOR\n }),\n sessionId: this.sessionId\n };\n const result = await this.authHandler(`${this.baseUrl}/start`, dataObject);\n if (this.options.uxMode === UX_MODE.REDIRECT) return undefined;\n if (result.error) return false;\n return true;\n }\n async addPasskeyFactor(params) {\n if (!this.sessionId) throw LoginError.userNotLoggedIn();\n\n // in case of redirect mode, redirect url will be dapp specified\n // in case of popup mode, redirect url will be sdk specified\n const defaultParams = {\n redirectUrl: this.options.redirectUrl\n };\n const dataObject = {\n actionType: AUTH_ACTIONS.ADD_PASSKEY_FACTOR,\n options: this.options,\n params: _objectSpread(_objectSpread(_objectSpread({}, defaultParams), params), {}, {\n loginProvider: LOGIN_PROVIDER.PASSKEYS\n }),\n sessionId: this.sessionId\n };\n const result = await this.authHandler(`${this.baseUrl}/start`, dataObject);\n if (this.options.uxMode === UX_MODE.REDIRECT) return undefined;\n if (result.error) return false;\n return true;\n }\n getUserInfo() {\n if (!this.sessionManager.sessionId) {\n throw LoginError.userNotLoggedIn();\n }\n return this.state.userInfo;\n }\n async createLoginSession(loginId, data, timeout = 600, skipAwait = false) {\n if (!this.sessionManager) throw InitializationError.notInitialized();\n const loginSessionMgr = new SessionManager({\n sessionServerBaseUrl: data.options.storageServerUrl,\n sessionNamespace: data.options.sessionNamespace,\n sessionTime: timeout,\n // each login key must be used with 10 mins (might be used at the end of popup redirect)\n sessionId: loginId,\n allowedOrigin: this.options.sdkUrl\n });\n const promise = loginSessionMgr.createSession(JSON.parse(JSON.stringify(data)));\n if (data.options.uxMode === UX_MODE.REDIRECT && !skipAwait) {\n await promise;\n }\n }\n async _authorizeSession() {\n try {\n if (!this.sessionManager.sessionId) return {};\n const result = await this.sessionManager.authorizeSession();\n return result;\n } catch (err) {\n loglevel.error(\"authorization failed\", err);\n return {};\n }\n }\n updateState(data) {\n this.state = _objectSpread(_objectSpread({}, this.state), data);\n }\n async rehydrateSession() {\n const result = await this._authorizeSession();\n this.updateState(result);\n }\n async authHandler(url, dataObject, popupTimeout = 1000 * 10) {\n const loginId = SessionManager.generateRandomSessionKey();\n await this.createLoginSession(loginId, dataObject);\n const configParams = {\n loginId,\n sessionNamespace: this.options.sessionNamespace,\n storageServerUrl: this.options.storageServerUrl\n };\n if (this.options.uxMode === UX_MODE.REDIRECT) {\n const loginUrl = constructURL({\n baseURL: url,\n hash: {\n b64Params: jsonToBase64(configParams)\n }\n });\n window.location.href = loginUrl;\n return undefined;\n }\n const loginUrl = constructURL({\n baseURL: url,\n hash: {\n b64Params: jsonToBase64(configParams)\n }\n });\n const currentWindow = new PopupHandler({\n url: loginUrl,\n timeout: popupTimeout,\n sessionServerUrl: this.options.storageServerUrl,\n sessionSocketUrl: this.options.sessionSocketUrl\n });\n return new Promise((resolve, reject) => {\n currentWindow.on(\"close\", () => {\n reject(LoginError.popupClosed());\n });\n currentWindow.listenOnChannel(loginId).then(resolve).catch(reject);\n try {\n currentWindow.open();\n } catch (error) {\n reject(error);\n }\n });\n }\n}\n\nexport { Auth };\n","'use strict'\n\n/*\n This file is a reduced and adapted version of the main lib/internal/per_context/primordials.js file defined at\n\n https://github.com/nodejs/node/blob/main/lib/internal/per_context/primordials.js\n\n Don't try to replace with the original file and keep it up to date with the upstream file.\n*/\n\n// This is a simplified version of AggregateError\nclass AggregateError extends Error {\n constructor(errors) {\n if (!Array.isArray(errors)) {\n throw new TypeError(`Expected input to be an Array, got ${typeof errors}`)\n }\n let message = ''\n for (let i = 0; i < errors.length; i++) {\n message += ` ${errors[i].stack}\\n`\n }\n super(message)\n this.name = 'AggregateError'\n this.errors = errors\n }\n}\nmodule.exports = {\n AggregateError,\n ArrayIsArray(self) {\n return Array.isArray(self)\n },\n ArrayPrototypeIncludes(self, el) {\n return self.includes(el)\n },\n ArrayPrototypeIndexOf(self, el) {\n return self.indexOf(el)\n },\n ArrayPrototypeJoin(self, sep) {\n return self.join(sep)\n },\n ArrayPrototypeMap(self, fn) {\n return self.map(fn)\n },\n ArrayPrototypePop(self, el) {\n return self.pop(el)\n },\n ArrayPrototypePush(self, el) {\n return self.push(el)\n },\n ArrayPrototypeSlice(self, start, end) {\n return self.slice(start, end)\n },\n Error,\n FunctionPrototypeCall(fn, thisArgs, ...args) {\n return fn.call(thisArgs, ...args)\n },\n FunctionPrototypeSymbolHasInstance(self, instance) {\n return Function.prototype[Symbol.hasInstance].call(self, instance)\n },\n MathFloor: Math.floor,\n Number,\n NumberIsInteger: Number.isInteger,\n NumberIsNaN: Number.isNaN,\n NumberMAX_SAFE_INTEGER: Number.MAX_SAFE_INTEGER,\n NumberMIN_SAFE_INTEGER: Number.MIN_SAFE_INTEGER,\n NumberParseInt: Number.parseInt,\n ObjectDefineProperties(self, props) {\n return Object.defineProperties(self, props)\n },\n ObjectDefineProperty(self, name, prop) {\n return Object.defineProperty(self, name, prop)\n },\n ObjectGetOwnPropertyDescriptor(self, name) {\n return Object.getOwnPropertyDescriptor(self, name)\n },\n ObjectKeys(obj) {\n return Object.keys(obj)\n },\n ObjectSetPrototypeOf(target, proto) {\n return Object.setPrototypeOf(target, proto)\n },\n Promise,\n PromisePrototypeCatch(self, fn) {\n return self.catch(fn)\n },\n PromisePrototypeThen(self, thenFn, catchFn) {\n return self.then(thenFn, catchFn)\n },\n PromiseReject(err) {\n return Promise.reject(err)\n },\n PromiseResolve(val) {\n return Promise.resolve(val)\n },\n ReflectApply: Reflect.apply,\n RegExpPrototypeTest(self, value) {\n return self.test(value)\n },\n SafeSet: Set,\n String,\n StringPrototypeSlice(self, start, end) {\n return self.slice(start, end)\n },\n StringPrototypeToLowerCase(self) {\n return self.toLowerCase()\n },\n StringPrototypeToUpperCase(self) {\n return self.toUpperCase()\n },\n StringPrototypeTrim(self) {\n return self.trim()\n },\n Symbol,\n SymbolFor: Symbol.for,\n SymbolAsyncIterator: Symbol.asyncIterator,\n SymbolHasInstance: Symbol.hasInstance,\n SymbolIterator: Symbol.iterator,\n SymbolDispose: Symbol.dispose || Symbol('Symbol.dispose'),\n SymbolAsyncDispose: Symbol.asyncDispose || Symbol('Symbol.asyncDispose'),\n TypedArrayPrototypeSet(self, buf, len) {\n return self.set(buf, len)\n },\n Boolean,\n Uint8Array\n}\n","'use strict'\n\n/*\n This file is a reduced and adapted version of the main lib/internal/util/inspect.js file defined at\n\n https://github.com/nodejs/node/blob/main/lib/internal/util/inspect.js\n\n Don't try to replace with the original file and keep it up to date with the upstream file.\n*/\nmodule.exports = {\n format(format, ...args) {\n // Simplified version of https://nodejs.org/api/util.html#utilformatformat-args\n return format.replace(/%([sdifj])/g, function (...[_unused, type]) {\n const replacement = args.shift()\n if (type === 'f') {\n return replacement.toFixed(6)\n } else if (type === 'j') {\n return JSON.stringify(replacement)\n } else if (type === 's' && typeof replacement === 'object') {\n const ctor = replacement.constructor !== Object ? replacement.constructor.name : ''\n return `${ctor} {}`.trim()\n } else {\n return replacement.toString()\n }\n })\n },\n inspect(value) {\n // Vastly simplified version of https://nodejs.org/api/util.html#utilinspectobject-options\n switch (typeof value) {\n case 'string':\n if (value.includes(\"'\")) {\n if (!value.includes('\"')) {\n return `\"${value}\"`\n } else if (!value.includes('`') && !value.includes('${')) {\n return `\\`${value}\\``\n }\n }\n return `'${value}'`\n case 'number':\n if (isNaN(value)) {\n return 'NaN'\n } else if (Object.is(value, -0)) {\n return String(value)\n }\n return value\n case 'bigint':\n return `${String(value)}n`\n case 'boolean':\n case 'undefined':\n return String(value)\n case 'object':\n return '{}'\n }\n }\n}\n","'use strict'\n\nconst { format, inspect } = require('./util/inspect')\nconst { AggregateError: CustomAggregateError } = require('./primordials')\n\n/*\n This file is a reduced and adapted version of the main lib/internal/errors.js file defined at\n\n https://github.com/nodejs/node/blob/main/lib/internal/errors.js\n\n Don't try to replace with the original file and keep it up to date (starting from E(...) definitions)\n with the upstream file.\n*/\n\nconst AggregateError = globalThis.AggregateError || CustomAggregateError\nconst kIsNodeError = Symbol('kIsNodeError')\nconst kTypes = [\n 'string',\n 'function',\n 'number',\n 'object',\n // Accept 'Function' and 'Object' as alternative to the lower cased version.\n 'Function',\n 'Object',\n 'boolean',\n 'bigint',\n 'symbol'\n]\nconst classRegExp = /^([A-Z][a-z0-9]*)+$/\nconst nodeInternalPrefix = '__node_internal_'\nconst codes = {}\nfunction assert(value, message) {\n if (!value) {\n throw new codes.ERR_INTERNAL_ASSERTION(message)\n }\n}\n\n// Only use this for integers! Decimal numbers do not work with this function.\nfunction addNumericalSeparator(val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\nfunction getMessage(key, msg, args) {\n if (typeof msg === 'function') {\n assert(\n msg.length <= args.length,\n // Default options do not count.\n `Code: ${key}; The provided arguments length (${args.length}) does not match the required ones (${msg.length}).`\n )\n return msg(...args)\n }\n const expectedLength = (msg.match(/%[dfijoOs]/g) || []).length\n assert(\n expectedLength === args.length,\n `Code: ${key}; The provided arguments length (${args.length}) does not match the required ones (${expectedLength}).`\n )\n if (args.length === 0) {\n return msg\n }\n return format(msg, ...args)\n}\nfunction E(code, message, Base) {\n if (!Base) {\n Base = Error\n }\n class NodeError extends Base {\n constructor(...args) {\n super(getMessage(code, message, args))\n }\n toString() {\n return `${this.name} [${code}]: ${this.message}`\n }\n }\n Object.defineProperties(NodeError.prototype, {\n name: {\n value: Base.name,\n writable: true,\n enumerable: false,\n configurable: true\n },\n toString: {\n value() {\n return `${this.name} [${code}]: ${this.message}`\n },\n writable: true,\n enumerable: false,\n configurable: true\n }\n })\n NodeError.prototype.code = code\n NodeError.prototype[kIsNodeError] = true\n codes[code] = NodeError\n}\nfunction hideStackFrames(fn) {\n // We rename the functions that will be hidden to cut off the stacktrace\n // at the outermost one\n const hidden = nodeInternalPrefix + fn.name\n Object.defineProperty(fn, 'name', {\n value: hidden\n })\n return fn\n}\nfunction aggregateTwoErrors(innerError, outerError) {\n if (innerError && outerError && innerError !== outerError) {\n if (Array.isArray(outerError.errors)) {\n // If `outerError` is already an `AggregateError`.\n outerError.errors.push(innerError)\n return outerError\n }\n const err = new AggregateError([outerError, innerError], outerError.message)\n err.code = outerError.code\n return err\n }\n return innerError || outerError\n}\nclass AbortError extends Error {\n constructor(message = 'The operation was aborted', options = undefined) {\n if (options !== undefined && typeof options !== 'object') {\n throw new codes.ERR_INVALID_ARG_TYPE('options', 'Object', options)\n }\n super(message, options)\n this.code = 'ABORT_ERR'\n this.name = 'AbortError'\n }\n}\nE('ERR_ASSERTION', '%s', Error)\nE(\n 'ERR_INVALID_ARG_TYPE',\n (name, expected, actual) => {\n assert(typeof name === 'string', \"'name' must be a string\")\n if (!Array.isArray(expected)) {\n expected = [expected]\n }\n let msg = 'The '\n if (name.endsWith(' argument')) {\n // For cases like 'first argument'\n msg += `${name} `\n } else {\n msg += `\"${name}\" ${name.includes('.') ? 'property' : 'argument'} `\n }\n msg += 'must be '\n const types = []\n const instances = []\n const other = []\n for (const value of expected) {\n assert(typeof value === 'string', 'All expected entries have to be of type string')\n if (kTypes.includes(value)) {\n types.push(value.toLowerCase())\n } else if (classRegExp.test(value)) {\n instances.push(value)\n } else {\n assert(value !== 'object', 'The value \"object\" should be written as \"Object\"')\n other.push(value)\n }\n }\n\n // Special handle `object` in case other instances are allowed to outline\n // the differences between each other.\n if (instances.length > 0) {\n const pos = types.indexOf('object')\n if (pos !== -1) {\n types.splice(types, pos, 1)\n instances.push('Object')\n }\n }\n if (types.length > 0) {\n switch (types.length) {\n case 1:\n msg += `of type ${types[0]}`\n break\n case 2:\n msg += `one of type ${types[0]} or ${types[1]}`\n break\n default: {\n const last = types.pop()\n msg += `one of type ${types.join(', ')}, or ${last}`\n }\n }\n if (instances.length > 0 || other.length > 0) {\n msg += ' or '\n }\n }\n if (instances.length > 0) {\n switch (instances.length) {\n case 1:\n msg += `an instance of ${instances[0]}`\n break\n case 2:\n msg += `an instance of ${instances[0]} or ${instances[1]}`\n break\n default: {\n const last = instances.pop()\n msg += `an instance of ${instances.join(', ')}, or ${last}`\n }\n }\n if (other.length > 0) {\n msg += ' or '\n }\n }\n switch (other.length) {\n case 0:\n break\n case 1:\n if (other[0].toLowerCase() !== other[0]) {\n msg += 'an '\n }\n msg += `${other[0]}`\n break\n case 2:\n msg += `one of ${other[0]} or ${other[1]}`\n break\n default: {\n const last = other.pop()\n msg += `one of ${other.join(', ')}, or ${last}`\n }\n }\n if (actual == null) {\n msg += `. Received ${actual}`\n } else if (typeof actual === 'function' && actual.name) {\n msg += `. Received function ${actual.name}`\n } else if (typeof actual === 'object') {\n var _actual$constructor\n if (\n (_actual$constructor = actual.constructor) !== null &&\n _actual$constructor !== undefined &&\n _actual$constructor.name\n ) {\n msg += `. Received an instance of ${actual.constructor.name}`\n } else {\n const inspected = inspect(actual, {\n depth: -1\n })\n msg += `. Received ${inspected}`\n }\n } else {\n let inspected = inspect(actual, {\n colors: false\n })\n if (inspected.length > 25) {\n inspected = `${inspected.slice(0, 25)}...`\n }\n msg += `. Received type ${typeof actual} (${inspected})`\n }\n return msg\n },\n TypeError\n)\nE(\n 'ERR_INVALID_ARG_VALUE',\n (name, value, reason = 'is invalid') => {\n let inspected = inspect(value)\n if (inspected.length > 128) {\n inspected = inspected.slice(0, 128) + '...'\n }\n const type = name.includes('.') ? 'property' : 'argument'\n return `The ${type} '${name}' ${reason}. Received ${inspected}`\n },\n TypeError\n)\nE(\n 'ERR_INVALID_RETURN_VALUE',\n (input, name, value) => {\n var _value$constructor\n const type =\n value !== null &&\n value !== undefined &&\n (_value$constructor = value.constructor) !== null &&\n _value$constructor !== undefined &&\n _value$constructor.name\n ? `instance of ${value.constructor.name}`\n : `type ${typeof value}`\n return `Expected ${input} to be returned from the \"${name}\"` + ` function but got ${type}.`\n },\n TypeError\n)\nE(\n 'ERR_MISSING_ARGS',\n (...args) => {\n assert(args.length > 0, 'At least one arg needs to be specified')\n let msg\n const len = args.length\n args = (Array.isArray(args) ? args : [args]).map((a) => `\"${a}\"`).join(' or ')\n switch (len) {\n case 1:\n msg += `The ${args[0]} argument`\n break\n case 2:\n msg += `The ${args[0]} and ${args[1]} arguments`\n break\n default:\n {\n const last = args.pop()\n msg += `The ${args.join(', ')}, and ${last} arguments`\n }\n break\n }\n return `${msg} must be specified`\n },\n TypeError\n)\nE(\n 'ERR_OUT_OF_RANGE',\n (str, range, input) => {\n assert(range, 'Missing \"range\" argument')\n let received\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n const limit = BigInt(2) ** BigInt(32)\n if (input > limit || input < -limit) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n } else {\n received = inspect(input)\n }\n return `The value of \"${str}\" is out of range. It must be ${range}. Received ${received}`\n },\n RangeError\n)\nE('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times', Error)\nE('ERR_METHOD_NOT_IMPLEMENTED', 'The %s method is not implemented', Error)\nE('ERR_STREAM_ALREADY_FINISHED', 'Cannot call %s after a stream was finished', Error)\nE('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable', Error)\nE('ERR_STREAM_DESTROYED', 'Cannot call %s after a stream was destroyed', Error)\nE('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError)\nE('ERR_STREAM_PREMATURE_CLOSE', 'Premature close', Error)\nE('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF', Error)\nE('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event', Error)\nE('ERR_STREAM_WRITE_AFTER_END', 'write after end', Error)\nE('ERR_UNKNOWN_ENCODING', 'Unknown encoding: %s', TypeError)\nmodule.exports = {\n AbortError,\n aggregateTwoErrors: hideStackFrames(aggregateTwoErrors),\n hideStackFrames,\n codes\n}\n","/*globals self, window */\n\"use strict\"\n\n/*eslint-disable @mysticatea/prettier */\nconst { AbortController, AbortSignal } =\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n /* otherwise */ undefined\n/*eslint-enable @mysticatea/prettier */\n\nmodule.exports = AbortController\nmodule.exports.AbortSignal = AbortSignal\nmodule.exports.default = AbortController\n","'use strict'\n\nconst bufferModule = require('buffer')\nconst { format, inspect } = require('./util/inspect')\nconst {\n codes: { ERR_INVALID_ARG_TYPE }\n} = require('./errors')\nconst { kResistStopPropagation, AggregateError, SymbolDispose } = require('./primordials')\nconst AbortSignal = globalThis.AbortSignal || require('abort-controller').AbortSignal\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nconst AsyncFunction = Object.getPrototypeOf(async function () {}).constructor\nconst Blob = globalThis.Blob || bufferModule.Blob\n/* eslint-disable indent */\nconst isBlob =\n typeof Blob !== 'undefined'\n ? function isBlob(b) {\n // eslint-disable-next-line indent\n return b instanceof Blob\n }\n : function isBlob(b) {\n return false\n }\n/* eslint-enable indent */\n\nconst validateAbortSignal = (signal, name) => {\n if (signal !== undefined && (signal === null || typeof signal !== 'object' || !('aborted' in signal))) {\n throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal)\n }\n}\nconst validateFunction = (value, name) => {\n if (typeof value !== 'function') {\n throw new ERR_INVALID_ARG_TYPE(name, 'Function', value)\n }\n}\nmodule.exports = {\n AggregateError,\n kEmptyObject: Object.freeze({}),\n once(callback) {\n let called = false\n return function (...args) {\n if (called) {\n return\n }\n called = true\n callback.apply(this, args)\n }\n },\n createDeferredPromise: function () {\n let resolve\n let reject\n\n // eslint-disable-next-line promise/param-names\n const promise = new Promise((res, rej) => {\n resolve = res\n reject = rej\n })\n return {\n promise,\n resolve,\n reject\n }\n },\n promisify(fn) {\n return new Promise((resolve, reject) => {\n fn((err, ...args) => {\n if (err) {\n return reject(err)\n }\n return resolve(...args)\n })\n })\n },\n debuglog() {\n return function () {}\n },\n format,\n inspect,\n types: {\n isAsyncFunction(fn) {\n return fn instanceof AsyncFunction\n },\n isArrayBufferView(arr) {\n return ArrayBuffer.isView(arr)\n }\n },\n isBlob,\n deprecate(fn, message) {\n return fn\n },\n addAbortListener:\n require('events').addAbortListener ||\n function addAbortListener(signal, listener) {\n if (signal === undefined) {\n throw new ERR_INVALID_ARG_TYPE('signal', 'AbortSignal', signal)\n }\n validateAbortSignal(signal, 'signal')\n validateFunction(listener, 'listener')\n let removeEventListener\n if (signal.aborted) {\n queueMicrotask(() => listener())\n } else {\n signal.addEventListener('abort', listener, {\n __proto__: null,\n once: true,\n [kResistStopPropagation]: true\n })\n removeEventListener = () => {\n signal.removeEventListener('abort', listener)\n }\n }\n return {\n __proto__: null,\n [SymbolDispose]() {\n var _removeEventListener\n ;(_removeEventListener = removeEventListener) === null || _removeEventListener === undefined\n ? undefined\n : _removeEventListener()\n }\n }\n },\n AbortSignalAny:\n AbortSignal.any ||\n function AbortSignalAny(signals) {\n // Fast path if there is only one signal.\n if (signals.length === 1) {\n return signals[0]\n }\n const ac = new AbortController()\n const abort = () => ac.abort()\n signals.forEach((signal) => {\n validateAbortSignal(signal, 'signals')\n signal.addEventListener('abort', abort, {\n once: true\n })\n })\n ac.signal.addEventListener(\n 'abort',\n () => {\n signals.forEach((signal) => signal.removeEventListener('abort', abort))\n },\n {\n once: true\n }\n )\n return ac.signal\n }\n}\nmodule.exports.promisify.custom = Symbol.for('nodejs.util.promisify.custom')\n","/* eslint jsdoc/require-jsdoc: \"error\" */\n\n'use strict'\n\nconst {\n ArrayIsArray,\n ArrayPrototypeIncludes,\n ArrayPrototypeJoin,\n ArrayPrototypeMap,\n NumberIsInteger,\n NumberIsNaN,\n NumberMAX_SAFE_INTEGER,\n NumberMIN_SAFE_INTEGER,\n NumberParseInt,\n ObjectPrototypeHasOwnProperty,\n RegExpPrototypeExec,\n String,\n StringPrototypeToUpperCase,\n StringPrototypeTrim\n} = require('../ours/primordials')\nconst {\n hideStackFrames,\n codes: { ERR_SOCKET_BAD_PORT, ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, ERR_OUT_OF_RANGE, ERR_UNKNOWN_SIGNAL }\n} = require('../ours/errors')\nconst { normalizeEncoding } = require('../ours/util')\nconst { isAsyncFunction, isArrayBufferView } = require('../ours/util').types\nconst signals = {}\n\n/**\n * @param {*} value\n * @returns {boolean}\n */\nfunction isInt32(value) {\n return value === (value | 0)\n}\n\n/**\n * @param {*} value\n * @returns {boolean}\n */\nfunction isUint32(value) {\n return value === value >>> 0\n}\nconst octalReg = /^[0-7]+$/\nconst modeDesc = 'must be a 32-bit unsigned integer or an octal string'\n\n/**\n * Parse and validate values that will be converted into mode_t (the S_*\n * constants). Only valid numbers and octal strings are allowed. They could be\n * converted to 32-bit unsigned integers or non-negative signed integers in the\n * C++ land, but any value higher than 0o777 will result in platform-specific\n * behaviors.\n * @param {*} value Values to be validated\n * @param {string} name Name of the argument\n * @param {number} [def] If specified, will be returned for invalid values\n * @returns {number}\n */\nfunction parseFileMode(value, name, def) {\n if (typeof value === 'undefined') {\n value = def\n }\n if (typeof value === 'string') {\n if (RegExpPrototypeExec(octalReg, value) === null) {\n throw new ERR_INVALID_ARG_VALUE(name, value, modeDesc)\n }\n value = NumberParseInt(value, 8)\n }\n validateUint32(value, name)\n return value\n}\n\n/**\n * @callback validateInteger\n * @param {*} value\n * @param {string} name\n * @param {number} [min]\n * @param {number} [max]\n * @returns {asserts value is number}\n */\n\n/** @type {validateInteger} */\nconst validateInteger = hideStackFrames((value, name, min = NumberMIN_SAFE_INTEGER, max = NumberMAX_SAFE_INTEGER) => {\n if (typeof value !== 'number') throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n if (!NumberIsInteger(value)) throw new ERR_OUT_OF_RANGE(name, 'an integer', value)\n if (value < min || value > max) throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value)\n})\n\n/**\n * @callback validateInt32\n * @param {*} value\n * @param {string} name\n * @param {number} [min]\n * @param {number} [max]\n * @returns {asserts value is number}\n */\n\n/** @type {validateInt32} */\nconst validateInt32 = hideStackFrames((value, name, min = -2147483648, max = 2147483647) => {\n // The defaults for min and max correspond to the limits of 32-bit integers.\n if (typeof value !== 'number') {\n throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n if (!NumberIsInteger(value)) {\n throw new ERR_OUT_OF_RANGE(name, 'an integer', value)\n }\n if (value < min || value > max) {\n throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value)\n }\n})\n\n/**\n * @callback validateUint32\n * @param {*} value\n * @param {string} name\n * @param {number|boolean} [positive=false]\n * @returns {asserts value is number}\n */\n\n/** @type {validateUint32} */\nconst validateUint32 = hideStackFrames((value, name, positive = false) => {\n if (typeof value !== 'number') {\n throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n if (!NumberIsInteger(value)) {\n throw new ERR_OUT_OF_RANGE(name, 'an integer', value)\n }\n const min = positive ? 1 : 0\n // 2 ** 32 === 4294967296\n const max = 4294967295\n if (value < min || value > max) {\n throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value)\n }\n})\n\n/**\n * @callback validateString\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is string}\n */\n\n/** @type {validateString} */\nfunction validateString(value, name) {\n if (typeof value !== 'string') throw new ERR_INVALID_ARG_TYPE(name, 'string', value)\n}\n\n/**\n * @callback validateNumber\n * @param {*} value\n * @param {string} name\n * @param {number} [min]\n * @param {number} [max]\n * @returns {asserts value is number}\n */\n\n/** @type {validateNumber} */\nfunction validateNumber(value, name, min = undefined, max) {\n if (typeof value !== 'number') throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n if (\n (min != null && value < min) ||\n (max != null && value > max) ||\n ((min != null || max != null) && NumberIsNaN(value))\n ) {\n throw new ERR_OUT_OF_RANGE(\n name,\n `${min != null ? `>= ${min}` : ''}${min != null && max != null ? ' && ' : ''}${max != null ? `<= ${max}` : ''}`,\n value\n )\n }\n}\n\n/**\n * @callback validateOneOf\n * @template T\n * @param {T} value\n * @param {string} name\n * @param {T[]} oneOf\n */\n\n/** @type {validateOneOf} */\nconst validateOneOf = hideStackFrames((value, name, oneOf) => {\n if (!ArrayPrototypeIncludes(oneOf, value)) {\n const allowed = ArrayPrototypeJoin(\n ArrayPrototypeMap(oneOf, (v) => (typeof v === 'string' ? `'${v}'` : String(v))),\n ', '\n )\n const reason = 'must be one of: ' + allowed\n throw new ERR_INVALID_ARG_VALUE(name, value, reason)\n }\n})\n\n/**\n * @callback validateBoolean\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is boolean}\n */\n\n/** @type {validateBoolean} */\nfunction validateBoolean(value, name) {\n if (typeof value !== 'boolean') throw new ERR_INVALID_ARG_TYPE(name, 'boolean', value)\n}\n\n/**\n * @param {any} options\n * @param {string} key\n * @param {boolean} defaultValue\n * @returns {boolean}\n */\nfunction getOwnPropertyValueOrDefault(options, key, defaultValue) {\n return options == null || !ObjectPrototypeHasOwnProperty(options, key) ? defaultValue : options[key]\n}\n\n/**\n * @callback validateObject\n * @param {*} value\n * @param {string} name\n * @param {{\n * allowArray?: boolean,\n * allowFunction?: boolean,\n * nullable?: boolean\n * }} [options]\n */\n\n/** @type {validateObject} */\nconst validateObject = hideStackFrames((value, name, options = null) => {\n const allowArray = getOwnPropertyValueOrDefault(options, 'allowArray', false)\n const allowFunction = getOwnPropertyValueOrDefault(options, 'allowFunction', false)\n const nullable = getOwnPropertyValueOrDefault(options, 'nullable', false)\n if (\n (!nullable && value === null) ||\n (!allowArray && ArrayIsArray(value)) ||\n (typeof value !== 'object' && (!allowFunction || typeof value !== 'function'))\n ) {\n throw new ERR_INVALID_ARG_TYPE(name, 'Object', value)\n }\n})\n\n/**\n * @callback validateDictionary - We are using the Web IDL Standard definition\n * of \"dictionary\" here, which means any value\n * whose Type is either Undefined, Null, or\n * Object (which includes functions).\n * @param {*} value\n * @param {string} name\n * @see https://webidl.spec.whatwg.org/#es-dictionary\n * @see https://tc39.es/ecma262/#table-typeof-operator-results\n */\n\n/** @type {validateDictionary} */\nconst validateDictionary = hideStackFrames((value, name) => {\n if (value != null && typeof value !== 'object' && typeof value !== 'function') {\n throw new ERR_INVALID_ARG_TYPE(name, 'a dictionary', value)\n }\n})\n\n/**\n * @callback validateArray\n * @param {*} value\n * @param {string} name\n * @param {number} [minLength]\n * @returns {asserts value is any[]}\n */\n\n/** @type {validateArray} */\nconst validateArray = hideStackFrames((value, name, minLength = 0) => {\n if (!ArrayIsArray(value)) {\n throw new ERR_INVALID_ARG_TYPE(name, 'Array', value)\n }\n if (value.length < minLength) {\n const reason = `must be longer than ${minLength}`\n throw new ERR_INVALID_ARG_VALUE(name, value, reason)\n }\n})\n\n/**\n * @callback validateStringArray\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is string[]}\n */\n\n/** @type {validateStringArray} */\nfunction validateStringArray(value, name) {\n validateArray(value, name)\n for (let i = 0; i < value.length; i++) {\n validateString(value[i], `${name}[${i}]`)\n }\n}\n\n/**\n * @callback validateBooleanArray\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is boolean[]}\n */\n\n/** @type {validateBooleanArray} */\nfunction validateBooleanArray(value, name) {\n validateArray(value, name)\n for (let i = 0; i < value.length; i++) {\n validateBoolean(value[i], `${name}[${i}]`)\n }\n}\n\n/**\n * @callback validateAbortSignalArray\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is AbortSignal[]}\n */\n\n/** @type {validateAbortSignalArray} */\nfunction validateAbortSignalArray(value, name) {\n validateArray(value, name)\n for (let i = 0; i < value.length; i++) {\n const signal = value[i]\n const indexedName = `${name}[${i}]`\n if (signal == null) {\n throw new ERR_INVALID_ARG_TYPE(indexedName, 'AbortSignal', signal)\n }\n validateAbortSignal(signal, indexedName)\n }\n}\n\n/**\n * @param {*} signal\n * @param {string} [name='signal']\n * @returns {asserts signal is keyof signals}\n */\nfunction validateSignalName(signal, name = 'signal') {\n validateString(signal, name)\n if (signals[signal] === undefined) {\n if (signals[StringPrototypeToUpperCase(signal)] !== undefined) {\n throw new ERR_UNKNOWN_SIGNAL(signal + ' (signals must use all capital letters)')\n }\n throw new ERR_UNKNOWN_SIGNAL(signal)\n }\n}\n\n/**\n * @callback validateBuffer\n * @param {*} buffer\n * @param {string} [name='buffer']\n * @returns {asserts buffer is ArrayBufferView}\n */\n\n/** @type {validateBuffer} */\nconst validateBuffer = hideStackFrames((buffer, name = 'buffer') => {\n if (!isArrayBufferView(buffer)) {\n throw new ERR_INVALID_ARG_TYPE(name, ['Buffer', 'TypedArray', 'DataView'], buffer)\n }\n})\n\n/**\n * @param {string} data\n * @param {string} encoding\n */\nfunction validateEncoding(data, encoding) {\n const normalizedEncoding = normalizeEncoding(encoding)\n const length = data.length\n if (normalizedEncoding === 'hex' && length % 2 !== 0) {\n throw new ERR_INVALID_ARG_VALUE('encoding', encoding, `is invalid for data of length ${length}`)\n }\n}\n\n/**\n * Check that the port number is not NaN when coerced to a number,\n * is an integer and that it falls within the legal range of port numbers.\n * @param {*} port\n * @param {string} [name='Port']\n * @param {boolean} [allowZero=true]\n * @returns {number}\n */\nfunction validatePort(port, name = 'Port', allowZero = true) {\n if (\n (typeof port !== 'number' && typeof port !== 'string') ||\n (typeof port === 'string' && StringPrototypeTrim(port).length === 0) ||\n +port !== +port >>> 0 ||\n port > 0xffff ||\n (port === 0 && !allowZero)\n ) {\n throw new ERR_SOCKET_BAD_PORT(name, port, allowZero)\n }\n return port | 0\n}\n\n/**\n * @callback validateAbortSignal\n * @param {*} signal\n * @param {string} name\n */\n\n/** @type {validateAbortSignal} */\nconst validateAbortSignal = hideStackFrames((signal, name) => {\n if (signal !== undefined && (signal === null || typeof signal !== 'object' || !('aborted' in signal))) {\n throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal)\n }\n})\n\n/**\n * @callback validateFunction\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is Function}\n */\n\n/** @type {validateFunction} */\nconst validateFunction = hideStackFrames((value, name) => {\n if (typeof value !== 'function') throw new ERR_INVALID_ARG_TYPE(name, 'Function', value)\n})\n\n/**\n * @callback validatePlainFunction\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is Function}\n */\n\n/** @type {validatePlainFunction} */\nconst validatePlainFunction = hideStackFrames((value, name) => {\n if (typeof value !== 'function' || isAsyncFunction(value)) throw new ERR_INVALID_ARG_TYPE(name, 'Function', value)\n})\n\n/**\n * @callback validateUndefined\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is undefined}\n */\n\n/** @type {validateUndefined} */\nconst validateUndefined = hideStackFrames((value, name) => {\n if (value !== undefined) throw new ERR_INVALID_ARG_TYPE(name, 'undefined', value)\n})\n\n/**\n * @template T\n * @param {T} value\n * @param {string} name\n * @param {T[]} union\n */\nfunction validateUnion(value, name, union) {\n if (!ArrayPrototypeIncludes(union, value)) {\n throw new ERR_INVALID_ARG_TYPE(name, `('${ArrayPrototypeJoin(union, '|')}')`, value)\n }\n}\n\n/*\n The rules for the Link header field are described here:\n https://www.rfc-editor.org/rfc/rfc8288.html#section-3\n\n This regex validates any string surrounded by angle brackets\n (not necessarily a valid URI reference) followed by zero or more\n link-params separated by semicolons.\n*/\nconst linkValueRegExp = /^(?:<[^>]*>)(?:\\s*;\\s*[^;\"\\s]+(?:=(\")?[^;\"\\s]*\\1)?)*$/\n\n/**\n * @param {any} value\n * @param {string} name\n */\nfunction validateLinkHeaderFormat(value, name) {\n if (typeof value === 'undefined' || !RegExpPrototypeExec(linkValueRegExp, value)) {\n throw new ERR_INVALID_ARG_VALUE(\n name,\n value,\n 'must be an array or string of format \"; rel=preload; as=style\"'\n )\n }\n}\n\n/**\n * @param {any} hints\n * @return {string}\n */\nfunction validateLinkHeaderValue(hints) {\n if (typeof hints === 'string') {\n validateLinkHeaderFormat(hints, 'hints')\n return hints\n } else if (ArrayIsArray(hints)) {\n const hintsLength = hints.length\n let result = ''\n if (hintsLength === 0) {\n return result\n }\n for (let i = 0; i < hintsLength; i++) {\n const link = hints[i]\n validateLinkHeaderFormat(link, 'hints')\n result += link\n if (i !== hintsLength - 1) {\n result += ', '\n }\n }\n return result\n }\n throw new ERR_INVALID_ARG_VALUE(\n 'hints',\n hints,\n 'must be an array or string of format \"; rel=preload; as=style\"'\n )\n}\nmodule.exports = {\n isInt32,\n isUint32,\n parseFileMode,\n validateArray,\n validateStringArray,\n validateBooleanArray,\n validateAbortSignalArray,\n validateBoolean,\n validateBuffer,\n validateDictionary,\n validateEncoding,\n validateFunction,\n validateInt32,\n validateInteger,\n validateNumber,\n validateObject,\n validateOneOf,\n validatePlainFunction,\n validatePort,\n validateSignalName,\n validateString,\n validateUint32,\n validateUndefined,\n validateUnion,\n validateAbortSignal,\n validateLinkHeaderValue\n}\n","'use strict'\n\nconst { SymbolAsyncIterator, SymbolIterator, SymbolFor } = require('../../ours/primordials')\n\n// We need to use SymbolFor to make these globally available\n// for interopt with readable-stream, i.e. readable-stream\n// and node core needs to be able to read/write private state\n// from each other for proper interoperability.\nconst kIsDestroyed = SymbolFor('nodejs.stream.destroyed')\nconst kIsErrored = SymbolFor('nodejs.stream.errored')\nconst kIsReadable = SymbolFor('nodejs.stream.readable')\nconst kIsWritable = SymbolFor('nodejs.stream.writable')\nconst kIsDisturbed = SymbolFor('nodejs.stream.disturbed')\nconst kIsClosedPromise = SymbolFor('nodejs.webstream.isClosedPromise')\nconst kControllerErrorFunction = SymbolFor('nodejs.webstream.controllerErrorFunction')\nfunction isReadableNodeStream(obj, strict = false) {\n var _obj$_readableState\n return !!(\n (\n obj &&\n typeof obj.pipe === 'function' &&\n typeof obj.on === 'function' &&\n (!strict || (typeof obj.pause === 'function' && typeof obj.resume === 'function')) &&\n (!obj._writableState ||\n ((_obj$_readableState = obj._readableState) === null || _obj$_readableState === undefined\n ? undefined\n : _obj$_readableState.readable) !== false) &&\n // Duplex\n (!obj._writableState || obj._readableState)\n ) // Writable has .pipe.\n )\n}\nfunction isWritableNodeStream(obj) {\n var _obj$_writableState\n return !!(\n (\n obj &&\n typeof obj.write === 'function' &&\n typeof obj.on === 'function' &&\n (!obj._readableState ||\n ((_obj$_writableState = obj._writableState) === null || _obj$_writableState === undefined\n ? undefined\n : _obj$_writableState.writable) !== false)\n ) // Duplex\n )\n}\nfunction isDuplexNodeStream(obj) {\n return !!(\n obj &&\n typeof obj.pipe === 'function' &&\n obj._readableState &&\n typeof obj.on === 'function' &&\n typeof obj.write === 'function'\n )\n}\nfunction isNodeStream(obj) {\n return (\n obj &&\n (obj._readableState ||\n obj._writableState ||\n (typeof obj.write === 'function' && typeof obj.on === 'function') ||\n (typeof obj.pipe === 'function' && typeof obj.on === 'function'))\n )\n}\nfunction isReadableStream(obj) {\n return !!(\n obj &&\n !isNodeStream(obj) &&\n typeof obj.pipeThrough === 'function' &&\n typeof obj.getReader === 'function' &&\n typeof obj.cancel === 'function'\n )\n}\nfunction isWritableStream(obj) {\n return !!(obj && !isNodeStream(obj) && typeof obj.getWriter === 'function' && typeof obj.abort === 'function')\n}\nfunction isTransformStream(obj) {\n return !!(obj && !isNodeStream(obj) && typeof obj.readable === 'object' && typeof obj.writable === 'object')\n}\nfunction isWebStream(obj) {\n return isReadableStream(obj) || isWritableStream(obj) || isTransformStream(obj)\n}\nfunction isIterable(obj, isAsync) {\n if (obj == null) return false\n if (isAsync === true) return typeof obj[SymbolAsyncIterator] === 'function'\n if (isAsync === false) return typeof obj[SymbolIterator] === 'function'\n return typeof obj[SymbolAsyncIterator] === 'function' || typeof obj[SymbolIterator] === 'function'\n}\nfunction isDestroyed(stream) {\n if (!isNodeStream(stream)) return null\n const wState = stream._writableState\n const rState = stream._readableState\n const state = wState || rState\n return !!(stream.destroyed || stream[kIsDestroyed] || (state !== null && state !== undefined && state.destroyed))\n}\n\n// Have been end():d.\nfunction isWritableEnded(stream) {\n if (!isWritableNodeStream(stream)) return null\n if (stream.writableEnded === true) return true\n const wState = stream._writableState\n if (wState !== null && wState !== undefined && wState.errored) return false\n if (typeof (wState === null || wState === undefined ? undefined : wState.ended) !== 'boolean') return null\n return wState.ended\n}\n\n// Have emitted 'finish'.\nfunction isWritableFinished(stream, strict) {\n if (!isWritableNodeStream(stream)) return null\n if (stream.writableFinished === true) return true\n const wState = stream._writableState\n if (wState !== null && wState !== undefined && wState.errored) return false\n if (typeof (wState === null || wState === undefined ? undefined : wState.finished) !== 'boolean') return null\n return !!(wState.finished || (strict === false && wState.ended === true && wState.length === 0))\n}\n\n// Have been push(null):d.\nfunction isReadableEnded(stream) {\n if (!isReadableNodeStream(stream)) return null\n if (stream.readableEnded === true) return true\n const rState = stream._readableState\n if (!rState || rState.errored) return false\n if (typeof (rState === null || rState === undefined ? undefined : rState.ended) !== 'boolean') return null\n return rState.ended\n}\n\n// Have emitted 'end'.\nfunction isReadableFinished(stream, strict) {\n if (!isReadableNodeStream(stream)) return null\n const rState = stream._readableState\n if (rState !== null && rState !== undefined && rState.errored) return false\n if (typeof (rState === null || rState === undefined ? undefined : rState.endEmitted) !== 'boolean') return null\n return !!(rState.endEmitted || (strict === false && rState.ended === true && rState.length === 0))\n}\nfunction isReadable(stream) {\n if (stream && stream[kIsReadable] != null) return stream[kIsReadable]\n if (typeof (stream === null || stream === undefined ? undefined : stream.readable) !== 'boolean') return null\n if (isDestroyed(stream)) return false\n return isReadableNodeStream(stream) && stream.readable && !isReadableFinished(stream)\n}\nfunction isWritable(stream) {\n if (stream && stream[kIsWritable] != null) return stream[kIsWritable]\n if (typeof (stream === null || stream === undefined ? undefined : stream.writable) !== 'boolean') return null\n if (isDestroyed(stream)) return false\n return isWritableNodeStream(stream) && stream.writable && !isWritableEnded(stream)\n}\nfunction isFinished(stream, opts) {\n if (!isNodeStream(stream)) {\n return null\n }\n if (isDestroyed(stream)) {\n return true\n }\n if ((opts === null || opts === undefined ? undefined : opts.readable) !== false && isReadable(stream)) {\n return false\n }\n if ((opts === null || opts === undefined ? undefined : opts.writable) !== false && isWritable(stream)) {\n return false\n }\n return true\n}\nfunction isWritableErrored(stream) {\n var _stream$_writableStat, _stream$_writableStat2\n if (!isNodeStream(stream)) {\n return null\n }\n if (stream.writableErrored) {\n return stream.writableErrored\n }\n return (_stream$_writableStat =\n (_stream$_writableStat2 = stream._writableState) === null || _stream$_writableStat2 === undefined\n ? undefined\n : _stream$_writableStat2.errored) !== null && _stream$_writableStat !== undefined\n ? _stream$_writableStat\n : null\n}\nfunction isReadableErrored(stream) {\n var _stream$_readableStat, _stream$_readableStat2\n if (!isNodeStream(stream)) {\n return null\n }\n if (stream.readableErrored) {\n return stream.readableErrored\n }\n return (_stream$_readableStat =\n (_stream$_readableStat2 = stream._readableState) === null || _stream$_readableStat2 === undefined\n ? undefined\n : _stream$_readableStat2.errored) !== null && _stream$_readableStat !== undefined\n ? _stream$_readableStat\n : null\n}\nfunction isClosed(stream) {\n if (!isNodeStream(stream)) {\n return null\n }\n if (typeof stream.closed === 'boolean') {\n return stream.closed\n }\n const wState = stream._writableState\n const rState = stream._readableState\n if (\n typeof (wState === null || wState === undefined ? undefined : wState.closed) === 'boolean' ||\n typeof (rState === null || rState === undefined ? undefined : rState.closed) === 'boolean'\n ) {\n return (\n (wState === null || wState === undefined ? undefined : wState.closed) ||\n (rState === null || rState === undefined ? undefined : rState.closed)\n )\n }\n if (typeof stream._closed === 'boolean' && isOutgoingMessage(stream)) {\n return stream._closed\n }\n return null\n}\nfunction isOutgoingMessage(stream) {\n return (\n typeof stream._closed === 'boolean' &&\n typeof stream._defaultKeepAlive === 'boolean' &&\n typeof stream._removedConnection === 'boolean' &&\n typeof stream._removedContLen === 'boolean'\n )\n}\nfunction isServerResponse(stream) {\n return typeof stream._sent100 === 'boolean' && isOutgoingMessage(stream)\n}\nfunction isServerRequest(stream) {\n var _stream$req\n return (\n typeof stream._consuming === 'boolean' &&\n typeof stream._dumped === 'boolean' &&\n ((_stream$req = stream.req) === null || _stream$req === undefined ? undefined : _stream$req.upgradeOrConnect) ===\n undefined\n )\n}\nfunction willEmitClose(stream) {\n if (!isNodeStream(stream)) return null\n const wState = stream._writableState\n const rState = stream._readableState\n const state = wState || rState\n return (\n (!state && isServerResponse(stream)) || !!(state && state.autoDestroy && state.emitClose && state.closed === false)\n )\n}\nfunction isDisturbed(stream) {\n var _stream$kIsDisturbed\n return !!(\n stream &&\n ((_stream$kIsDisturbed = stream[kIsDisturbed]) !== null && _stream$kIsDisturbed !== undefined\n ? _stream$kIsDisturbed\n : stream.readableDidRead || stream.readableAborted)\n )\n}\nfunction isErrored(stream) {\n var _ref,\n _ref2,\n _ref3,\n _ref4,\n _ref5,\n _stream$kIsErrored,\n _stream$_readableStat3,\n _stream$_writableStat3,\n _stream$_readableStat4,\n _stream$_writableStat4\n return !!(\n stream &&\n ((_ref =\n (_ref2 =\n (_ref3 =\n (_ref4 =\n (_ref5 =\n (_stream$kIsErrored = stream[kIsErrored]) !== null && _stream$kIsErrored !== undefined\n ? _stream$kIsErrored\n : stream.readableErrored) !== null && _ref5 !== undefined\n ? _ref5\n : stream.writableErrored) !== null && _ref4 !== undefined\n ? _ref4\n : (_stream$_readableStat3 = stream._readableState) === null || _stream$_readableStat3 === undefined\n ? undefined\n : _stream$_readableStat3.errorEmitted) !== null && _ref3 !== undefined\n ? _ref3\n : (_stream$_writableStat3 = stream._writableState) === null || _stream$_writableStat3 === undefined\n ? undefined\n : _stream$_writableStat3.errorEmitted) !== null && _ref2 !== undefined\n ? _ref2\n : (_stream$_readableStat4 = stream._readableState) === null || _stream$_readableStat4 === undefined\n ? undefined\n : _stream$_readableStat4.errored) !== null && _ref !== undefined\n ? _ref\n : (_stream$_writableStat4 = stream._writableState) === null || _stream$_writableStat4 === undefined\n ? undefined\n : _stream$_writableStat4.errored)\n )\n}\nmodule.exports = {\n isDestroyed,\n kIsDestroyed,\n isDisturbed,\n kIsDisturbed,\n isErrored,\n kIsErrored,\n isReadable,\n kIsReadable,\n kIsClosedPromise,\n kControllerErrorFunction,\n kIsWritable,\n isClosed,\n isDuplexNodeStream,\n isFinished,\n isIterable,\n isReadableNodeStream,\n isReadableStream,\n isReadableEnded,\n isReadableFinished,\n isReadableErrored,\n isNodeStream,\n isWebStream,\n isWritable,\n isWritableNodeStream,\n isWritableStream,\n isWritableEnded,\n isWritableFinished,\n isWritableErrored,\n isServerRequest,\n isServerResponse,\n willEmitClose,\n isTransformStream\n}\n","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict'\n\n/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\nconst { AbortError, codes } = require('../../ours/errors')\nconst { ERR_INVALID_ARG_TYPE, ERR_STREAM_PREMATURE_CLOSE } = codes\nconst { kEmptyObject, once } = require('../../ours/util')\nconst { validateAbortSignal, validateFunction, validateObject, validateBoolean } = require('../validators')\nconst { Promise, PromisePrototypeThen, SymbolDispose } = require('../../ours/primordials')\nconst {\n isClosed,\n isReadable,\n isReadableNodeStream,\n isReadableStream,\n isReadableFinished,\n isReadableErrored,\n isWritable,\n isWritableNodeStream,\n isWritableStream,\n isWritableFinished,\n isWritableErrored,\n isNodeStream,\n willEmitClose: _willEmitClose,\n kIsClosedPromise\n} = require('./utils')\nlet addAbortListener\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function'\n}\nconst nop = () => {}\nfunction eos(stream, options, callback) {\n var _options$readable, _options$writable\n if (arguments.length === 2) {\n callback = options\n options = kEmptyObject\n } else if (options == null) {\n options = kEmptyObject\n } else {\n validateObject(options, 'options')\n }\n validateFunction(callback, 'callback')\n validateAbortSignal(options.signal, 'options.signal')\n callback = once(callback)\n if (isReadableStream(stream) || isWritableStream(stream)) {\n return eosWeb(stream, options, callback)\n }\n if (!isNodeStream(stream)) {\n throw new ERR_INVALID_ARG_TYPE('stream', ['ReadableStream', 'WritableStream', 'Stream'], stream)\n }\n const readable =\n (_options$readable = options.readable) !== null && _options$readable !== undefined\n ? _options$readable\n : isReadableNodeStream(stream)\n const writable =\n (_options$writable = options.writable) !== null && _options$writable !== undefined\n ? _options$writable\n : isWritableNodeStream(stream)\n const wState = stream._writableState\n const rState = stream._readableState\n const onlegacyfinish = () => {\n if (!stream.writable) {\n onfinish()\n }\n }\n\n // TODO (ronag): Improve soft detection to include core modules and\n // common ecosystem modules that do properly emit 'close' but fail\n // this generic check.\n let willEmitClose =\n _willEmitClose(stream) && isReadableNodeStream(stream) === readable && isWritableNodeStream(stream) === writable\n let writableFinished = isWritableFinished(stream, false)\n const onfinish = () => {\n writableFinished = true\n // Stream should not be destroyed here. If it is that\n // means that user space is doing something differently and\n // we cannot trust willEmitClose.\n if (stream.destroyed) {\n willEmitClose = false\n }\n if (willEmitClose && (!stream.readable || readable)) {\n return\n }\n if (!readable || readableFinished) {\n callback.call(stream)\n }\n }\n let readableFinished = isReadableFinished(stream, false)\n const onend = () => {\n readableFinished = true\n // Stream should not be destroyed here. If it is that\n // means that user space is doing something differently and\n // we cannot trust willEmitClose.\n if (stream.destroyed) {\n willEmitClose = false\n }\n if (willEmitClose && (!stream.writable || writable)) {\n return\n }\n if (!writable || writableFinished) {\n callback.call(stream)\n }\n }\n const onerror = (err) => {\n callback.call(stream, err)\n }\n let closed = isClosed(stream)\n const onclose = () => {\n closed = true\n const errored = isWritableErrored(stream) || isReadableErrored(stream)\n if (errored && typeof errored !== 'boolean') {\n return callback.call(stream, errored)\n }\n if (readable && !readableFinished && isReadableNodeStream(stream, true)) {\n if (!isReadableFinished(stream, false)) return callback.call(stream, new ERR_STREAM_PREMATURE_CLOSE())\n }\n if (writable && !writableFinished) {\n if (!isWritableFinished(stream, false)) return callback.call(stream, new ERR_STREAM_PREMATURE_CLOSE())\n }\n callback.call(stream)\n }\n const onclosed = () => {\n closed = true\n const errored = isWritableErrored(stream) || isReadableErrored(stream)\n if (errored && typeof errored !== 'boolean') {\n return callback.call(stream, errored)\n }\n callback.call(stream)\n }\n const onrequest = () => {\n stream.req.on('finish', onfinish)\n }\n if (isRequest(stream)) {\n stream.on('complete', onfinish)\n if (!willEmitClose) {\n stream.on('abort', onclose)\n }\n if (stream.req) {\n onrequest()\n } else {\n stream.on('request', onrequest)\n }\n } else if (writable && !wState) {\n // legacy streams\n stream.on('end', onlegacyfinish)\n stream.on('close', onlegacyfinish)\n }\n\n // Not all streams will emit 'close' after 'aborted'.\n if (!willEmitClose && typeof stream.aborted === 'boolean') {\n stream.on('aborted', onclose)\n }\n stream.on('end', onend)\n stream.on('finish', onfinish)\n if (options.error !== false) {\n stream.on('error', onerror)\n }\n stream.on('close', onclose)\n if (closed) {\n process.nextTick(onclose)\n } else if (\n (wState !== null && wState !== undefined && wState.errorEmitted) ||\n (rState !== null && rState !== undefined && rState.errorEmitted)\n ) {\n if (!willEmitClose) {\n process.nextTick(onclosed)\n }\n } else if (\n !readable &&\n (!willEmitClose || isReadable(stream)) &&\n (writableFinished || isWritable(stream) === false)\n ) {\n process.nextTick(onclosed)\n } else if (\n !writable &&\n (!willEmitClose || isWritable(stream)) &&\n (readableFinished || isReadable(stream) === false)\n ) {\n process.nextTick(onclosed)\n } else if (rState && stream.req && stream.aborted) {\n process.nextTick(onclosed)\n }\n const cleanup = () => {\n callback = nop\n stream.removeListener('aborted', onclose)\n stream.removeListener('complete', onfinish)\n stream.removeListener('abort', onclose)\n stream.removeListener('request', onrequest)\n if (stream.req) stream.req.removeListener('finish', onfinish)\n stream.removeListener('end', onlegacyfinish)\n stream.removeListener('close', onlegacyfinish)\n stream.removeListener('finish', onfinish)\n stream.removeListener('end', onend)\n stream.removeListener('error', onerror)\n stream.removeListener('close', onclose)\n }\n if (options.signal && !closed) {\n const abort = () => {\n // Keep it because cleanup removes it.\n const endCallback = callback\n cleanup()\n endCallback.call(\n stream,\n new AbortError(undefined, {\n cause: options.signal.reason\n })\n )\n }\n if (options.signal.aborted) {\n process.nextTick(abort)\n } else {\n addAbortListener = addAbortListener || require('../../ours/util').addAbortListener\n const disposable = addAbortListener(options.signal, abort)\n const originalCallback = callback\n callback = once((...args) => {\n disposable[SymbolDispose]()\n originalCallback.apply(stream, args)\n })\n }\n }\n return cleanup\n}\nfunction eosWeb(stream, options, callback) {\n let isAborted = false\n let abort = nop\n if (options.signal) {\n abort = () => {\n isAborted = true\n callback.call(\n stream,\n new AbortError(undefined, {\n cause: options.signal.reason\n })\n )\n }\n if (options.signal.aborted) {\n process.nextTick(abort)\n } else {\n addAbortListener = addAbortListener || require('../../ours/util').addAbortListener\n const disposable = addAbortListener(options.signal, abort)\n const originalCallback = callback\n callback = once((...args) => {\n disposable[SymbolDispose]()\n originalCallback.apply(stream, args)\n })\n }\n }\n const resolverFn = (...args) => {\n if (!isAborted) {\n process.nextTick(() => callback.apply(stream, args))\n }\n }\n PromisePrototypeThen(stream[kIsClosedPromise].promise, resolverFn, resolverFn)\n return nop\n}\nfunction finished(stream, opts) {\n var _opts\n let autoCleanup = false\n if (opts === null) {\n opts = kEmptyObject\n }\n if ((_opts = opts) !== null && _opts !== undefined && _opts.cleanup) {\n validateBoolean(opts.cleanup, 'cleanup')\n autoCleanup = opts.cleanup\n }\n return new Promise((resolve, reject) => {\n const cleanup = eos(stream, opts, (err) => {\n if (autoCleanup) {\n cleanup()\n }\n if (err) {\n reject(err)\n } else {\n resolve()\n }\n })\n })\n}\nmodule.exports = eos\nmodule.exports.finished = finished\n","'use strict'\n\n/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\nconst {\n aggregateTwoErrors,\n codes: { ERR_MULTIPLE_CALLBACK },\n AbortError\n} = require('../../ours/errors')\nconst { Symbol } = require('../../ours/primordials')\nconst { kIsDestroyed, isDestroyed, isFinished, isServerRequest } = require('./utils')\nconst kDestroy = Symbol('kDestroy')\nconst kConstruct = Symbol('kConstruct')\nfunction checkError(err, w, r) {\n if (err) {\n // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364\n err.stack // eslint-disable-line no-unused-expressions\n\n if (w && !w.errored) {\n w.errored = err\n }\n if (r && !r.errored) {\n r.errored = err\n }\n }\n}\n\n// Backwards compat. cb() is undocumented and unused in core but\n// unfortunately might be used by modules.\nfunction destroy(err, cb) {\n const r = this._readableState\n const w = this._writableState\n // With duplex streams we use the writable side for state.\n const s = w || r\n if ((w !== null && w !== undefined && w.destroyed) || (r !== null && r !== undefined && r.destroyed)) {\n if (typeof cb === 'function') {\n cb()\n }\n return this\n }\n\n // We set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n checkError(err, w, r)\n if (w) {\n w.destroyed = true\n }\n if (r) {\n r.destroyed = true\n }\n\n // If still constructing then defer calling _destroy.\n if (!s.constructed) {\n this.once(kDestroy, function (er) {\n _destroy(this, aggregateTwoErrors(er, err), cb)\n })\n } else {\n _destroy(this, err, cb)\n }\n return this\n}\nfunction _destroy(self, err, cb) {\n let called = false\n function onDestroy(err) {\n if (called) {\n return\n }\n called = true\n const r = self._readableState\n const w = self._writableState\n checkError(err, w, r)\n if (w) {\n w.closed = true\n }\n if (r) {\n r.closed = true\n }\n if (typeof cb === 'function') {\n cb(err)\n }\n if (err) {\n process.nextTick(emitErrorCloseNT, self, err)\n } else {\n process.nextTick(emitCloseNT, self)\n }\n }\n try {\n self._destroy(err || null, onDestroy)\n } catch (err) {\n onDestroy(err)\n }\n}\nfunction emitErrorCloseNT(self, err) {\n emitErrorNT(self, err)\n emitCloseNT(self)\n}\nfunction emitCloseNT(self) {\n const r = self._readableState\n const w = self._writableState\n if (w) {\n w.closeEmitted = true\n }\n if (r) {\n r.closeEmitted = true\n }\n if ((w !== null && w !== undefined && w.emitClose) || (r !== null && r !== undefined && r.emitClose)) {\n self.emit('close')\n }\n}\nfunction emitErrorNT(self, err) {\n const r = self._readableState\n const w = self._writableState\n if ((w !== null && w !== undefined && w.errorEmitted) || (r !== null && r !== undefined && r.errorEmitted)) {\n return\n }\n if (w) {\n w.errorEmitted = true\n }\n if (r) {\n r.errorEmitted = true\n }\n self.emit('error', err)\n}\nfunction undestroy() {\n const r = this._readableState\n const w = this._writableState\n if (r) {\n r.constructed = true\n r.closed = false\n r.closeEmitted = false\n r.destroyed = false\n r.errored = null\n r.errorEmitted = false\n r.reading = false\n r.ended = r.readable === false\n r.endEmitted = r.readable === false\n }\n if (w) {\n w.constructed = true\n w.destroyed = false\n w.closed = false\n w.closeEmitted = false\n w.errored = null\n w.errorEmitted = false\n w.finalCalled = false\n w.prefinished = false\n w.ended = w.writable === false\n w.ending = w.writable === false\n w.finished = w.writable === false\n }\n}\nfunction errorOrDestroy(stream, err, sync) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n const r = stream._readableState\n const w = stream._writableState\n if ((w !== null && w !== undefined && w.destroyed) || (r !== null && r !== undefined && r.destroyed)) {\n return this\n }\n if ((r !== null && r !== undefined && r.autoDestroy) || (w !== null && w !== undefined && w.autoDestroy))\n stream.destroy(err)\n else if (err) {\n // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364\n err.stack // eslint-disable-line no-unused-expressions\n\n if (w && !w.errored) {\n w.errored = err\n }\n if (r && !r.errored) {\n r.errored = err\n }\n if (sync) {\n process.nextTick(emitErrorNT, stream, err)\n } else {\n emitErrorNT(stream, err)\n }\n }\n}\nfunction construct(stream, cb) {\n if (typeof stream._construct !== 'function') {\n return\n }\n const r = stream._readableState\n const w = stream._writableState\n if (r) {\n r.constructed = false\n }\n if (w) {\n w.constructed = false\n }\n stream.once(kConstruct, cb)\n if (stream.listenerCount(kConstruct) > 1) {\n // Duplex\n return\n }\n process.nextTick(constructNT, stream)\n}\nfunction constructNT(stream) {\n let called = false\n function onConstruct(err) {\n if (called) {\n errorOrDestroy(stream, err !== null && err !== undefined ? err : new ERR_MULTIPLE_CALLBACK())\n return\n }\n called = true\n const r = stream._readableState\n const w = stream._writableState\n const s = w || r\n if (r) {\n r.constructed = true\n }\n if (w) {\n w.constructed = true\n }\n if (s.destroyed) {\n stream.emit(kDestroy, err)\n } else if (err) {\n errorOrDestroy(stream, err, true)\n } else {\n process.nextTick(emitConstructNT, stream)\n }\n }\n try {\n stream._construct((err) => {\n process.nextTick(onConstruct, err)\n })\n } catch (err) {\n process.nextTick(onConstruct, err)\n }\n}\nfunction emitConstructNT(stream) {\n stream.emit(kConstruct)\n}\nfunction isRequest(stream) {\n return (stream === null || stream === undefined ? undefined : stream.setHeader) && typeof stream.abort === 'function'\n}\nfunction emitCloseLegacy(stream) {\n stream.emit('close')\n}\nfunction emitErrorCloseLegacy(stream, err) {\n stream.emit('error', err)\n process.nextTick(emitCloseLegacy, stream)\n}\n\n// Normalize destroy for legacy.\nfunction destroyer(stream, err) {\n if (!stream || isDestroyed(stream)) {\n return\n }\n if (!err && !isFinished(stream)) {\n err = new AbortError()\n }\n\n // TODO: Remove isRequest branches.\n if (isServerRequest(stream)) {\n stream.socket = null\n stream.destroy(err)\n } else if (isRequest(stream)) {\n stream.abort()\n } else if (isRequest(stream.req)) {\n stream.req.abort()\n } else if (typeof stream.destroy === 'function') {\n stream.destroy(err)\n } else if (typeof stream.close === 'function') {\n // TODO: Don't lose err?\n stream.close()\n } else if (err) {\n process.nextTick(emitErrorCloseLegacy, stream, err)\n } else {\n process.nextTick(emitCloseLegacy, stream)\n }\n if (!stream.destroyed) {\n stream[kIsDestroyed] = true\n }\n}\nmodule.exports = {\n construct,\n destroyer,\n destroy,\n undestroy,\n errorOrDestroy\n}\n","'use strict'\n\nconst { ArrayIsArray, ObjectSetPrototypeOf } = require('../../ours/primordials')\nconst { EventEmitter: EE } = require('events')\nfunction Stream(opts) {\n EE.call(this, opts)\n}\nObjectSetPrototypeOf(Stream.prototype, EE.prototype)\nObjectSetPrototypeOf(Stream, EE)\nStream.prototype.pipe = function (dest, options) {\n const source = this\n function ondata(chunk) {\n if (dest.writable && dest.write(chunk) === false && source.pause) {\n source.pause()\n }\n }\n source.on('data', ondata)\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume()\n }\n }\n dest.on('drain', ondrain)\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend)\n source.on('close', onclose)\n }\n let didOnEnd = false\n function onend() {\n if (didOnEnd) return\n didOnEnd = true\n dest.end()\n }\n function onclose() {\n if (didOnEnd) return\n didOnEnd = true\n if (typeof dest.destroy === 'function') dest.destroy()\n }\n\n // Don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup()\n if (EE.listenerCount(this, 'error') === 0) {\n this.emit('error', er)\n }\n }\n prependListener(source, 'error', onerror)\n prependListener(dest, 'error', onerror)\n\n // Remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata)\n dest.removeListener('drain', ondrain)\n source.removeListener('end', onend)\n source.removeListener('close', onclose)\n source.removeListener('error', onerror)\n dest.removeListener('error', onerror)\n source.removeListener('end', cleanup)\n source.removeListener('close', cleanup)\n dest.removeListener('close', cleanup)\n }\n source.on('end', cleanup)\n source.on('close', cleanup)\n dest.on('close', cleanup)\n dest.emit('pipe', source)\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest\n}\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn)\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn)\n else if (ArrayIsArray(emitter._events[event])) emitter._events[event].unshift(fn)\n else emitter._events[event] = [fn, emitter._events[event]]\n}\nmodule.exports = {\n Stream,\n prependListener\n}\n","'use strict'\n\nconst { SymbolDispose } = require('../../ours/primordials')\nconst { AbortError, codes } = require('../../ours/errors')\nconst { isNodeStream, isWebStream, kControllerErrorFunction } = require('./utils')\nconst eos = require('./end-of-stream')\nconst { ERR_INVALID_ARG_TYPE } = codes\nlet addAbortListener\n\n// This method is inlined here for readable-stream\n// It also does not allow for signal to not exist on the stream\n// https://github.com/nodejs/node/pull/36061#discussion_r533718029\nconst validateAbortSignal = (signal, name) => {\n if (typeof signal !== 'object' || !('aborted' in signal)) {\n throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal)\n }\n}\nmodule.exports.addAbortSignal = function addAbortSignal(signal, stream) {\n validateAbortSignal(signal, 'signal')\n if (!isNodeStream(stream) && !isWebStream(stream)) {\n throw new ERR_INVALID_ARG_TYPE('stream', ['ReadableStream', 'WritableStream', 'Stream'], stream)\n }\n return module.exports.addAbortSignalNoValidate(signal, stream)\n}\nmodule.exports.addAbortSignalNoValidate = function (signal, stream) {\n if (typeof signal !== 'object' || !('aborted' in signal)) {\n return stream\n }\n const onAbort = isNodeStream(stream)\n ? () => {\n stream.destroy(\n new AbortError(undefined, {\n cause: signal.reason\n })\n )\n }\n : () => {\n stream[kControllerErrorFunction](\n new AbortError(undefined, {\n cause: signal.reason\n })\n )\n }\n if (signal.aborted) {\n onAbort()\n } else {\n addAbortListener = addAbortListener || require('../../ours/util').addAbortListener\n const disposable = addAbortListener(signal, onAbort)\n eos(stream, disposable[SymbolDispose])\n }\n return stream\n}\n","'use strict'\n\nconst { StringPrototypeSlice, SymbolIterator, TypedArrayPrototypeSet, Uint8Array } = require('../../ours/primordials')\nconst { Buffer } = require('buffer')\nconst { inspect } = require('../../ours/util')\nmodule.exports = class BufferList {\n constructor() {\n this.head = null\n this.tail = null\n this.length = 0\n }\n push(v) {\n const entry = {\n data: v,\n next: null\n }\n if (this.length > 0) this.tail.next = entry\n else this.head = entry\n this.tail = entry\n ++this.length\n }\n unshift(v) {\n const entry = {\n data: v,\n next: this.head\n }\n if (this.length === 0) this.tail = entry\n this.head = entry\n ++this.length\n }\n shift() {\n if (this.length === 0) return\n const ret = this.head.data\n if (this.length === 1) this.head = this.tail = null\n else this.head = this.head.next\n --this.length\n return ret\n }\n clear() {\n this.head = this.tail = null\n this.length = 0\n }\n join(s) {\n if (this.length === 0) return ''\n let p = this.head\n let ret = '' + p.data\n while ((p = p.next) !== null) ret += s + p.data\n return ret\n }\n concat(n) {\n if (this.length === 0) return Buffer.alloc(0)\n const ret = Buffer.allocUnsafe(n >>> 0)\n let p = this.head\n let i = 0\n while (p) {\n TypedArrayPrototypeSet(ret, p.data, i)\n i += p.data.length\n p = p.next\n }\n return ret\n }\n\n // Consumes a specified amount of bytes or characters from the buffered data.\n consume(n, hasStrings) {\n const data = this.head.data\n if (n < data.length) {\n // `slice` is the same for buffers and strings.\n const slice = data.slice(0, n)\n this.head.data = data.slice(n)\n return slice\n }\n if (n === data.length) {\n // First chunk is a perfect match.\n return this.shift()\n }\n // Result spans more than one buffer.\n return hasStrings ? this._getString(n) : this._getBuffer(n)\n }\n first() {\n return this.head.data\n }\n *[SymbolIterator]() {\n for (let p = this.head; p; p = p.next) {\n yield p.data\n }\n }\n\n // Consumes a specified amount of characters from the buffered data.\n _getString(n) {\n let ret = ''\n let p = this.head\n let c = 0\n do {\n const str = p.data\n if (n > str.length) {\n ret += str\n n -= str.length\n } else {\n if (n === str.length) {\n ret += str\n ++c\n if (p.next) this.head = p.next\n else this.head = this.tail = null\n } else {\n ret += StringPrototypeSlice(str, 0, n)\n this.head = p\n p.data = StringPrototypeSlice(str, n)\n }\n break\n }\n ++c\n } while ((p = p.next) !== null)\n this.length -= c\n return ret\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n _getBuffer(n) {\n const ret = Buffer.allocUnsafe(n)\n const retLen = n\n let p = this.head\n let c = 0\n do {\n const buf = p.data\n if (n > buf.length) {\n TypedArrayPrototypeSet(ret, buf, retLen - n)\n n -= buf.length\n } else {\n if (n === buf.length) {\n TypedArrayPrototypeSet(ret, buf, retLen - n)\n ++c\n if (p.next) this.head = p.next\n else this.head = this.tail = null\n } else {\n TypedArrayPrototypeSet(ret, new Uint8Array(buf.buffer, buf.byteOffset, n), retLen - n)\n this.head = p\n p.data = buf.slice(n)\n }\n break\n }\n ++c\n } while ((p = p.next) !== null)\n this.length -= c\n return ret\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n [Symbol.for('nodejs.util.inspect.custom')](_, options) {\n return inspect(this, {\n ...options,\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n })\n }\n}\n","'use strict'\n\nconst { MathFloor, NumberIsInteger } = require('../../ours/primordials')\nconst { validateInteger } = require('../validators')\nconst { ERR_INVALID_ARG_VALUE } = require('../../ours/errors').codes\nlet defaultHighWaterMarkBytes = 16 * 1024\nlet defaultHighWaterMarkObjectMode = 16\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null\n}\nfunction getDefaultHighWaterMark(objectMode) {\n return objectMode ? defaultHighWaterMarkObjectMode : defaultHighWaterMarkBytes\n}\nfunction setDefaultHighWaterMark(objectMode, value) {\n validateInteger(value, 'value', 0)\n if (objectMode) {\n defaultHighWaterMarkObjectMode = value\n } else {\n defaultHighWaterMarkBytes = value\n }\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n const hwm = highWaterMarkFrom(options, isDuplex, duplexKey)\n if (hwm != null) {\n if (!NumberIsInteger(hwm) || hwm < 0) {\n const name = isDuplex ? `options.${duplexKey}` : 'options.highWaterMark'\n throw new ERR_INVALID_ARG_VALUE(name, hwm)\n }\n return MathFloor(hwm)\n }\n\n // Default value\n return getDefaultHighWaterMark(state.objectMode)\n}\nmodule.exports = {\n getHighWaterMark,\n getDefaultHighWaterMark,\n setDefaultHighWaterMark\n}\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","'use strict'\n\n/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\nconst { PromisePrototypeThen, SymbolAsyncIterator, SymbolIterator } = require('../../ours/primordials')\nconst { Buffer } = require('buffer')\nconst { ERR_INVALID_ARG_TYPE, ERR_STREAM_NULL_VALUES } = require('../../ours/errors').codes\nfunction from(Readable, iterable, opts) {\n let iterator\n if (typeof iterable === 'string' || iterable instanceof Buffer) {\n return new Readable({\n objectMode: true,\n ...opts,\n read() {\n this.push(iterable)\n this.push(null)\n }\n })\n }\n let isAsync\n if (iterable && iterable[SymbolAsyncIterator]) {\n isAsync = true\n iterator = iterable[SymbolAsyncIterator]()\n } else if (iterable && iterable[SymbolIterator]) {\n isAsync = false\n iterator = iterable[SymbolIterator]()\n } else {\n throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable)\n }\n const readable = new Readable({\n objectMode: true,\n highWaterMark: 1,\n // TODO(ronag): What options should be allowed?\n ...opts\n })\n\n // Flag to protect against _read\n // being called before last iteration completion.\n let reading = false\n readable._read = function () {\n if (!reading) {\n reading = true\n next()\n }\n }\n readable._destroy = function (error, cb) {\n PromisePrototypeThen(\n close(error),\n () => process.nextTick(cb, error),\n // nextTick is here in case cb throws\n (e) => process.nextTick(cb, e || error)\n )\n }\n async function close(error) {\n const hadError = error !== undefined && error !== null\n const hasThrow = typeof iterator.throw === 'function'\n if (hadError && hasThrow) {\n const { value, done } = await iterator.throw(error)\n await value\n if (done) {\n return\n }\n }\n if (typeof iterator.return === 'function') {\n const { value } = await iterator.return()\n await value\n }\n }\n async function next() {\n for (;;) {\n try {\n const { value, done } = isAsync ? await iterator.next() : iterator.next()\n if (done) {\n readable.push(null)\n } else {\n const res = value && typeof value.then === 'function' ? await value : value\n if (res === null) {\n reading = false\n throw new ERR_STREAM_NULL_VALUES()\n } else if (readable.push(res)) {\n continue\n } else {\n reading = false\n }\n }\n } catch (err) {\n readable.destroy(err)\n }\n break\n }\n }\n return readable\n}\nmodule.exports = from\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict'\n\n/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\nconst {\n ArrayPrototypeIndexOf,\n NumberIsInteger,\n NumberIsNaN,\n NumberParseInt,\n ObjectDefineProperties,\n ObjectKeys,\n ObjectSetPrototypeOf,\n Promise,\n SafeSet,\n SymbolAsyncDispose,\n SymbolAsyncIterator,\n Symbol\n} = require('../../ours/primordials')\nmodule.exports = Readable\nReadable.ReadableState = ReadableState\nconst { EventEmitter: EE } = require('events')\nconst { Stream, prependListener } = require('./legacy')\nconst { Buffer } = require('buffer')\nconst { addAbortSignal } = require('./add-abort-signal')\nconst eos = require('./end-of-stream')\nlet debug = require('../../ours/util').debuglog('stream', (fn) => {\n debug = fn\n})\nconst BufferList = require('./buffer_list')\nconst destroyImpl = require('./destroy')\nconst { getHighWaterMark, getDefaultHighWaterMark } = require('./state')\nconst {\n aggregateTwoErrors,\n codes: {\n ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED,\n ERR_OUT_OF_RANGE,\n ERR_STREAM_PUSH_AFTER_EOF,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT\n },\n AbortError\n} = require('../../ours/errors')\nconst { validateObject } = require('../validators')\nconst kPaused = Symbol('kPaused')\nconst { StringDecoder } = require('string_decoder/')\nconst from = require('./from')\nObjectSetPrototypeOf(Readable.prototype, Stream.prototype)\nObjectSetPrototypeOf(Readable, Stream)\nconst nop = () => {}\nconst { errorOrDestroy } = destroyImpl\nconst kObjectMode = 1 << 0\nconst kEnded = 1 << 1\nconst kEndEmitted = 1 << 2\nconst kReading = 1 << 3\nconst kConstructed = 1 << 4\nconst kSync = 1 << 5\nconst kNeedReadable = 1 << 6\nconst kEmittedReadable = 1 << 7\nconst kReadableListening = 1 << 8\nconst kResumeScheduled = 1 << 9\nconst kErrorEmitted = 1 << 10\nconst kEmitClose = 1 << 11\nconst kAutoDestroy = 1 << 12\nconst kDestroyed = 1 << 13\nconst kClosed = 1 << 14\nconst kCloseEmitted = 1 << 15\nconst kMultiAwaitDrain = 1 << 16\nconst kReadingMore = 1 << 17\nconst kDataEmitted = 1 << 18\n\n// TODO(benjamingr) it is likely slower to do it this way than with free functions\nfunction makeBitMapDescriptor(bit) {\n return {\n enumerable: false,\n get() {\n return (this.state & bit) !== 0\n },\n set(value) {\n if (value) this.state |= bit\n else this.state &= ~bit\n }\n }\n}\nObjectDefineProperties(ReadableState.prototype, {\n objectMode: makeBitMapDescriptor(kObjectMode),\n ended: makeBitMapDescriptor(kEnded),\n endEmitted: makeBitMapDescriptor(kEndEmitted),\n reading: makeBitMapDescriptor(kReading),\n // Stream is still being constructed and cannot be\n // destroyed until construction finished or failed.\n // Async construction is opt in, therefore we start as\n // constructed.\n constructed: makeBitMapDescriptor(kConstructed),\n // A flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n sync: makeBitMapDescriptor(kSync),\n // Whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n needReadable: makeBitMapDescriptor(kNeedReadable),\n emittedReadable: makeBitMapDescriptor(kEmittedReadable),\n readableListening: makeBitMapDescriptor(kReadableListening),\n resumeScheduled: makeBitMapDescriptor(kResumeScheduled),\n // True if the error was already emitted and should not be thrown again.\n errorEmitted: makeBitMapDescriptor(kErrorEmitted),\n emitClose: makeBitMapDescriptor(kEmitClose),\n autoDestroy: makeBitMapDescriptor(kAutoDestroy),\n // Has it been destroyed.\n destroyed: makeBitMapDescriptor(kDestroyed),\n // Indicates whether the stream has finished destroying.\n closed: makeBitMapDescriptor(kClosed),\n // True if close has been emitted or would have been emitted\n // depending on emitClose.\n closeEmitted: makeBitMapDescriptor(kCloseEmitted),\n multiAwaitDrain: makeBitMapDescriptor(kMultiAwaitDrain),\n // If true, a maybeReadMore has been scheduled.\n readingMore: makeBitMapDescriptor(kReadingMore),\n dataEmitted: makeBitMapDescriptor(kDataEmitted)\n})\nfunction ReadableState(options, stream, isDuplex) {\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof require('./duplex')\n\n // Bit map field to store ReadableState more effciently with 1 bit per field\n // instead of a V8 slot per field.\n this.state = kEmitClose | kAutoDestroy | kConstructed | kSync\n // Object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away.\n if (options && options.objectMode) this.state |= kObjectMode\n if (isDuplex && options && options.readableObjectMode) this.state |= kObjectMode\n\n // The point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n this.highWaterMark = options\n ? getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex)\n : getDefaultHighWaterMark(false)\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift().\n this.buffer = new BufferList()\n this.length = 0\n this.pipes = []\n this.flowing = null\n this[kPaused] = null\n\n // Should close be emitted on destroy. Defaults to true.\n if (options && options.emitClose === false) this.state &= ~kEmitClose\n\n // Should .destroy() be called after 'end' (and potentially 'finish').\n if (options && options.autoDestroy === false) this.state &= ~kAutoDestroy\n\n // Indicates whether the stream has errored. When true no further\n // _read calls, 'data' or 'readable' events should occur. This is needed\n // since when autoDestroy is disabled we need a way to tell whether the\n // stream has failed.\n this.errored = null\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = (options && options.defaultEncoding) || 'utf8'\n\n // Ref the piped dest which we need a drain event on it\n // type: null | Writable | Set.\n this.awaitDrainWriters = null\n this.decoder = null\n this.encoding = null\n if (options && options.encoding) {\n this.decoder = new StringDecoder(options.encoding)\n this.encoding = options.encoding\n }\n}\nfunction Readable(options) {\n if (!(this instanceof Readable)) return new Readable(options)\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5.\n const isDuplex = this instanceof require('./duplex')\n this._readableState = new ReadableState(options, this, isDuplex)\n if (options) {\n if (typeof options.read === 'function') this._read = options.read\n if (typeof options.destroy === 'function') this._destroy = options.destroy\n if (typeof options.construct === 'function') this._construct = options.construct\n if (options.signal && !isDuplex) addAbortSignal(options.signal, this)\n }\n Stream.call(this, options)\n destroyImpl.construct(this, () => {\n if (this._readableState.needReadable) {\n maybeReadMore(this, this._readableState)\n }\n })\n}\nReadable.prototype.destroy = destroyImpl.destroy\nReadable.prototype._undestroy = destroyImpl.undestroy\nReadable.prototype._destroy = function (err, cb) {\n cb(err)\n}\nReadable.prototype[EE.captureRejectionSymbol] = function (err) {\n this.destroy(err)\n}\nReadable.prototype[SymbolAsyncDispose] = function () {\n let error\n if (!this.destroyed) {\n error = this.readableEnded ? null : new AbortError()\n this.destroy(error)\n }\n return new Promise((resolve, reject) => eos(this, (err) => (err && err !== error ? reject(err) : resolve(null))))\n}\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n return readableAddChunk(this, chunk, encoding, false)\n}\n\n// Unshift should *always* be something directly out of read().\nReadable.prototype.unshift = function (chunk, encoding) {\n return readableAddChunk(this, chunk, encoding, true)\n}\nfunction readableAddChunk(stream, chunk, encoding, addToFront) {\n debug('readableAddChunk', chunk)\n const state = stream._readableState\n let err\n if ((state.state & kObjectMode) === 0) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding\n if (state.encoding !== encoding) {\n if (addToFront && state.encoding) {\n // When unshifting, if state.encoding is set, we have to save\n // the string in the BufferList with the state encoding.\n chunk = Buffer.from(chunk, encoding).toString(state.encoding)\n } else {\n chunk = Buffer.from(chunk, encoding)\n encoding = ''\n }\n }\n } else if (chunk instanceof Buffer) {\n encoding = ''\n } else if (Stream._isUint8Array(chunk)) {\n chunk = Stream._uint8ArrayToBuffer(chunk)\n encoding = ''\n } else if (chunk != null) {\n err = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk)\n }\n }\n if (err) {\n errorOrDestroy(stream, err)\n } else if (chunk === null) {\n state.state &= ~kReading\n onEofChunk(stream, state)\n } else if ((state.state & kObjectMode) !== 0 || (chunk && chunk.length > 0)) {\n if (addToFront) {\n if ((state.state & kEndEmitted) !== 0) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT())\n else if (state.destroyed || state.errored) return false\n else addChunk(stream, state, chunk, true)\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF())\n } else if (state.destroyed || state.errored) {\n return false\n } else {\n state.state &= ~kReading\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk)\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false)\n else maybeReadMore(stream, state)\n } else {\n addChunk(stream, state, chunk, false)\n }\n }\n } else if (!addToFront) {\n state.state &= ~kReading\n maybeReadMore(stream, state)\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0)\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync && stream.listenerCount('data') > 0) {\n // Use the guard to avoid creating `Set()` repeatedly\n // when we have multiple pipes.\n if ((state.state & kMultiAwaitDrain) !== 0) {\n state.awaitDrainWriters.clear()\n } else {\n state.awaitDrainWriters = null\n }\n state.dataEmitted = true\n stream.emit('data', chunk)\n } else {\n // Update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length\n if (addToFront) state.buffer.unshift(chunk)\n else state.buffer.push(chunk)\n if ((state.state & kNeedReadable) !== 0) emitReadable(stream)\n }\n maybeReadMore(stream, state)\n}\nReadable.prototype.isPaused = function () {\n const state = this._readableState\n return state[kPaused] === true || state.flowing === false\n}\n\n// Backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n const decoder = new StringDecoder(enc)\n this._readableState.decoder = decoder\n // If setEncoding(null), decoder.encoding equals utf8.\n this._readableState.encoding = this._readableState.decoder.encoding\n const buffer = this._readableState.buffer\n // Iterate over current buffer to convert already stored Buffers:\n let content = ''\n for (const data of buffer) {\n content += decoder.write(data)\n }\n buffer.clear()\n if (content !== '') buffer.push(content)\n this._readableState.length = content.length\n return this\n}\n\n// Don't raise the hwm > 1GB.\nconst MAX_HWM = 0x40000000\nfunction computeNewHighWaterMark(n) {\n if (n > MAX_HWM) {\n throw new ERR_OUT_OF_RANGE('size', '<= 1GiB', n)\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts.\n n--\n n |= n >>> 1\n n |= n >>> 2\n n |= n >>> 4\n n |= n >>> 8\n n |= n >>> 16\n n++\n }\n return n\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || (state.length === 0 && state.ended)) return 0\n if ((state.state & kObjectMode) !== 0) return 1\n if (NumberIsNaN(n)) {\n // Only flow one buffer at a time.\n if (state.flowing && state.length) return state.buffer.first().length\n return state.length\n }\n if (n <= state.length) return n\n return state.ended ? state.length : 0\n}\n\n// You can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n)\n // Same as parseInt(undefined, 10), however V8 7.3 performance regressed\n // in this scenario, so we are doing it manually.\n if (n === undefined) {\n n = NaN\n } else if (!NumberIsInteger(n)) {\n n = NumberParseInt(n, 10)\n }\n const state = this._readableState\n const nOrig = n\n\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n)\n if (n !== 0) state.state &= ~kEmittedReadable\n\n // If we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (\n n === 0 &&\n state.needReadable &&\n ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)\n ) {\n debug('read: emitReadable', state.length, state.ended)\n if (state.length === 0 && state.ended) endReadable(this)\n else emitReadable(this)\n return null\n }\n n = howMuchToRead(n, state)\n\n // If we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this)\n return null\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n let doRead = (state.state & kNeedReadable) !== 0\n debug('need readable', doRead)\n\n // If we currently have less than the highWaterMark, then also read some.\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true\n debug('length less than watermark', doRead)\n }\n\n // However, if we've ended, then there's no point, if we're already\n // reading, then it's unnecessary, if we're constructing we have to wait,\n // and if we're destroyed or errored, then it's not allowed,\n if (state.ended || state.reading || state.destroyed || state.errored || !state.constructed) {\n doRead = false\n debug('reading, ended or constructing', doRead)\n } else if (doRead) {\n debug('do read')\n state.state |= kReading | kSync\n // If the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.state |= kNeedReadable\n\n // Call internal read method\n try {\n this._read(state.highWaterMark)\n } catch (err) {\n errorOrDestroy(this, err)\n }\n state.state &= ~kSync\n\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state)\n }\n let ret\n if (n > 0) ret = fromList(n, state)\n else ret = null\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark\n n = 0\n } else {\n state.length -= n\n if (state.multiAwaitDrain) {\n state.awaitDrainWriters.clear()\n } else {\n state.awaitDrainWriters = null\n }\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this)\n }\n if (ret !== null && !state.errorEmitted && !state.closeEmitted) {\n state.dataEmitted = true\n this.emit('data', ret)\n }\n return ret\n}\nfunction onEofChunk(stream, state) {\n debug('onEofChunk')\n if (state.ended) return\n if (state.decoder) {\n const chunk = state.decoder.end()\n if (chunk && chunk.length) {\n state.buffer.push(chunk)\n state.length += state.objectMode ? 1 : chunk.length\n }\n }\n state.ended = true\n if (state.sync) {\n // If we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call.\n emitReadable(stream)\n } else {\n // Emit 'readable' now to make sure it gets picked up.\n state.needReadable = false\n state.emittedReadable = true\n // We have to emit readable now that we are EOF. Modules\n // in the ecosystem (e.g. dicer) rely on this event being sync.\n emitReadable_(stream)\n }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n const state = stream._readableState\n debug('emitReadable', state.needReadable, state.emittedReadable)\n state.needReadable = false\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing)\n state.emittedReadable = true\n process.nextTick(emitReadable_, stream)\n }\n}\nfunction emitReadable_(stream) {\n const state = stream._readableState\n debug('emitReadable_', state.destroyed, state.length, state.ended)\n if (!state.destroyed && !state.errored && (state.length || state.ended)) {\n stream.emit('readable')\n state.emittedReadable = false\n }\n\n // The stream needs another readable event if:\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark\n flow(stream)\n}\n\n// At this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore && state.constructed) {\n state.readingMore = true\n process.nextTick(maybeReadMore_, stream, state)\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (\n !state.reading &&\n !state.ended &&\n (state.length < state.highWaterMark || (state.flowing && state.length === 0))\n ) {\n const len = state.length\n debug('maybeReadMore read 0')\n stream.read(0)\n if (len === state.length)\n // Didn't get any data, stop spinning.\n break\n }\n state.readingMore = false\n}\n\n// Abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n throw new ERR_METHOD_NOT_IMPLEMENTED('_read()')\n}\nReadable.prototype.pipe = function (dest, pipeOpts) {\n const src = this\n const state = this._readableState\n if (state.pipes.length === 1) {\n if (!state.multiAwaitDrain) {\n state.multiAwaitDrain = true\n state.awaitDrainWriters = new SafeSet(state.awaitDrainWriters ? [state.awaitDrainWriters] : [])\n }\n }\n state.pipes.push(dest)\n debug('pipe count=%d opts=%j', state.pipes.length, pipeOpts)\n const doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr\n const endFn = doEnd ? onend : unpipe\n if (state.endEmitted) process.nextTick(endFn)\n else src.once('end', endFn)\n dest.on('unpipe', onunpipe)\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe')\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true\n cleanup()\n }\n }\n }\n function onend() {\n debug('onend')\n dest.end()\n }\n let ondrain\n let cleanedUp = false\n function cleanup() {\n debug('cleanup')\n // Cleanup event handlers once the pipe is broken.\n dest.removeListener('close', onclose)\n dest.removeListener('finish', onfinish)\n if (ondrain) {\n dest.removeListener('drain', ondrain)\n }\n dest.removeListener('error', onerror)\n dest.removeListener('unpipe', onunpipe)\n src.removeListener('end', onend)\n src.removeListener('end', unpipe)\n src.removeListener('data', ondata)\n cleanedUp = true\n\n // If the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (ondrain && state.awaitDrainWriters && (!dest._writableState || dest._writableState.needDrain)) ondrain()\n }\n function pause() {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if (!cleanedUp) {\n if (state.pipes.length === 1 && state.pipes[0] === dest) {\n debug('false write response, pause', 0)\n state.awaitDrainWriters = dest\n state.multiAwaitDrain = false\n } else if (state.pipes.length > 1 && state.pipes.includes(dest)) {\n debug('false write response, pause', state.awaitDrainWriters.size)\n state.awaitDrainWriters.add(dest)\n }\n src.pause()\n }\n if (!ondrain) {\n // When the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n ondrain = pipeOnDrain(src, dest)\n dest.on('drain', ondrain)\n }\n }\n src.on('data', ondata)\n function ondata(chunk) {\n debug('ondata')\n const ret = dest.write(chunk)\n debug('dest.write', ret)\n if (ret === false) {\n pause()\n }\n }\n\n // If the dest has an error, then stop piping into it.\n // However, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er)\n unpipe()\n dest.removeListener('error', onerror)\n if (dest.listenerCount('error') === 0) {\n const s = dest._writableState || dest._readableState\n if (s && !s.errorEmitted) {\n // User incorrectly emitted 'error' directly on the stream.\n errorOrDestroy(dest, er)\n } else {\n dest.emit('error', er)\n }\n }\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror)\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish)\n unpipe()\n }\n dest.once('close', onclose)\n function onfinish() {\n debug('onfinish')\n dest.removeListener('close', onclose)\n unpipe()\n }\n dest.once('finish', onfinish)\n function unpipe() {\n debug('unpipe')\n src.unpipe(dest)\n }\n\n // Tell the dest that it's being piped to.\n dest.emit('pipe', src)\n\n // Start the flow if it hasn't been started already.\n\n if (dest.writableNeedDrain === true) {\n pause()\n } else if (!state.flowing) {\n debug('pipe resume')\n src.resume()\n }\n return dest\n}\nfunction pipeOnDrain(src, dest) {\n return function pipeOnDrainFunctionResult() {\n const state = src._readableState\n\n // `ondrain` will call directly,\n // `this` maybe not a reference to dest,\n // so we use the real dest here.\n if (state.awaitDrainWriters === dest) {\n debug('pipeOnDrain', 1)\n state.awaitDrainWriters = null\n } else if (state.multiAwaitDrain) {\n debug('pipeOnDrain', state.awaitDrainWriters.size)\n state.awaitDrainWriters.delete(dest)\n }\n if ((!state.awaitDrainWriters || state.awaitDrainWriters.size === 0) && src.listenerCount('data')) {\n src.resume()\n }\n }\n}\nReadable.prototype.unpipe = function (dest) {\n const state = this._readableState\n const unpipeInfo = {\n hasUnpiped: false\n }\n\n // If we're not piping anywhere, then do nothing.\n if (state.pipes.length === 0) return this\n if (!dest) {\n // remove all.\n const dests = state.pipes\n state.pipes = []\n this.pause()\n for (let i = 0; i < dests.length; i++)\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n })\n return this\n }\n\n // Try to find the right one.\n const index = ArrayPrototypeIndexOf(state.pipes, dest)\n if (index === -1) return this\n state.pipes.splice(index, 1)\n if (state.pipes.length === 0) this.pause()\n dest.emit('unpipe', this, unpipeInfo)\n return this\n}\n\n// Set up data events if they are asked for\n// Ensure readable listeners eventually get something.\nReadable.prototype.on = function (ev, fn) {\n const res = Stream.prototype.on.call(this, ev, fn)\n const state = this._readableState\n if (ev === 'data') {\n // Update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0\n\n // Try start flowing on next tick if stream isn't explicitly paused.\n if (state.flowing !== false) this.resume()\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true\n state.flowing = false\n state.emittedReadable = false\n debug('on readable', state.length, state.reading)\n if (state.length) {\n emitReadable(this)\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this)\n }\n }\n }\n return res\n}\nReadable.prototype.addListener = Readable.prototype.on\nReadable.prototype.removeListener = function (ev, fn) {\n const res = Stream.prototype.removeListener.call(this, ev, fn)\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this)\n }\n return res\n}\nReadable.prototype.off = Readable.prototype.removeListener\nReadable.prototype.removeAllListeners = function (ev) {\n const res = Stream.prototype.removeAllListeners.apply(this, arguments)\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this)\n }\n return res\n}\nfunction updateReadableListening(self) {\n const state = self._readableState\n state.readableListening = self.listenerCount('readable') > 0\n if (state.resumeScheduled && state[kPaused] === false) {\n // Flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true\n\n // Crude way to check if we should resume.\n } else if (self.listenerCount('data') > 0) {\n self.resume()\n } else if (!state.readableListening) {\n state.flowing = null\n }\n}\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0')\n self.read(0)\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n const state = this._readableState\n if (!state.flowing) {\n debug('resume')\n // We flow only if there is no one listening\n // for readable, but we still have to call\n // resume().\n state.flowing = !state.readableListening\n resume(this, state)\n }\n state[kPaused] = false\n return this\n}\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true\n process.nextTick(resume_, stream, state)\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading)\n if (!state.reading) {\n stream.read(0)\n }\n state.resumeScheduled = false\n stream.emit('resume')\n flow(stream)\n if (state.flowing && !state.reading) stream.read(0)\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing)\n if (this._readableState.flowing !== false) {\n debug('pause')\n this._readableState.flowing = false\n this.emit('pause')\n }\n this._readableState[kPaused] = true\n return this\n}\nfunction flow(stream) {\n const state = stream._readableState\n debug('flow', state.flowing)\n while (state.flowing && stream.read() !== null);\n}\n\n// Wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n let paused = false\n\n // TODO (ronag): Should this.destroy(err) emit\n // 'error' on the wrapped stream? Would require\n // a static factory method, e.g. Readable.wrap(stream).\n\n stream.on('data', (chunk) => {\n if (!this.push(chunk) && stream.pause) {\n paused = true\n stream.pause()\n }\n })\n stream.on('end', () => {\n this.push(null)\n })\n stream.on('error', (err) => {\n errorOrDestroy(this, err)\n })\n stream.on('close', () => {\n this.destroy()\n })\n stream.on('destroy', () => {\n this.destroy()\n })\n this._read = () => {\n if (paused && stream.resume) {\n paused = false\n stream.resume()\n }\n }\n\n // Proxy all the other methods. Important when wrapping filters and duplexes.\n const streamKeys = ObjectKeys(stream)\n for (let j = 1; j < streamKeys.length; j++) {\n const i = streamKeys[j]\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = stream[i].bind(stream)\n }\n }\n return this\n}\nReadable.prototype[SymbolAsyncIterator] = function () {\n return streamToAsyncIterator(this)\n}\nReadable.prototype.iterator = function (options) {\n if (options !== undefined) {\n validateObject(options, 'options')\n }\n return streamToAsyncIterator(this, options)\n}\nfunction streamToAsyncIterator(stream, options) {\n if (typeof stream.read !== 'function') {\n stream = Readable.wrap(stream, {\n objectMode: true\n })\n }\n const iter = createAsyncIterator(stream, options)\n iter.stream = stream\n return iter\n}\nasync function* createAsyncIterator(stream, options) {\n let callback = nop\n function next(resolve) {\n if (this === stream) {\n callback()\n callback = nop\n } else {\n callback = resolve\n }\n }\n stream.on('readable', next)\n let error\n const cleanup = eos(\n stream,\n {\n writable: false\n },\n (err) => {\n error = err ? aggregateTwoErrors(error, err) : null\n callback()\n callback = nop\n }\n )\n try {\n while (true) {\n const chunk = stream.destroyed ? null : stream.read()\n if (chunk !== null) {\n yield chunk\n } else if (error) {\n throw error\n } else if (error === null) {\n return\n } else {\n await new Promise(next)\n }\n }\n } catch (err) {\n error = aggregateTwoErrors(error, err)\n throw error\n } finally {\n if (\n (error || (options === null || options === undefined ? undefined : options.destroyOnReturn) !== false) &&\n (error === undefined || stream._readableState.autoDestroy)\n ) {\n destroyImpl.destroyer(stream, null)\n } else {\n stream.off('readable', next)\n cleanup()\n }\n }\n}\n\n// Making it explicit these properties are not enumerable\n// because otherwise some prototype manipulation in\n// userland will fail.\nObjectDefineProperties(Readable.prototype, {\n readable: {\n __proto__: null,\n get() {\n const r = this._readableState\n // r.readable === false means that this is part of a Duplex stream\n // where the readable side was disabled upon construction.\n // Compat. The user might manually disable readable side through\n // deprecated setter.\n return !!r && r.readable !== false && !r.destroyed && !r.errorEmitted && !r.endEmitted\n },\n set(val) {\n // Backwards compat.\n if (this._readableState) {\n this._readableState.readable = !!val\n }\n }\n },\n readableDidRead: {\n __proto__: null,\n enumerable: false,\n get: function () {\n return this._readableState.dataEmitted\n }\n },\n readableAborted: {\n __proto__: null,\n enumerable: false,\n get: function () {\n return !!(\n this._readableState.readable !== false &&\n (this._readableState.destroyed || this._readableState.errored) &&\n !this._readableState.endEmitted\n )\n }\n },\n readableHighWaterMark: {\n __proto__: null,\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark\n }\n },\n readableBuffer: {\n __proto__: null,\n enumerable: false,\n get: function () {\n return this._readableState && this._readableState.buffer\n }\n },\n readableFlowing: {\n __proto__: null,\n enumerable: false,\n get: function () {\n return this._readableState.flowing\n },\n set: function (state) {\n if (this._readableState) {\n this._readableState.flowing = state\n }\n }\n },\n readableLength: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._readableState.length\n }\n },\n readableObjectMode: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._readableState ? this._readableState.objectMode : false\n }\n },\n readableEncoding: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._readableState ? this._readableState.encoding : null\n }\n },\n errored: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._readableState ? this._readableState.errored : null\n }\n },\n closed: {\n __proto__: null,\n get() {\n return this._readableState ? this._readableState.closed : false\n }\n },\n destroyed: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._readableState ? this._readableState.destroyed : false\n },\n set(value) {\n // We ignore the value if the stream\n // has not been initialized yet.\n if (!this._readableState) {\n return\n }\n\n // Backward compatibility, the user is explicitly\n // managing destroyed.\n this._readableState.destroyed = value\n }\n },\n readableEnded: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._readableState ? this._readableState.endEmitted : false\n }\n }\n})\nObjectDefineProperties(ReadableState.prototype, {\n // Legacy getter for `pipesCount`.\n pipesCount: {\n __proto__: null,\n get() {\n return this.pipes.length\n }\n },\n // Legacy property for `paused`.\n paused: {\n __proto__: null,\n get() {\n return this[kPaused] !== false\n },\n set(value) {\n this[kPaused] = !!value\n }\n }\n})\n\n// Exposed for testing purposes only.\nReadable._fromList = fromList\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered.\n if (state.length === 0) return null\n let ret\n if (state.objectMode) ret = state.buffer.shift()\n else if (!n || n >= state.length) {\n // Read it all, truncate the list.\n if (state.decoder) ret = state.buffer.join('')\n else if (state.buffer.length === 1) ret = state.buffer.first()\n else ret = state.buffer.concat(state.length)\n state.buffer.clear()\n } else {\n // read part of list.\n ret = state.buffer.consume(n, state.decoder)\n }\n return ret\n}\nfunction endReadable(stream) {\n const state = stream._readableState\n debug('endReadable', state.endEmitted)\n if (!state.endEmitted) {\n state.ended = true\n process.nextTick(endReadableNT, state, stream)\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length)\n\n // Check that we didn't get one last unshift.\n if (!state.errored && !state.closeEmitted && !state.endEmitted && state.length === 0) {\n state.endEmitted = true\n stream.emit('end')\n if (stream.writable && stream.allowHalfOpen === false) {\n process.nextTick(endWritableNT, stream)\n } else if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well.\n const wState = stream._writableState\n const autoDestroy =\n !wState ||\n (wState.autoDestroy &&\n // We don't expect the writable to ever 'finish'\n // if writable is explicitly set to false.\n (wState.finished || wState.writable === false))\n if (autoDestroy) {\n stream.destroy()\n }\n }\n }\n}\nfunction endWritableNT(stream) {\n const writable = stream.writable && !stream.writableEnded && !stream.destroyed\n if (writable) {\n stream.end()\n }\n}\nReadable.from = function (iterable, opts) {\n return from(Readable, iterable, opts)\n}\nlet webStreamsAdapters\n\n// Lazy to avoid circular references\nfunction lazyWebStreams() {\n if (webStreamsAdapters === undefined) webStreamsAdapters = {}\n return webStreamsAdapters\n}\nReadable.fromWeb = function (readableStream, options) {\n return lazyWebStreams().newStreamReadableFromReadableStream(readableStream, options)\n}\nReadable.toWeb = function (streamReadable, options) {\n return lazyWebStreams().newReadableStreamFromStreamReadable(streamReadable, options)\n}\nReadable.wrap = function (src, options) {\n var _ref, _src$readableObjectMo\n return new Readable({\n objectMode:\n (_ref =\n (_src$readableObjectMo = src.readableObjectMode) !== null && _src$readableObjectMo !== undefined\n ? _src$readableObjectMo\n : src.objectMode) !== null && _ref !== undefined\n ? _ref\n : true,\n ...options,\n destroy(err, callback) {\n destroyImpl.destroyer(src, err)\n callback(err)\n }\n }).wrap(src)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict'\n\n/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\nconst {\n ArrayPrototypeSlice,\n Error,\n FunctionPrototypeSymbolHasInstance,\n ObjectDefineProperty,\n ObjectDefineProperties,\n ObjectSetPrototypeOf,\n StringPrototypeToLowerCase,\n Symbol,\n SymbolHasInstance\n} = require('../../ours/primordials')\nmodule.exports = Writable\nWritable.WritableState = WritableState\nconst { EventEmitter: EE } = require('events')\nconst Stream = require('./legacy').Stream\nconst { Buffer } = require('buffer')\nconst destroyImpl = require('./destroy')\nconst { addAbortSignal } = require('./add-abort-signal')\nconst { getHighWaterMark, getDefaultHighWaterMark } = require('./state')\nconst {\n ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED,\n ERR_STREAM_ALREADY_FINISHED,\n ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING\n} = require('../../ours/errors').codes\nconst { errorOrDestroy } = destroyImpl\nObjectSetPrototypeOf(Writable.prototype, Stream.prototype)\nObjectSetPrototypeOf(Writable, Stream)\nfunction nop() {}\nconst kOnFinished = Symbol('kOnFinished')\nfunction WritableState(options, stream, isDuplex) {\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof require('./duplex')\n\n // Object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!(options && options.objectMode)\n if (isDuplex) this.objectMode = this.objectMode || !!(options && options.writableObjectMode)\n\n // The point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write().\n this.highWaterMark = options\n ? getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex)\n : getDefaultHighWaterMark(false)\n\n // if _final has been called.\n this.finalCalled = false\n\n // drain event flag.\n this.needDrain = false\n // At the start of calling end()\n this.ending = false\n // When end() has been called, and returned.\n this.ended = false\n // When 'finish' is emitted.\n this.finished = false\n\n // Has it been destroyed\n this.destroyed = false\n\n // Should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n const noDecode = !!(options && options.decodeStrings === false)\n this.decodeStrings = !noDecode\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = (options && options.defaultEncoding) || 'utf8'\n\n // Not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0\n\n // A flag to see when we're in the middle of a write.\n this.writing = false\n\n // When true all writes will be buffered until .uncork() call.\n this.corked = 0\n\n // A flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true\n\n // A flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false\n\n // The callback that's passed to _write(chunk, cb).\n this.onwrite = onwrite.bind(undefined, stream)\n\n // The callback that the user supplies to write(chunk, encoding, cb).\n this.writecb = null\n\n // The amount that is being written when _write is called.\n this.writelen = 0\n\n // Storage for data passed to the afterWrite() callback in case of\n // synchronous _write() completion.\n this.afterWriteTickInfo = null\n resetBuffer(this)\n\n // Number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted.\n this.pendingcb = 0\n\n // Stream is still being constructed and cannot be\n // destroyed until construction finished or failed.\n // Async construction is opt in, therefore we start as\n // constructed.\n this.constructed = true\n\n // Emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams.\n this.prefinished = false\n\n // True if the error was already emitted and should not be thrown again.\n this.errorEmitted = false\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = !options || options.emitClose !== false\n\n // Should .destroy() be called after 'finish' (and potentially 'end').\n this.autoDestroy = !options || options.autoDestroy !== false\n\n // Indicates whether the stream has errored. When true all write() calls\n // should return false. This is needed since when autoDestroy\n // is disabled we need a way to tell whether the stream has failed.\n this.errored = null\n\n // Indicates whether the stream has finished destroying.\n this.closed = false\n\n // True if close has been emitted or would have been emitted\n // depending on emitClose.\n this.closeEmitted = false\n this[kOnFinished] = []\n}\nfunction resetBuffer(state) {\n state.buffered = []\n state.bufferedIndex = 0\n state.allBuffers = true\n state.allNoop = true\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n return ArrayPrototypeSlice(this.buffered, this.bufferedIndex)\n}\nObjectDefineProperty(WritableState.prototype, 'bufferedRequestCount', {\n __proto__: null,\n get() {\n return this.buffered.length - this.bufferedIndex\n }\n})\nfunction Writable(options) {\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5.\n const isDuplex = this instanceof require('./duplex')\n if (!isDuplex && !FunctionPrototypeSymbolHasInstance(Writable, this)) return new Writable(options)\n this._writableState = new WritableState(options, this, isDuplex)\n if (options) {\n if (typeof options.write === 'function') this._write = options.write\n if (typeof options.writev === 'function') this._writev = options.writev\n if (typeof options.destroy === 'function') this._destroy = options.destroy\n if (typeof options.final === 'function') this._final = options.final\n if (typeof options.construct === 'function') this._construct = options.construct\n if (options.signal) addAbortSignal(options.signal, this)\n }\n Stream.call(this, options)\n destroyImpl.construct(this, () => {\n const state = this._writableState\n if (!state.writing) {\n clearBuffer(this, state)\n }\n finishMaybe(this, state)\n })\n}\nObjectDefineProperty(Writable, SymbolHasInstance, {\n __proto__: null,\n value: function (object) {\n if (FunctionPrototypeSymbolHasInstance(this, object)) return true\n if (this !== Writable) return false\n return object && object._writableState instanceof WritableState\n }\n})\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE())\n}\nfunction _write(stream, chunk, encoding, cb) {\n const state = stream._writableState\n if (typeof encoding === 'function') {\n cb = encoding\n encoding = state.defaultEncoding\n } else {\n if (!encoding) encoding = state.defaultEncoding\n else if (encoding !== 'buffer' && !Buffer.isEncoding(encoding)) throw new ERR_UNKNOWN_ENCODING(encoding)\n if (typeof cb !== 'function') cb = nop\n }\n if (chunk === null) {\n throw new ERR_STREAM_NULL_VALUES()\n } else if (!state.objectMode) {\n if (typeof chunk === 'string') {\n if (state.decodeStrings !== false) {\n chunk = Buffer.from(chunk, encoding)\n encoding = 'buffer'\n }\n } else if (chunk instanceof Buffer) {\n encoding = 'buffer'\n } else if (Stream._isUint8Array(chunk)) {\n chunk = Stream._uint8ArrayToBuffer(chunk)\n encoding = 'buffer'\n } else {\n throw new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk)\n }\n }\n let err\n if (state.ending) {\n err = new ERR_STREAM_WRITE_AFTER_END()\n } else if (state.destroyed) {\n err = new ERR_STREAM_DESTROYED('write')\n }\n if (err) {\n process.nextTick(cb, err)\n errorOrDestroy(stream, err, true)\n return err\n }\n state.pendingcb++\n return writeOrBuffer(stream, state, chunk, encoding, cb)\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n return _write(this, chunk, encoding, cb) === true\n}\nWritable.prototype.cork = function () {\n this._writableState.corked++\n}\nWritable.prototype.uncork = function () {\n const state = this._writableState\n if (state.corked) {\n state.corked--\n if (!state.writing) clearBuffer(this, state)\n }\n}\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = StringPrototypeToLowerCase(encoding)\n if (!Buffer.isEncoding(encoding)) throw new ERR_UNKNOWN_ENCODING(encoding)\n this._writableState.defaultEncoding = encoding\n return this\n}\n\n// If we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, chunk, encoding, callback) {\n const len = state.objectMode ? 1 : chunk.length\n state.length += len\n\n // stream._write resets state.length\n const ret = state.length < state.highWaterMark\n // We must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true\n if (state.writing || state.corked || state.errored || !state.constructed) {\n state.buffered.push({\n chunk,\n encoding,\n callback\n })\n if (state.allBuffers && encoding !== 'buffer') {\n state.allBuffers = false\n }\n if (state.allNoop && callback !== nop) {\n state.allNoop = false\n }\n } else {\n state.writelen = len\n state.writecb = callback\n state.writing = true\n state.sync = true\n stream._write(chunk, encoding, state.onwrite)\n state.sync = false\n }\n\n // Return false if errored or destroyed in order to break\n // any synchronous while(stream.write(data)) loops.\n return ret && !state.errored && !state.destroyed\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len\n state.writecb = cb\n state.writing = true\n state.sync = true\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'))\n else if (writev) stream._writev(chunk, state.onwrite)\n else stream._write(chunk, encoding, state.onwrite)\n state.sync = false\n}\nfunction onwriteError(stream, state, er, cb) {\n --state.pendingcb\n cb(er)\n // Ensure callbacks are invoked even when autoDestroy is\n // not enabled. Passing `er` here doesn't make sense since\n // it's related to one specific write, not to the buffered\n // writes.\n errorBuffer(state)\n // This can emit error, but error must always follow cb.\n errorOrDestroy(stream, er)\n}\nfunction onwrite(stream, er) {\n const state = stream._writableState\n const sync = state.sync\n const cb = state.writecb\n if (typeof cb !== 'function') {\n errorOrDestroy(stream, new ERR_MULTIPLE_CALLBACK())\n return\n }\n state.writing = false\n state.writecb = null\n state.length -= state.writelen\n state.writelen = 0\n if (er) {\n // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364\n er.stack // eslint-disable-line no-unused-expressions\n\n if (!state.errored) {\n state.errored = er\n }\n\n // In case of duplex streams we need to notify the readable side of the\n // error.\n if (stream._readableState && !stream._readableState.errored) {\n stream._readableState.errored = er\n }\n if (sync) {\n process.nextTick(onwriteError, stream, state, er, cb)\n } else {\n onwriteError(stream, state, er, cb)\n }\n } else {\n if (state.buffered.length > state.bufferedIndex) {\n clearBuffer(stream, state)\n }\n if (sync) {\n // It is a common case that the callback passed to .write() is always\n // the same. In that case, we do not schedule a new nextTick(), but\n // rather just increase a counter, to improve performance and avoid\n // memory allocations.\n if (state.afterWriteTickInfo !== null && state.afterWriteTickInfo.cb === cb) {\n state.afterWriteTickInfo.count++\n } else {\n state.afterWriteTickInfo = {\n count: 1,\n cb,\n stream,\n state\n }\n process.nextTick(afterWriteTick, state.afterWriteTickInfo)\n }\n } else {\n afterWrite(stream, state, 1, cb)\n }\n }\n}\nfunction afterWriteTick({ stream, state, count, cb }) {\n state.afterWriteTickInfo = null\n return afterWrite(stream, state, count, cb)\n}\nfunction afterWrite(stream, state, count, cb) {\n const needDrain = !state.ending && !stream.destroyed && state.length === 0 && state.needDrain\n if (needDrain) {\n state.needDrain = false\n stream.emit('drain')\n }\n while (count-- > 0) {\n state.pendingcb--\n cb()\n }\n if (state.destroyed) {\n errorBuffer(state)\n }\n finishMaybe(stream, state)\n}\n\n// If there's something in the buffer waiting, then invoke callbacks.\nfunction errorBuffer(state) {\n if (state.writing) {\n return\n }\n for (let n = state.bufferedIndex; n < state.buffered.length; ++n) {\n var _state$errored\n const { chunk, callback } = state.buffered[n]\n const len = state.objectMode ? 1 : chunk.length\n state.length -= len\n callback(\n (_state$errored = state.errored) !== null && _state$errored !== undefined\n ? _state$errored\n : new ERR_STREAM_DESTROYED('write')\n )\n }\n const onfinishCallbacks = state[kOnFinished].splice(0)\n for (let i = 0; i < onfinishCallbacks.length; i++) {\n var _state$errored2\n onfinishCallbacks[i](\n (_state$errored2 = state.errored) !== null && _state$errored2 !== undefined\n ? _state$errored2\n : new ERR_STREAM_DESTROYED('end')\n )\n }\n resetBuffer(state)\n}\n\n// If there's something in the buffer waiting, then process it.\nfunction clearBuffer(stream, state) {\n if (state.corked || state.bufferProcessing || state.destroyed || !state.constructed) {\n return\n }\n const { buffered, bufferedIndex, objectMode } = state\n const bufferedLength = buffered.length - bufferedIndex\n if (!bufferedLength) {\n return\n }\n let i = bufferedIndex\n state.bufferProcessing = true\n if (bufferedLength > 1 && stream._writev) {\n state.pendingcb -= bufferedLength - 1\n const callback = state.allNoop\n ? nop\n : (err) => {\n for (let n = i; n < buffered.length; ++n) {\n buffered[n].callback(err)\n }\n }\n // Make a copy of `buffered` if it's going to be used by `callback` above,\n // since `doWrite` will mutate the array.\n const chunks = state.allNoop && i === 0 ? buffered : ArrayPrototypeSlice(buffered, i)\n chunks.allBuffers = state.allBuffers\n doWrite(stream, state, true, state.length, chunks, '', callback)\n resetBuffer(state)\n } else {\n do {\n const { chunk, encoding, callback } = buffered[i]\n buffered[i++] = null\n const len = objectMode ? 1 : chunk.length\n doWrite(stream, state, false, len, chunk, encoding, callback)\n } while (i < buffered.length && !state.writing)\n if (i === buffered.length) {\n resetBuffer(state)\n } else if (i > 256) {\n buffered.splice(0, i)\n state.bufferedIndex = 0\n } else {\n state.bufferedIndex = i\n }\n }\n state.bufferProcessing = false\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n if (this._writev) {\n this._writev(\n [\n {\n chunk,\n encoding\n }\n ],\n cb\n )\n } else {\n throw new ERR_METHOD_NOT_IMPLEMENTED('_write()')\n }\n}\nWritable.prototype._writev = null\nWritable.prototype.end = function (chunk, encoding, cb) {\n const state = this._writableState\n if (typeof chunk === 'function') {\n cb = chunk\n chunk = null\n encoding = null\n } else if (typeof encoding === 'function') {\n cb = encoding\n encoding = null\n }\n let err\n if (chunk !== null && chunk !== undefined) {\n const ret = _write(this, chunk, encoding)\n if (ret instanceof Error) {\n err = ret\n }\n }\n\n // .end() fully uncorks.\n if (state.corked) {\n state.corked = 1\n this.uncork()\n }\n if (err) {\n // Do nothing...\n } else if (!state.errored && !state.ending) {\n // This is forgiving in terms of unnecessary calls to end() and can hide\n // logic errors. However, usually such errors are harmless and causing a\n // hard error can be disproportionately destructive. It is not always\n // trivial for the user to determine whether end() needs to be called\n // or not.\n\n state.ending = true\n finishMaybe(this, state, true)\n state.ended = true\n } else if (state.finished) {\n err = new ERR_STREAM_ALREADY_FINISHED('end')\n } else if (state.destroyed) {\n err = new ERR_STREAM_DESTROYED('end')\n }\n if (typeof cb === 'function') {\n if (err || state.finished) {\n process.nextTick(cb, err)\n } else {\n state[kOnFinished].push(cb)\n }\n }\n return this\n}\nfunction needFinish(state) {\n return (\n state.ending &&\n !state.destroyed &&\n state.constructed &&\n state.length === 0 &&\n !state.errored &&\n state.buffered.length === 0 &&\n !state.finished &&\n !state.writing &&\n !state.errorEmitted &&\n !state.closeEmitted\n )\n}\nfunction callFinal(stream, state) {\n let called = false\n function onFinish(err) {\n if (called) {\n errorOrDestroy(stream, err !== null && err !== undefined ? err : ERR_MULTIPLE_CALLBACK())\n return\n }\n called = true\n state.pendingcb--\n if (err) {\n const onfinishCallbacks = state[kOnFinished].splice(0)\n for (let i = 0; i < onfinishCallbacks.length; i++) {\n onfinishCallbacks[i](err)\n }\n errorOrDestroy(stream, err, state.sync)\n } else if (needFinish(state)) {\n state.prefinished = true\n stream.emit('prefinish')\n // Backwards compat. Don't check state.sync here.\n // Some streams assume 'finish' will be emitted\n // asynchronously relative to _final callback.\n state.pendingcb++\n process.nextTick(finish, stream, state)\n }\n }\n state.sync = true\n state.pendingcb++\n try {\n stream._final(onFinish)\n } catch (err) {\n onFinish(err)\n }\n state.sync = false\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.finalCalled = true\n callFinal(stream, state)\n } else {\n state.prefinished = true\n stream.emit('prefinish')\n }\n }\n}\nfunction finishMaybe(stream, state, sync) {\n if (needFinish(state)) {\n prefinish(stream, state)\n if (state.pendingcb === 0) {\n if (sync) {\n state.pendingcb++\n process.nextTick(\n (stream, state) => {\n if (needFinish(state)) {\n finish(stream, state)\n } else {\n state.pendingcb--\n }\n },\n stream,\n state\n )\n } else if (needFinish(state)) {\n state.pendingcb++\n finish(stream, state)\n }\n }\n }\n}\nfunction finish(stream, state) {\n state.pendingcb--\n state.finished = true\n const onfinishCallbacks = state[kOnFinished].splice(0)\n for (let i = 0; i < onfinishCallbacks.length; i++) {\n onfinishCallbacks[i]()\n }\n stream.emit('finish')\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well.\n const rState = stream._readableState\n const autoDestroy =\n !rState ||\n (rState.autoDestroy &&\n // We don't expect the readable to ever 'end'\n // if readable is explicitly set to false.\n (rState.endEmitted || rState.readable === false))\n if (autoDestroy) {\n stream.destroy()\n }\n }\n}\nObjectDefineProperties(Writable.prototype, {\n closed: {\n __proto__: null,\n get() {\n return this._writableState ? this._writableState.closed : false\n }\n },\n destroyed: {\n __proto__: null,\n get() {\n return this._writableState ? this._writableState.destroyed : false\n },\n set(value) {\n // Backward compatibility, the user is explicitly managing destroyed.\n if (this._writableState) {\n this._writableState.destroyed = value\n }\n }\n },\n writable: {\n __proto__: null,\n get() {\n const w = this._writableState\n // w.writable === false means that this is part of a Duplex stream\n // where the writable side was disabled upon construction.\n // Compat. The user might manually disable writable side through\n // deprecated setter.\n return !!w && w.writable !== false && !w.destroyed && !w.errored && !w.ending && !w.ended\n },\n set(val) {\n // Backwards compatible.\n if (this._writableState) {\n this._writableState.writable = !!val\n }\n }\n },\n writableFinished: {\n __proto__: null,\n get() {\n return this._writableState ? this._writableState.finished : false\n }\n },\n writableObjectMode: {\n __proto__: null,\n get() {\n return this._writableState ? this._writableState.objectMode : false\n }\n },\n writableBuffer: {\n __proto__: null,\n get() {\n return this._writableState && this._writableState.getBuffer()\n }\n },\n writableEnded: {\n __proto__: null,\n get() {\n return this._writableState ? this._writableState.ending : false\n }\n },\n writableNeedDrain: {\n __proto__: null,\n get() {\n const wState = this._writableState\n if (!wState) return false\n return !wState.destroyed && !wState.ending && wState.needDrain\n }\n },\n writableHighWaterMark: {\n __proto__: null,\n get() {\n return this._writableState && this._writableState.highWaterMark\n }\n },\n writableCorked: {\n __proto__: null,\n get() {\n return this._writableState ? this._writableState.corked : 0\n }\n },\n writableLength: {\n __proto__: null,\n get() {\n return this._writableState && this._writableState.length\n }\n },\n errored: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._writableState ? this._writableState.errored : null\n }\n },\n writableAborted: {\n __proto__: null,\n enumerable: false,\n get: function () {\n return !!(\n this._writableState.writable !== false &&\n (this._writableState.destroyed || this._writableState.errored) &&\n !this._writableState.finished\n )\n }\n }\n})\nconst destroy = destroyImpl.destroy\nWritable.prototype.destroy = function (err, cb) {\n const state = this._writableState\n\n // Invoke pending callbacks.\n if (!state.destroyed && (state.bufferedIndex < state.buffered.length || state[kOnFinished].length)) {\n process.nextTick(errorBuffer, state)\n }\n destroy.call(this, err, cb)\n return this\n}\nWritable.prototype._undestroy = destroyImpl.undestroy\nWritable.prototype._destroy = function (err, cb) {\n cb(err)\n}\nWritable.prototype[EE.captureRejectionSymbol] = function (err) {\n this.destroy(err)\n}\nlet webStreamsAdapters\n\n// Lazy to avoid circular references\nfunction lazyWebStreams() {\n if (webStreamsAdapters === undefined) webStreamsAdapters = {}\n return webStreamsAdapters\n}\nWritable.fromWeb = function (writableStream, options) {\n return lazyWebStreams().newStreamWritableFromWritableStream(writableStream, options)\n}\nWritable.toWeb = function (streamWritable) {\n return lazyWebStreams().newWritableStreamFromStreamWritable(streamWritable)\n}\n","/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\n;('use strict')\nconst bufferModule = require('buffer')\nconst {\n isReadable,\n isWritable,\n isIterable,\n isNodeStream,\n isReadableNodeStream,\n isWritableNodeStream,\n isDuplexNodeStream,\n isReadableStream,\n isWritableStream\n} = require('./utils')\nconst eos = require('./end-of-stream')\nconst {\n AbortError,\n codes: { ERR_INVALID_ARG_TYPE, ERR_INVALID_RETURN_VALUE }\n} = require('../../ours/errors')\nconst { destroyer } = require('./destroy')\nconst Duplex = require('./duplex')\nconst Readable = require('./readable')\nconst Writable = require('./writable')\nconst { createDeferredPromise } = require('../../ours/util')\nconst from = require('./from')\nconst Blob = globalThis.Blob || bufferModule.Blob\nconst isBlob =\n typeof Blob !== 'undefined'\n ? function isBlob(b) {\n return b instanceof Blob\n }\n : function isBlob(b) {\n return false\n }\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nconst { FunctionPrototypeCall } = require('../../ours/primordials')\n\n// This is needed for pre node 17.\nclass Duplexify extends Duplex {\n constructor(options) {\n super(options)\n\n // https://github.com/nodejs/node/pull/34385\n\n if ((options === null || options === undefined ? undefined : options.readable) === false) {\n this._readableState.readable = false\n this._readableState.ended = true\n this._readableState.endEmitted = true\n }\n if ((options === null || options === undefined ? undefined : options.writable) === false) {\n this._writableState.writable = false\n this._writableState.ending = true\n this._writableState.ended = true\n this._writableState.finished = true\n }\n }\n}\nmodule.exports = function duplexify(body, name) {\n if (isDuplexNodeStream(body)) {\n return body\n }\n if (isReadableNodeStream(body)) {\n return _duplexify({\n readable: body\n })\n }\n if (isWritableNodeStream(body)) {\n return _duplexify({\n writable: body\n })\n }\n if (isNodeStream(body)) {\n return _duplexify({\n writable: false,\n readable: false\n })\n }\n if (isReadableStream(body)) {\n return _duplexify({\n readable: Readable.fromWeb(body)\n })\n }\n if (isWritableStream(body)) {\n return _duplexify({\n writable: Writable.fromWeb(body)\n })\n }\n if (typeof body === 'function') {\n const { value, write, final, destroy } = fromAsyncGen(body)\n if (isIterable(value)) {\n return from(Duplexify, value, {\n // TODO (ronag): highWaterMark?\n objectMode: true,\n write,\n final,\n destroy\n })\n }\n const then = value === null || value === undefined ? undefined : value.then\n if (typeof then === 'function') {\n let d\n const promise = FunctionPrototypeCall(\n then,\n value,\n (val) => {\n if (val != null) {\n throw new ERR_INVALID_RETURN_VALUE('nully', 'body', val)\n }\n },\n (err) => {\n destroyer(d, err)\n }\n )\n return (d = new Duplexify({\n // TODO (ronag): highWaterMark?\n objectMode: true,\n readable: false,\n write,\n final(cb) {\n final(async () => {\n try {\n await promise\n process.nextTick(cb, null)\n } catch (err) {\n process.nextTick(cb, err)\n }\n })\n },\n destroy\n }))\n }\n throw new ERR_INVALID_RETURN_VALUE('Iterable, AsyncIterable or AsyncFunction', name, value)\n }\n if (isBlob(body)) {\n return duplexify(body.arrayBuffer())\n }\n if (isIterable(body)) {\n return from(Duplexify, body, {\n // TODO (ronag): highWaterMark?\n objectMode: true,\n writable: false\n })\n }\n if (\n isReadableStream(body === null || body === undefined ? undefined : body.readable) &&\n isWritableStream(body === null || body === undefined ? undefined : body.writable)\n ) {\n return Duplexify.fromWeb(body)\n }\n if (\n typeof (body === null || body === undefined ? undefined : body.writable) === 'object' ||\n typeof (body === null || body === undefined ? undefined : body.readable) === 'object'\n ) {\n const readable =\n body !== null && body !== undefined && body.readable\n ? isReadableNodeStream(body === null || body === undefined ? undefined : body.readable)\n ? body === null || body === undefined\n ? undefined\n : body.readable\n : duplexify(body.readable)\n : undefined\n const writable =\n body !== null && body !== undefined && body.writable\n ? isWritableNodeStream(body === null || body === undefined ? undefined : body.writable)\n ? body === null || body === undefined\n ? undefined\n : body.writable\n : duplexify(body.writable)\n : undefined\n return _duplexify({\n readable,\n writable\n })\n }\n const then = body === null || body === undefined ? undefined : body.then\n if (typeof then === 'function') {\n let d\n FunctionPrototypeCall(\n then,\n body,\n (val) => {\n if (val != null) {\n d.push(val)\n }\n d.push(null)\n },\n (err) => {\n destroyer(d, err)\n }\n )\n return (d = new Duplexify({\n objectMode: true,\n writable: false,\n read() {}\n }))\n }\n throw new ERR_INVALID_ARG_TYPE(\n name,\n [\n 'Blob',\n 'ReadableStream',\n 'WritableStream',\n 'Stream',\n 'Iterable',\n 'AsyncIterable',\n 'Function',\n '{ readable, writable } pair',\n 'Promise'\n ],\n body\n )\n}\nfunction fromAsyncGen(fn) {\n let { promise, resolve } = createDeferredPromise()\n const ac = new AbortController()\n const signal = ac.signal\n const value = fn(\n (async function* () {\n while (true) {\n const _promise = promise\n promise = null\n const { chunk, done, cb } = await _promise\n process.nextTick(cb)\n if (done) return\n if (signal.aborted)\n throw new AbortError(undefined, {\n cause: signal.reason\n })\n ;({ promise, resolve } = createDeferredPromise())\n yield chunk\n }\n })(),\n {\n signal\n }\n )\n return {\n value,\n write(chunk, encoding, cb) {\n const _resolve = resolve\n resolve = null\n _resolve({\n chunk,\n done: false,\n cb\n })\n },\n final(cb) {\n const _resolve = resolve\n resolve = null\n _resolve({\n done: true,\n cb\n })\n },\n destroy(err, cb) {\n ac.abort()\n cb(err)\n }\n }\n}\nfunction _duplexify(pair) {\n const r = pair.readable && typeof pair.readable.read !== 'function' ? Readable.wrap(pair.readable) : pair.readable\n const w = pair.writable\n let readable = !!isReadable(r)\n let writable = !!isWritable(w)\n let ondrain\n let onfinish\n let onreadable\n let onclose\n let d\n function onfinished(err) {\n const cb = onclose\n onclose = null\n if (cb) {\n cb(err)\n } else if (err) {\n d.destroy(err)\n }\n }\n\n // TODO(ronag): Avoid double buffering.\n // Implement Writable/Readable/Duplex traits.\n // See, https://github.com/nodejs/node/pull/33515.\n d = new Duplexify({\n // TODO (ronag): highWaterMark?\n readableObjectMode: !!(r !== null && r !== undefined && r.readableObjectMode),\n writableObjectMode: !!(w !== null && w !== undefined && w.writableObjectMode),\n readable,\n writable\n })\n if (writable) {\n eos(w, (err) => {\n writable = false\n if (err) {\n destroyer(r, err)\n }\n onfinished(err)\n })\n d._write = function (chunk, encoding, callback) {\n if (w.write(chunk, encoding)) {\n callback()\n } else {\n ondrain = callback\n }\n }\n d._final = function (callback) {\n w.end()\n onfinish = callback\n }\n w.on('drain', function () {\n if (ondrain) {\n const cb = ondrain\n ondrain = null\n cb()\n }\n })\n w.on('finish', function () {\n if (onfinish) {\n const cb = onfinish\n onfinish = null\n cb()\n }\n })\n }\n if (readable) {\n eos(r, (err) => {\n readable = false\n if (err) {\n destroyer(r, err)\n }\n onfinished(err)\n })\n r.on('readable', function () {\n if (onreadable) {\n const cb = onreadable\n onreadable = null\n cb()\n }\n })\n r.on('end', function () {\n d.push(null)\n })\n d._read = function () {\n while (true) {\n const buf = r.read()\n if (buf === null) {\n onreadable = d._read\n return\n }\n if (!d.push(buf)) {\n return\n }\n }\n }\n }\n d._destroy = function (err, callback) {\n if (!err && onclose !== null) {\n err = new AbortError()\n }\n onreadable = null\n ondrain = null\n onfinish = null\n if (onclose === null) {\n callback(err)\n } else {\n onclose = callback\n destroyer(w, err)\n destroyer(r, err)\n }\n }\n return d\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototype inheritance, this class\n// prototypically inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict'\n\nconst {\n ObjectDefineProperties,\n ObjectGetOwnPropertyDescriptor,\n ObjectKeys,\n ObjectSetPrototypeOf\n} = require('../../ours/primordials')\nmodule.exports = Duplex\nconst Readable = require('./readable')\nconst Writable = require('./writable')\nObjectSetPrototypeOf(Duplex.prototype, Readable.prototype)\nObjectSetPrototypeOf(Duplex, Readable)\n{\n const keys = ObjectKeys(Writable.prototype)\n // Allow the keys array to be GC'ed.\n for (let i = 0; i < keys.length; i++) {\n const method = keys[i]\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options)\n Readable.call(this, options)\n Writable.call(this, options)\n if (options) {\n this.allowHalfOpen = options.allowHalfOpen !== false\n if (options.readable === false) {\n this._readableState.readable = false\n this._readableState.ended = true\n this._readableState.endEmitted = true\n }\n if (options.writable === false) {\n this._writableState.writable = false\n this._writableState.ending = true\n this._writableState.ended = true\n this._writableState.finished = true\n }\n } else {\n this.allowHalfOpen = true\n }\n}\nObjectDefineProperties(Duplex.prototype, {\n writable: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writable')\n },\n writableHighWaterMark: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableHighWaterMark')\n },\n writableObjectMode: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableObjectMode')\n },\n writableBuffer: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableBuffer')\n },\n writableLength: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableLength')\n },\n writableFinished: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableFinished')\n },\n writableCorked: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableCorked')\n },\n writableEnded: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableEnded')\n },\n writableNeedDrain: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableNeedDrain')\n },\n destroyed: {\n __proto__: null,\n get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false\n }\n return this._readableState.destroyed && this._writableState.destroyed\n },\n set(value) {\n // Backward compatibility, the user is explicitly\n // managing destroyed.\n if (this._readableState && this._writableState) {\n this._readableState.destroyed = value\n this._writableState.destroyed = value\n }\n }\n }\n})\nlet webStreamsAdapters\n\n// Lazy to avoid circular references\nfunction lazyWebStreams() {\n if (webStreamsAdapters === undefined) webStreamsAdapters = {}\n return webStreamsAdapters\n}\nDuplex.fromWeb = function (pair, options) {\n return lazyWebStreams().newStreamDuplexFromReadableWritablePair(pair, options)\n}\nDuplex.toWeb = function (duplex) {\n return lazyWebStreams().newReadableWritablePairFromDuplex(duplex)\n}\nlet duplexify\nDuplex.from = function (body) {\n if (!duplexify) {\n duplexify = require('./duplexify')\n }\n return duplexify(body, 'body')\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict'\n\nconst { ObjectSetPrototypeOf, Symbol } = require('../../ours/primordials')\nmodule.exports = Transform\nconst { ERR_METHOD_NOT_IMPLEMENTED } = require('../../ours/errors').codes\nconst Duplex = require('./duplex')\nconst { getHighWaterMark } = require('./state')\nObjectSetPrototypeOf(Transform.prototype, Duplex.prototype)\nObjectSetPrototypeOf(Transform, Duplex)\nconst kCallback = Symbol('kCallback')\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options)\n\n // TODO (ronag): This should preferably always be\n // applied but would be semver-major. Or even better;\n // make Transform a Readable with the Writable interface.\n const readableHighWaterMark = options ? getHighWaterMark(this, options, 'readableHighWaterMark', true) : null\n if (readableHighWaterMark === 0) {\n // A Duplex will buffer both on the writable and readable side while\n // a Transform just wants to buffer hwm number of elements. To avoid\n // buffering twice we disable buffering on the writable side.\n options = {\n ...options,\n highWaterMark: null,\n readableHighWaterMark,\n // TODO (ronag): 0 is not optimal since we have\n // a \"bug\" where we check needDrain before calling _write and not after.\n // Refs: https://github.com/nodejs/node/pull/32887\n // Refs: https://github.com/nodejs/node/pull/35941\n writableHighWaterMark: options.writableHighWaterMark || 0\n }\n }\n Duplex.call(this, options)\n\n // We have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false\n this[kCallback] = null\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform\n if (typeof options.flush === 'function') this._flush = options.flush\n }\n\n // When the writable side finishes, then flush out anything remaining.\n // Backwards compat. Some Transform streams incorrectly implement _final\n // instead of or in addition to _flush. By using 'prefinish' instead of\n // implementing _final we continue supporting this unfortunate use case.\n this.on('prefinish', prefinish)\n}\nfunction final(cb) {\n if (typeof this._flush === 'function' && !this.destroyed) {\n this._flush((er, data) => {\n if (er) {\n if (cb) {\n cb(er)\n } else {\n this.destroy(er)\n }\n return\n }\n if (data != null) {\n this.push(data)\n }\n this.push(null)\n if (cb) {\n cb()\n }\n })\n } else {\n this.push(null)\n if (cb) {\n cb()\n }\n }\n}\nfunction prefinish() {\n if (this._final !== final) {\n final.call(this)\n }\n}\nTransform.prototype._final = final\nTransform.prototype._transform = function (chunk, encoding, callback) {\n throw new ERR_METHOD_NOT_IMPLEMENTED('_transform()')\n}\nTransform.prototype._write = function (chunk, encoding, callback) {\n const rState = this._readableState\n const wState = this._writableState\n const length = rState.length\n this._transform(chunk, encoding, (err, val) => {\n if (err) {\n callback(err)\n return\n }\n if (val != null) {\n this.push(val)\n }\n if (\n wState.ended ||\n // Backwards compat.\n length === rState.length ||\n // Backwards compat.\n rState.length < rState.highWaterMark\n ) {\n callback()\n } else {\n this[kCallback] = callback\n }\n })\n}\nTransform.prototype._read = function () {\n if (this[kCallback]) {\n const callback = this[kCallback]\n this[kCallback] = null\n callback()\n }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict'\n\nconst { ObjectSetPrototypeOf } = require('../../ours/primordials')\nmodule.exports = PassThrough\nconst Transform = require('./transform')\nObjectSetPrototypeOf(PassThrough.prototype, Transform.prototype)\nObjectSetPrototypeOf(PassThrough, Transform)\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options)\n Transform.call(this, options)\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk)\n}\n","/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n;('use strict')\nconst { ArrayIsArray, Promise, SymbolAsyncIterator, SymbolDispose } = require('../../ours/primordials')\nconst eos = require('./end-of-stream')\nconst { once } = require('../../ours/util')\nconst destroyImpl = require('./destroy')\nconst Duplex = require('./duplex')\nconst {\n aggregateTwoErrors,\n codes: {\n ERR_INVALID_ARG_TYPE,\n ERR_INVALID_RETURN_VALUE,\n ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED,\n ERR_STREAM_PREMATURE_CLOSE\n },\n AbortError\n} = require('../../ours/errors')\nconst { validateFunction, validateAbortSignal } = require('../validators')\nconst {\n isIterable,\n isReadable,\n isReadableNodeStream,\n isNodeStream,\n isTransformStream,\n isWebStream,\n isReadableStream,\n isReadableFinished\n} = require('./utils')\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nlet PassThrough\nlet Readable\nlet addAbortListener\nfunction destroyer(stream, reading, writing) {\n let finished = false\n stream.on('close', () => {\n finished = true\n })\n const cleanup = eos(\n stream,\n {\n readable: reading,\n writable: writing\n },\n (err) => {\n finished = !err\n }\n )\n return {\n destroy: (err) => {\n if (finished) return\n finished = true\n destroyImpl.destroyer(stream, err || new ERR_STREAM_DESTROYED('pipe'))\n },\n cleanup\n }\n}\nfunction popCallback(streams) {\n // Streams should never be an empty array. It should always contain at least\n // a single stream. Therefore optimize for the average case instead of\n // checking for length === 0 as well.\n validateFunction(streams[streams.length - 1], 'streams[stream.length - 1]')\n return streams.pop()\n}\nfunction makeAsyncIterable(val) {\n if (isIterable(val)) {\n return val\n } else if (isReadableNodeStream(val)) {\n // Legacy streams are not Iterable.\n return fromReadable(val)\n }\n throw new ERR_INVALID_ARG_TYPE('val', ['Readable', 'Iterable', 'AsyncIterable'], val)\n}\nasync function* fromReadable(val) {\n if (!Readable) {\n Readable = require('./readable')\n }\n yield* Readable.prototype[SymbolAsyncIterator].call(val)\n}\nasync function pumpToNode(iterable, writable, finish, { end }) {\n let error\n let onresolve = null\n const resume = (err) => {\n if (err) {\n error = err\n }\n if (onresolve) {\n const callback = onresolve\n onresolve = null\n callback()\n }\n }\n const wait = () =>\n new Promise((resolve, reject) => {\n if (error) {\n reject(error)\n } else {\n onresolve = () => {\n if (error) {\n reject(error)\n } else {\n resolve()\n }\n }\n }\n })\n writable.on('drain', resume)\n const cleanup = eos(\n writable,\n {\n readable: false\n },\n resume\n )\n try {\n if (writable.writableNeedDrain) {\n await wait()\n }\n for await (const chunk of iterable) {\n if (!writable.write(chunk)) {\n await wait()\n }\n }\n if (end) {\n writable.end()\n await wait()\n }\n finish()\n } catch (err) {\n finish(error !== err ? aggregateTwoErrors(error, err) : err)\n } finally {\n cleanup()\n writable.off('drain', resume)\n }\n}\nasync function pumpToWeb(readable, writable, finish, { end }) {\n if (isTransformStream(writable)) {\n writable = writable.writable\n }\n // https://streams.spec.whatwg.org/#example-manual-write-with-backpressure\n const writer = writable.getWriter()\n try {\n for await (const chunk of readable) {\n await writer.ready\n writer.write(chunk).catch(() => {})\n }\n await writer.ready\n if (end) {\n await writer.close()\n }\n finish()\n } catch (err) {\n try {\n await writer.abort(err)\n finish(err)\n } catch (err) {\n finish(err)\n }\n }\n}\nfunction pipeline(...streams) {\n return pipelineImpl(streams, once(popCallback(streams)))\n}\nfunction pipelineImpl(streams, callback, opts) {\n if (streams.length === 1 && ArrayIsArray(streams[0])) {\n streams = streams[0]\n }\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams')\n }\n const ac = new AbortController()\n const signal = ac.signal\n const outerSignal = opts === null || opts === undefined ? undefined : opts.signal\n\n // Need to cleanup event listeners if last stream is readable\n // https://github.com/nodejs/node/issues/35452\n const lastStreamCleanup = []\n validateAbortSignal(outerSignal, 'options.signal')\n function abort() {\n finishImpl(new AbortError())\n }\n addAbortListener = addAbortListener || require('../../ours/util').addAbortListener\n let disposable\n if (outerSignal) {\n disposable = addAbortListener(outerSignal, abort)\n }\n let error\n let value\n const destroys = []\n let finishCount = 0\n function finish(err) {\n finishImpl(err, --finishCount === 0)\n }\n function finishImpl(err, final) {\n var _disposable\n if (err && (!error || error.code === 'ERR_STREAM_PREMATURE_CLOSE')) {\n error = err\n }\n if (!error && !final) {\n return\n }\n while (destroys.length) {\n destroys.shift()(error)\n }\n ;(_disposable = disposable) === null || _disposable === undefined ? undefined : _disposable[SymbolDispose]()\n ac.abort()\n if (final) {\n if (!error) {\n lastStreamCleanup.forEach((fn) => fn())\n }\n process.nextTick(callback, error, value)\n }\n }\n let ret\n for (let i = 0; i < streams.length; i++) {\n const stream = streams[i]\n const reading = i < streams.length - 1\n const writing = i > 0\n const end = reading || (opts === null || opts === undefined ? undefined : opts.end) !== false\n const isLastStream = i === streams.length - 1\n if (isNodeStream(stream)) {\n if (end) {\n const { destroy, cleanup } = destroyer(stream, reading, writing)\n destroys.push(destroy)\n if (isReadable(stream) && isLastStream) {\n lastStreamCleanup.push(cleanup)\n }\n }\n\n // Catch stream errors that occur after pipe/pump has completed.\n function onError(err) {\n if (err && err.name !== 'AbortError' && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n finish(err)\n }\n }\n stream.on('error', onError)\n if (isReadable(stream) && isLastStream) {\n lastStreamCleanup.push(() => {\n stream.removeListener('error', onError)\n })\n }\n }\n if (i === 0) {\n if (typeof stream === 'function') {\n ret = stream({\n signal\n })\n if (!isIterable(ret)) {\n throw new ERR_INVALID_RETURN_VALUE('Iterable, AsyncIterable or Stream', 'source', ret)\n }\n } else if (isIterable(stream) || isReadableNodeStream(stream) || isTransformStream(stream)) {\n ret = stream\n } else {\n ret = Duplex.from(stream)\n }\n } else if (typeof stream === 'function') {\n if (isTransformStream(ret)) {\n var _ret\n ret = makeAsyncIterable((_ret = ret) === null || _ret === undefined ? undefined : _ret.readable)\n } else {\n ret = makeAsyncIterable(ret)\n }\n ret = stream(ret, {\n signal\n })\n if (reading) {\n if (!isIterable(ret, true)) {\n throw new ERR_INVALID_RETURN_VALUE('AsyncIterable', `transform[${i - 1}]`, ret)\n }\n } else {\n var _ret2\n if (!PassThrough) {\n PassThrough = require('./passthrough')\n }\n\n // If the last argument to pipeline is not a stream\n // we must create a proxy stream so that pipeline(...)\n // always returns a stream which can be further\n // composed through `.pipe(stream)`.\n\n const pt = new PassThrough({\n objectMode: true\n })\n\n // Handle Promises/A+ spec, `then` could be a getter that throws on\n // second use.\n const then = (_ret2 = ret) === null || _ret2 === undefined ? undefined : _ret2.then\n if (typeof then === 'function') {\n finishCount++\n then.call(\n ret,\n (val) => {\n value = val\n if (val != null) {\n pt.write(val)\n }\n if (end) {\n pt.end()\n }\n process.nextTick(finish)\n },\n (err) => {\n pt.destroy(err)\n process.nextTick(finish, err)\n }\n )\n } else if (isIterable(ret, true)) {\n finishCount++\n pumpToNode(ret, pt, finish, {\n end\n })\n } else if (isReadableStream(ret) || isTransformStream(ret)) {\n const toRead = ret.readable || ret\n finishCount++\n pumpToNode(toRead, pt, finish, {\n end\n })\n } else {\n throw new ERR_INVALID_RETURN_VALUE('AsyncIterable or Promise', 'destination', ret)\n }\n ret = pt\n const { destroy, cleanup } = destroyer(ret, false, true)\n destroys.push(destroy)\n if (isLastStream) {\n lastStreamCleanup.push(cleanup)\n }\n }\n } else if (isNodeStream(stream)) {\n if (isReadableNodeStream(ret)) {\n finishCount += 2\n const cleanup = pipe(ret, stream, finish, {\n end\n })\n if (isReadable(stream) && isLastStream) {\n lastStreamCleanup.push(cleanup)\n }\n } else if (isTransformStream(ret) || isReadableStream(ret)) {\n const toRead = ret.readable || ret\n finishCount++\n pumpToNode(toRead, stream, finish, {\n end\n })\n } else if (isIterable(ret)) {\n finishCount++\n pumpToNode(ret, stream, finish, {\n end\n })\n } else {\n throw new ERR_INVALID_ARG_TYPE(\n 'val',\n ['Readable', 'Iterable', 'AsyncIterable', 'ReadableStream', 'TransformStream'],\n ret\n )\n }\n ret = stream\n } else if (isWebStream(stream)) {\n if (isReadableNodeStream(ret)) {\n finishCount++\n pumpToWeb(makeAsyncIterable(ret), stream, finish, {\n end\n })\n } else if (isReadableStream(ret) || isIterable(ret)) {\n finishCount++\n pumpToWeb(ret, stream, finish, {\n end\n })\n } else if (isTransformStream(ret)) {\n finishCount++\n pumpToWeb(ret.readable, stream, finish, {\n end\n })\n } else {\n throw new ERR_INVALID_ARG_TYPE(\n 'val',\n ['Readable', 'Iterable', 'AsyncIterable', 'ReadableStream', 'TransformStream'],\n ret\n )\n }\n ret = stream\n } else {\n ret = Duplex.from(stream)\n }\n }\n if (\n (signal !== null && signal !== undefined && signal.aborted) ||\n (outerSignal !== null && outerSignal !== undefined && outerSignal.aborted)\n ) {\n process.nextTick(abort)\n }\n return ret\n}\nfunction pipe(src, dst, finish, { end }) {\n let ended = false\n dst.on('close', () => {\n if (!ended) {\n // Finish if the destination closes before the source has completed.\n finish(new ERR_STREAM_PREMATURE_CLOSE())\n }\n })\n src.pipe(dst, {\n end: false\n }) // If end is true we already will have a listener to end dst.\n\n if (end) {\n // Compat. Before node v10.12.0 stdio used to throw an error so\n // pipe() did/does not end() stdio destinations.\n // Now they allow it but \"secretly\" don't close the underlying fd.\n\n function endFn() {\n ended = true\n dst.end()\n }\n if (isReadableFinished(src)) {\n // End the destination if the source has already ended.\n process.nextTick(endFn)\n } else {\n src.once('end', endFn)\n }\n } else {\n finish()\n }\n eos(\n src,\n {\n readable: true,\n writable: false\n },\n (err) => {\n const rState = src._readableState\n if (\n err &&\n err.code === 'ERR_STREAM_PREMATURE_CLOSE' &&\n rState &&\n rState.ended &&\n !rState.errored &&\n !rState.errorEmitted\n ) {\n // Some readable streams will emit 'close' before 'end'. However, since\n // this is on the readable side 'end' should still be emitted if the\n // stream has been ended and no error emitted. This should be allowed in\n // favor of backwards compatibility. Since the stream is piped to a\n // destination this should not result in any observable difference.\n // We don't need to check if this is a writable premature close since\n // eos will only fail with premature close on the reading side for\n // duplex streams.\n src.once('end', finish).once('error', finish)\n } else {\n finish(err)\n }\n }\n )\n return eos(\n dst,\n {\n readable: false,\n writable: true\n },\n finish\n )\n}\nmodule.exports = {\n pipelineImpl,\n pipeline\n}\n","'use strict'\n\nconst { pipeline } = require('./pipeline')\nconst Duplex = require('./duplex')\nconst { destroyer } = require('./destroy')\nconst {\n isNodeStream,\n isReadable,\n isWritable,\n isWebStream,\n isTransformStream,\n isWritableStream,\n isReadableStream\n} = require('./utils')\nconst {\n AbortError,\n codes: { ERR_INVALID_ARG_VALUE, ERR_MISSING_ARGS }\n} = require('../../ours/errors')\nconst eos = require('./end-of-stream')\nmodule.exports = function compose(...streams) {\n if (streams.length === 0) {\n throw new ERR_MISSING_ARGS('streams')\n }\n if (streams.length === 1) {\n return Duplex.from(streams[0])\n }\n const orgStreams = [...streams]\n if (typeof streams[0] === 'function') {\n streams[0] = Duplex.from(streams[0])\n }\n if (typeof streams[streams.length - 1] === 'function') {\n const idx = streams.length - 1\n streams[idx] = Duplex.from(streams[idx])\n }\n for (let n = 0; n < streams.length; ++n) {\n if (!isNodeStream(streams[n]) && !isWebStream(streams[n])) {\n // TODO(ronag): Add checks for non streams.\n continue\n }\n if (\n n < streams.length - 1 &&\n !(isReadable(streams[n]) || isReadableStream(streams[n]) || isTransformStream(streams[n]))\n ) {\n throw new ERR_INVALID_ARG_VALUE(`streams[${n}]`, orgStreams[n], 'must be readable')\n }\n if (n > 0 && !(isWritable(streams[n]) || isWritableStream(streams[n]) || isTransformStream(streams[n]))) {\n throw new ERR_INVALID_ARG_VALUE(`streams[${n}]`, orgStreams[n], 'must be writable')\n }\n }\n let ondrain\n let onfinish\n let onreadable\n let onclose\n let d\n function onfinished(err) {\n const cb = onclose\n onclose = null\n if (cb) {\n cb(err)\n } else if (err) {\n d.destroy(err)\n } else if (!readable && !writable) {\n d.destroy()\n }\n }\n const head = streams[0]\n const tail = pipeline(streams, onfinished)\n const writable = !!(isWritable(head) || isWritableStream(head) || isTransformStream(head))\n const readable = !!(isReadable(tail) || isReadableStream(tail) || isTransformStream(tail))\n\n // TODO(ronag): Avoid double buffering.\n // Implement Writable/Readable/Duplex traits.\n // See, https://github.com/nodejs/node/pull/33515.\n d = new Duplex({\n // TODO (ronag): highWaterMark?\n writableObjectMode: !!(head !== null && head !== undefined && head.writableObjectMode),\n readableObjectMode: !!(tail !== null && tail !== undefined && tail.readableObjectMode),\n writable,\n readable\n })\n if (writable) {\n if (isNodeStream(head)) {\n d._write = function (chunk, encoding, callback) {\n if (head.write(chunk, encoding)) {\n callback()\n } else {\n ondrain = callback\n }\n }\n d._final = function (callback) {\n head.end()\n onfinish = callback\n }\n head.on('drain', function () {\n if (ondrain) {\n const cb = ondrain\n ondrain = null\n cb()\n }\n })\n } else if (isWebStream(head)) {\n const writable = isTransformStream(head) ? head.writable : head\n const writer = writable.getWriter()\n d._write = async function (chunk, encoding, callback) {\n try {\n await writer.ready\n writer.write(chunk).catch(() => {})\n callback()\n } catch (err) {\n callback(err)\n }\n }\n d._final = async function (callback) {\n try {\n await writer.ready\n writer.close().catch(() => {})\n onfinish = callback\n } catch (err) {\n callback(err)\n }\n }\n }\n const toRead = isTransformStream(tail) ? tail.readable : tail\n eos(toRead, () => {\n if (onfinish) {\n const cb = onfinish\n onfinish = null\n cb()\n }\n })\n }\n if (readable) {\n if (isNodeStream(tail)) {\n tail.on('readable', function () {\n if (onreadable) {\n const cb = onreadable\n onreadable = null\n cb()\n }\n })\n tail.on('end', function () {\n d.push(null)\n })\n d._read = function () {\n while (true) {\n const buf = tail.read()\n if (buf === null) {\n onreadable = d._read\n return\n }\n if (!d.push(buf)) {\n return\n }\n }\n }\n } else if (isWebStream(tail)) {\n const readable = isTransformStream(tail) ? tail.readable : tail\n const reader = readable.getReader()\n d._read = async function () {\n while (true) {\n try {\n const { value, done } = await reader.read()\n if (!d.push(value)) {\n return\n }\n if (done) {\n d.push(null)\n return\n }\n } catch {\n return\n }\n }\n }\n }\n }\n d._destroy = function (err, callback) {\n if (!err && onclose !== null) {\n err = new AbortError()\n }\n onreadable = null\n ondrain = null\n onfinish = null\n if (onclose === null) {\n callback(err)\n } else {\n onclose = callback\n if (isNodeStream(tail)) {\n destroyer(tail, err)\n }\n }\n }\n return d\n}\n","'use strict'\n\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nconst {\n codes: { ERR_INVALID_ARG_VALUE, ERR_INVALID_ARG_TYPE, ERR_MISSING_ARGS, ERR_OUT_OF_RANGE },\n AbortError\n} = require('../../ours/errors')\nconst { validateAbortSignal, validateInteger, validateObject } = require('../validators')\nconst kWeakHandler = require('../../ours/primordials').Symbol('kWeak')\nconst kResistStopPropagation = require('../../ours/primordials').Symbol('kResistStopPropagation')\nconst { finished } = require('./end-of-stream')\nconst staticCompose = require('./compose')\nconst { addAbortSignalNoValidate } = require('./add-abort-signal')\nconst { isWritable, isNodeStream } = require('./utils')\nconst { deprecate } = require('../../ours/util')\nconst {\n ArrayPrototypePush,\n Boolean,\n MathFloor,\n Number,\n NumberIsNaN,\n Promise,\n PromiseReject,\n PromiseResolve,\n PromisePrototypeThen,\n Symbol\n} = require('../../ours/primordials')\nconst kEmpty = Symbol('kEmpty')\nconst kEof = Symbol('kEof')\nfunction compose(stream, options) {\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n if (isNodeStream(stream) && !isWritable(stream)) {\n throw new ERR_INVALID_ARG_VALUE('stream', stream, 'must be writable')\n }\n const composedStream = staticCompose(this, stream)\n if (options !== null && options !== undefined && options.signal) {\n // Not validating as we already validated before\n addAbortSignalNoValidate(options.signal, composedStream)\n }\n return composedStream\n}\nfunction map(fn, options) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n }\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n let concurrency = 1\n if ((options === null || options === undefined ? undefined : options.concurrency) != null) {\n concurrency = MathFloor(options.concurrency)\n }\n let highWaterMark = concurrency - 1\n if ((options === null || options === undefined ? undefined : options.highWaterMark) != null) {\n highWaterMark = MathFloor(options.highWaterMark)\n }\n validateInteger(concurrency, 'options.concurrency', 1)\n validateInteger(highWaterMark, 'options.highWaterMark', 0)\n highWaterMark += concurrency\n return async function* map() {\n const signal = require('../../ours/util').AbortSignalAny(\n [options === null || options === undefined ? undefined : options.signal].filter(Boolean)\n )\n const stream = this\n const queue = []\n const signalOpt = {\n signal\n }\n let next\n let resume\n let done = false\n let cnt = 0\n function onCatch() {\n done = true\n afterItemProcessed()\n }\n function afterItemProcessed() {\n cnt -= 1\n maybeResume()\n }\n function maybeResume() {\n if (resume && !done && cnt < concurrency && queue.length < highWaterMark) {\n resume()\n resume = null\n }\n }\n async function pump() {\n try {\n for await (let val of stream) {\n if (done) {\n return\n }\n if (signal.aborted) {\n throw new AbortError()\n }\n try {\n val = fn(val, signalOpt)\n if (val === kEmpty) {\n continue\n }\n val = PromiseResolve(val)\n } catch (err) {\n val = PromiseReject(err)\n }\n cnt += 1\n PromisePrototypeThen(val, afterItemProcessed, onCatch)\n queue.push(val)\n if (next) {\n next()\n next = null\n }\n if (!done && (queue.length >= highWaterMark || cnt >= concurrency)) {\n await new Promise((resolve) => {\n resume = resolve\n })\n }\n }\n queue.push(kEof)\n } catch (err) {\n const val = PromiseReject(err)\n PromisePrototypeThen(val, afterItemProcessed, onCatch)\n queue.push(val)\n } finally {\n done = true\n if (next) {\n next()\n next = null\n }\n }\n }\n pump()\n try {\n while (true) {\n while (queue.length > 0) {\n const val = await queue[0]\n if (val === kEof) {\n return\n }\n if (signal.aborted) {\n throw new AbortError()\n }\n if (val !== kEmpty) {\n yield val\n }\n queue.shift()\n maybeResume()\n }\n await new Promise((resolve) => {\n next = resolve\n })\n }\n } finally {\n done = true\n if (resume) {\n resume()\n resume = null\n }\n }\n }.call(this)\n}\nfunction asIndexedPairs(options = undefined) {\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n return async function* asIndexedPairs() {\n let index = 0\n for await (const val of this) {\n var _options$signal\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal = options.signal) !== null &&\n _options$signal !== undefined &&\n _options$signal.aborted\n ) {\n throw new AbortError({\n cause: options.signal.reason\n })\n }\n yield [index++, val]\n }\n }.call(this)\n}\nasync function some(fn, options = undefined) {\n for await (const unused of filter.call(this, fn, options)) {\n return true\n }\n return false\n}\nasync function every(fn, options = undefined) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n }\n // https://en.wikipedia.org/wiki/De_Morgan%27s_laws\n return !(await some.call(\n this,\n async (...args) => {\n return !(await fn(...args))\n },\n options\n ))\n}\nasync function find(fn, options) {\n for await (const result of filter.call(this, fn, options)) {\n return result\n }\n return undefined\n}\nasync function forEach(fn, options) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n }\n async function forEachFn(value, options) {\n await fn(value, options)\n return kEmpty\n }\n // eslint-disable-next-line no-unused-vars\n for await (const unused of map.call(this, forEachFn, options));\n}\nfunction filter(fn, options) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n }\n async function filterFn(value, options) {\n if (await fn(value, options)) {\n return value\n }\n return kEmpty\n }\n return map.call(this, filterFn, options)\n}\n\n// Specific to provide better error to reduce since the argument is only\n// missing if the stream has no items in it - but the code is still appropriate\nclass ReduceAwareErrMissingArgs extends ERR_MISSING_ARGS {\n constructor() {\n super('reduce')\n this.message = 'Reduce of an empty stream requires an initial value'\n }\n}\nasync function reduce(reducer, initialValue, options) {\n var _options$signal2\n if (typeof reducer !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('reducer', ['Function', 'AsyncFunction'], reducer)\n }\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n let hasInitialValue = arguments.length > 1\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal2 = options.signal) !== null &&\n _options$signal2 !== undefined &&\n _options$signal2.aborted\n ) {\n const err = new AbortError(undefined, {\n cause: options.signal.reason\n })\n this.once('error', () => {}) // The error is already propagated\n await finished(this.destroy(err))\n throw err\n }\n const ac = new AbortController()\n const signal = ac.signal\n if (options !== null && options !== undefined && options.signal) {\n const opts = {\n once: true,\n [kWeakHandler]: this,\n [kResistStopPropagation]: true\n }\n options.signal.addEventListener('abort', () => ac.abort(), opts)\n }\n let gotAnyItemFromStream = false\n try {\n for await (const value of this) {\n var _options$signal3\n gotAnyItemFromStream = true\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal3 = options.signal) !== null &&\n _options$signal3 !== undefined &&\n _options$signal3.aborted\n ) {\n throw new AbortError()\n }\n if (!hasInitialValue) {\n initialValue = value\n hasInitialValue = true\n } else {\n initialValue = await reducer(initialValue, value, {\n signal\n })\n }\n }\n if (!gotAnyItemFromStream && !hasInitialValue) {\n throw new ReduceAwareErrMissingArgs()\n }\n } finally {\n ac.abort()\n }\n return initialValue\n}\nasync function toArray(options) {\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n const result = []\n for await (const val of this) {\n var _options$signal4\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal4 = options.signal) !== null &&\n _options$signal4 !== undefined &&\n _options$signal4.aborted\n ) {\n throw new AbortError(undefined, {\n cause: options.signal.reason\n })\n }\n ArrayPrototypePush(result, val)\n }\n return result\n}\nfunction flatMap(fn, options) {\n const values = map.call(this, fn, options)\n return async function* flatMap() {\n for await (const val of values) {\n yield* val\n }\n }.call(this)\n}\nfunction toIntegerOrInfinity(number) {\n // We coerce here to align with the spec\n // https://github.com/tc39/proposal-iterator-helpers/issues/169\n number = Number(number)\n if (NumberIsNaN(number)) {\n return 0\n }\n if (number < 0) {\n throw new ERR_OUT_OF_RANGE('number', '>= 0', number)\n }\n return number\n}\nfunction drop(number, options = undefined) {\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n number = toIntegerOrInfinity(number)\n return async function* drop() {\n var _options$signal5\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal5 = options.signal) !== null &&\n _options$signal5 !== undefined &&\n _options$signal5.aborted\n ) {\n throw new AbortError()\n }\n for await (const val of this) {\n var _options$signal6\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal6 = options.signal) !== null &&\n _options$signal6 !== undefined &&\n _options$signal6.aborted\n ) {\n throw new AbortError()\n }\n if (number-- <= 0) {\n yield val\n }\n }\n }.call(this)\n}\nfunction take(number, options = undefined) {\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n number = toIntegerOrInfinity(number)\n return async function* take() {\n var _options$signal7\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal7 = options.signal) !== null &&\n _options$signal7 !== undefined &&\n _options$signal7.aborted\n ) {\n throw new AbortError()\n }\n for await (const val of this) {\n var _options$signal8\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal8 = options.signal) !== null &&\n _options$signal8 !== undefined &&\n _options$signal8.aborted\n ) {\n throw new AbortError()\n }\n if (number-- > 0) {\n yield val\n }\n\n // Don't get another item from iterator in case we reached the end\n if (number <= 0) {\n return\n }\n }\n }.call(this)\n}\nmodule.exports.streamReturningOperators = {\n asIndexedPairs: deprecate(asIndexedPairs, 'readable.asIndexedPairs will be removed in a future version.'),\n drop,\n filter,\n flatMap,\n map,\n take,\n compose\n}\nmodule.exports.promiseReturningOperators = {\n every,\n forEach,\n reduce,\n toArray,\n some,\n find\n}\n","'use strict'\n\nconst { ArrayPrototypePop, Promise } = require('../ours/primordials')\nconst { isIterable, isNodeStream, isWebStream } = require('../internal/streams/utils')\nconst { pipelineImpl: pl } = require('../internal/streams/pipeline')\nconst { finished } = require('../internal/streams/end-of-stream')\nrequire('../../lib/stream.js')\nfunction pipeline(...streams) {\n return new Promise((resolve, reject) => {\n let signal\n let end\n const lastArg = streams[streams.length - 1]\n if (\n lastArg &&\n typeof lastArg === 'object' &&\n !isNodeStream(lastArg) &&\n !isIterable(lastArg) &&\n !isWebStream(lastArg)\n ) {\n const options = ArrayPrototypePop(streams)\n signal = options.signal\n end = options.end\n }\n pl(\n streams,\n (err, value) => {\n if (err) {\n reject(err)\n } else {\n resolve(value)\n }\n },\n {\n signal,\n end\n }\n )\n })\n}\nmodule.exports = {\n finished,\n pipeline\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict'\n\n/* replacement start */\n\nconst { Buffer } = require('buffer')\n\n/* replacement end */\n\nconst { ObjectDefineProperty, ObjectKeys, ReflectApply } = require('./ours/primordials')\nconst {\n promisify: { custom: customPromisify }\n} = require('./ours/util')\nconst { streamReturningOperators, promiseReturningOperators } = require('./internal/streams/operators')\nconst {\n codes: { ERR_ILLEGAL_CONSTRUCTOR }\n} = require('./ours/errors')\nconst compose = require('./internal/streams/compose')\nconst { setDefaultHighWaterMark, getDefaultHighWaterMark } = require('./internal/streams/state')\nconst { pipeline } = require('./internal/streams/pipeline')\nconst { destroyer } = require('./internal/streams/destroy')\nconst eos = require('./internal/streams/end-of-stream')\nconst internalBuffer = {}\nconst promises = require('./stream/promises')\nconst utils = require('./internal/streams/utils')\nconst Stream = (module.exports = require('./internal/streams/legacy').Stream)\nStream.isDestroyed = utils.isDestroyed\nStream.isDisturbed = utils.isDisturbed\nStream.isErrored = utils.isErrored\nStream.isReadable = utils.isReadable\nStream.isWritable = utils.isWritable\nStream.Readable = require('./internal/streams/readable')\nfor (const key of ObjectKeys(streamReturningOperators)) {\n const op = streamReturningOperators[key]\n function fn(...args) {\n if (new.target) {\n throw ERR_ILLEGAL_CONSTRUCTOR()\n }\n return Stream.Readable.from(ReflectApply(op, this, args))\n }\n ObjectDefineProperty(fn, 'name', {\n __proto__: null,\n value: op.name\n })\n ObjectDefineProperty(fn, 'length', {\n __proto__: null,\n value: op.length\n })\n ObjectDefineProperty(Stream.Readable.prototype, key, {\n __proto__: null,\n value: fn,\n enumerable: false,\n configurable: true,\n writable: true\n })\n}\nfor (const key of ObjectKeys(promiseReturningOperators)) {\n const op = promiseReturningOperators[key]\n function fn(...args) {\n if (new.target) {\n throw ERR_ILLEGAL_CONSTRUCTOR()\n }\n return ReflectApply(op, this, args)\n }\n ObjectDefineProperty(fn, 'name', {\n __proto__: null,\n value: op.name\n })\n ObjectDefineProperty(fn, 'length', {\n __proto__: null,\n value: op.length\n })\n ObjectDefineProperty(Stream.Readable.prototype, key, {\n __proto__: null,\n value: fn,\n enumerable: false,\n configurable: true,\n writable: true\n })\n}\nStream.Writable = require('./internal/streams/writable')\nStream.Duplex = require('./internal/streams/duplex')\nStream.Transform = require('./internal/streams/transform')\nStream.PassThrough = require('./internal/streams/passthrough')\nStream.pipeline = pipeline\nconst { addAbortSignal } = require('./internal/streams/add-abort-signal')\nStream.addAbortSignal = addAbortSignal\nStream.finished = eos\nStream.destroy = destroyer\nStream.compose = compose\nStream.setDefaultHighWaterMark = setDefaultHighWaterMark\nStream.getDefaultHighWaterMark = getDefaultHighWaterMark\nObjectDefineProperty(Stream, 'promises', {\n __proto__: null,\n configurable: true,\n enumerable: true,\n get() {\n return promises\n }\n})\nObjectDefineProperty(pipeline, customPromisify, {\n __proto__: null,\n enumerable: true,\n get() {\n return promises.pipeline\n }\n})\nObjectDefineProperty(eos, customPromisify, {\n __proto__: null,\n enumerable: true,\n get() {\n return promises.finished\n }\n})\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream\nStream._isUint8Array = function isUint8Array(value) {\n return value instanceof Uint8Array\n}\nStream._uint8ArrayToBuffer = function _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n}\n","'use strict'\n\nconst CustomStream = require('../stream')\nconst promises = require('../stream/promises')\nconst originalDestroy = CustomStream.Readable.destroy\nmodule.exports = CustomStream.Readable\n\n// Explicit export naming is needed for ESM\nmodule.exports._uint8ArrayToBuffer = CustomStream._uint8ArrayToBuffer\nmodule.exports._isUint8Array = CustomStream._isUint8Array\nmodule.exports.isDisturbed = CustomStream.isDisturbed\nmodule.exports.isErrored = CustomStream.isErrored\nmodule.exports.isReadable = CustomStream.isReadable\nmodule.exports.Readable = CustomStream.Readable\nmodule.exports.Writable = CustomStream.Writable\nmodule.exports.Duplex = CustomStream.Duplex\nmodule.exports.Transform = CustomStream.Transform\nmodule.exports.PassThrough = CustomStream.PassThrough\nmodule.exports.addAbortSignal = CustomStream.addAbortSignal\nmodule.exports.finished = CustomStream.finished\nmodule.exports.destroy = CustomStream.destroy\nmodule.exports.destroy = originalDestroy\nmodule.exports.pipeline = CustomStream.pipeline\nmodule.exports.compose = CustomStream.compose\nObject.defineProperty(CustomStream, 'promises', {\n configurable: true,\n enumerable: true,\n get() {\n return promises\n }\n})\nmodule.exports.Stream = CustomStream.Stream\n\n// Allow default importing\nmodule.exports.default = module.exports\n","import { EventEmitter } from 'events';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nfunction safeApply(handler, context, args) {\n try {\n Reflect.apply(handler, context, args);\n } catch (err) {\n // Throw error after timeout so as not to interrupt the stack\n setTimeout(() => {\n throw err;\n });\n }\n}\nfunction arrayClone(arr) {\n const n = arr.length;\n const copy = new Array(n);\n for (let i = 0; i < n; i += 1) {\n copy[i] = arr[i];\n }\n return copy;\n}\nclass SafeEventEmitter extends EventEmitter {\n emit(type, ...args) {\n let doError = type === \"error\";\n const events = this._events;\n if (events !== undefined) {\n doError = doError && events.error === undefined;\n } else if (!doError) {\n return false;\n }\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n let er;\n if (args.length > 0) {\n [er] = args;\n }\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n const err = new Error(`Unhandled error.${er ? ` (${er.message})` : \"\"}`);\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n const handler = events[type];\n if (handler === undefined) {\n return false;\n }\n if (typeof handler === \"function\") {\n safeApply(handler, this, args);\n } else {\n const len = handler.length;\n const listeners = arrayClone(handler);\n for (let i = 0; i < len; i += 1) {\n safeApply(listeners[i], this, args);\n }\n }\n return true;\n }\n}\n\nexport { SafeEventEmitter };\n","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport stringify from 'json-stable-stringify';\n\nclass SerializableError extends Error {\n constructor({\n code,\n message,\n data\n }) {\n if (!Number.isInteger(code)) {\n throw new Error(\"code must be an integer\");\n }\n if (!message || typeof message !== \"string\") {\n throw new Error(\"message must be string\");\n }\n super(message);\n _defineProperty(this, \"code\", void 0);\n _defineProperty(this, \"data\", void 0);\n this.code = code;\n if (data !== undefined) {\n this.data = data;\n }\n }\n toString() {\n return stringify({\n code: this.code,\n message: this.message,\n data: this.data,\n stack: this.stack\n });\n }\n}\n\nexport { SerializableError };\n","const errorCodes = {\n rpc: {\n invalidInput: -32000,\n resourceNotFound: -32001,\n resourceUnavailable: -32002,\n transactionRejected: -32003,\n methodNotSupported: -32004,\n limitExceeded: -32005,\n parse: -32700,\n invalidRequest: -32600,\n methodNotFound: -32601,\n invalidParams: -32602,\n internal: -32603\n },\n provider: {\n userRejectedRequest: 4001,\n unauthorized: 4100,\n unsupportedMethod: 4200,\n disconnected: 4900,\n chainDisconnected: 4901\n }\n};\nconst errorValues = {\n \"-32700\": {\n standard: \"JSON RPC 2.0\",\n message: \"Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.\"\n },\n \"-32600\": {\n standard: \"JSON RPC 2.0\",\n message: \"The JSON sent is not a valid Request object.\"\n },\n \"-32601\": {\n standard: \"JSON RPC 2.0\",\n message: \"The method does not exist / is not available.\"\n },\n \"-32602\": {\n standard: \"JSON RPC 2.0\",\n message: \"Invalid method parameter(s).\"\n },\n \"-32603\": {\n standard: \"JSON RPC 2.0\",\n message: \"Internal JSON-RPC error.\"\n },\n \"-32000\": {\n standard: \"EIP-1474\",\n message: \"Invalid input.\"\n },\n \"-32001\": {\n standard: \"EIP-1474\",\n message: \"Resource not found.\"\n },\n \"-32002\": {\n standard: \"EIP-1474\",\n message: \"Resource unavailable.\"\n },\n \"-32003\": {\n standard: \"EIP-1474\",\n message: \"Transaction rejected.\"\n },\n \"-32004\": {\n standard: \"EIP-1474\",\n message: \"Method not supported.\"\n },\n \"-32005\": {\n standard: \"EIP-1474\",\n message: \"Request limit exceeded.\"\n },\n \"4001\": {\n standard: \"EIP-1193\",\n message: \"User rejected the request.\"\n },\n \"4100\": {\n standard: \"EIP-1193\",\n message: \"The requested account and/or method has not been authorized by the user.\"\n },\n \"4200\": {\n standard: \"EIP-1193\",\n message: \"The requested method is not supported by this Ethereum provider.\"\n },\n \"4900\": {\n standard: \"EIP-1193\",\n message: \"The provider is disconnected from all chains.\"\n },\n \"4901\": {\n standard: \"EIP-1193\",\n message: \"The provider is disconnected from the specified chain.\"\n }\n};\n\nexport { errorCodes, errorValues };\n","import _objectSpread from '@babel/runtime/helpers/objectSpread2';\nimport { errorCodes, errorValues } from './error-constants.js';\n\nconst FALLBACK_ERROR_CODE = errorCodes.rpc.internal;\nconst FALLBACK_MESSAGE = \"Unspecified error message. This is a bug, please report it.\";\nconst JSON_RPC_SERVER_ERROR_MESSAGE = \"Unspecified server error.\";\n/**\n * Returns whether the given code is valid.\n * A code is valid if it is an integer.\n *\n * @param code - The error code.\n * @returns Whether the given code is valid.\n */\nfunction isValidCode(code) {\n return Number.isInteger(code);\n}\nfunction isValidString(value) {\n return typeof value === \"string\" && value.length > 0;\n}\n\n/**\n * A type guard for {@link RuntimeObject}.\n *\n * @param value - The value to check.\n * @returns Whether the specified value has a runtime type of `object` and is\n * neither `null` nor an `Array`.\n */\nfunction isObject(value) {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\n/**\n * Check if the value is plain object.\n *\n * @param value - Value to be checked.\n * @returns True if an object is the plain JavaScript object,\n * false if the object is not plain (e.g. function).\n */\nfunction isPlainObject(value) {\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n try {\n let proto = value;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(value) === proto;\n } catch (_) {\n return false;\n }\n}\n\n/**\n * Check if the given code is a valid JSON-RPC server error code.\n *\n * @param code - The error code.\n * @returns Whether the given code is a valid JSON-RPC server error code.\n */\nfunction isJsonRpcServerError(code) {\n return code >= -32099 && code <= -32000;\n}\nfunction isJsonRpcError(value) {\n const castValue = value;\n if (!castValue) return false;\n if (!isValidCode(castValue.code) || !isValidString(castValue.message)) return false;\n if (castValue.stack && !isValidString(castValue.stack)) return false;\n return true;\n}\n\n/**\n * Gets the message for a given code, or a fallback message if the code has\n * no corresponding message.\n *\n * @param code - The error code.\n * @param fallbackMessage - The fallback message to use if the code has no\n * corresponding message.\n * @returns The message for the given code, or the fallback message if the code\n * has no corresponding message.\n */\nfunction getMessageFromCode(code, fallbackMessage = FALLBACK_MESSAGE) {\n if (isValidCode(code)) {\n const codeString = code.toString();\n if (Object.hasOwn(errorValues, codeString)) {\n return errorValues[codeString].message;\n }\n if (isJsonRpcServerError(code)) {\n return JSON_RPC_SERVER_ERROR_MESSAGE;\n }\n }\n return fallbackMessage;\n}\nconst FALLBACK_ERROR = {\n code: FALLBACK_ERROR_CODE,\n message: getMessageFromCode(FALLBACK_ERROR_CODE)\n};\nfunction isValidJson(str) {\n try {\n JSON.parse(JSON.stringify(str, (strKey, strVal) => {\n if (strKey === \"__proto__\" || strKey === \"constructor\") {\n throw new Error(\"Not valid json\");\n }\n if (typeof strVal === \"function\" || typeof strVal === \"symbol\") {\n throw new Error(\"Not valid json\");\n }\n return strVal;\n }), (propKey, propValue) => {\n // Strip __proto__ and constructor properties to prevent prototype pollution.\n if (propKey === \"__proto__\" || propKey === \"constructor\") {\n return undefined;\n }\n return propValue;\n });\n // this means, it's a valid json so far\n } catch (e) {\n return false;\n }\n return true;\n}\n\n/**\n * Extracts all JSON-serializable properties from an object.\n *\n * @param object - The object in question.\n * @returns An object containing all the JSON-serializable properties.\n */\nfunction serializeObject(object) {\n return Object.getOwnPropertyNames(object).reduce((acc, key) => {\n const value = object[key];\n if (isValidJson(value)) {\n acc[key] = value;\n }\n return acc;\n }, {});\n}\n\n/**\n * Serializes an unknown error to be used as the `cause` in a fallback error.\n *\n * @param error - The unknown error.\n * @returns A JSON-serializable object containing as much information about the original error as possible.\n */\nfunction serializeCause(error) {\n if (Array.isArray(error)) {\n return error.map(entry => {\n if (isValidJson(entry)) {\n return entry;\n } else if (isObject(entry)) {\n return serializeObject(entry);\n }\n return null;\n });\n } else if (isObject(error)) {\n return serializeObject(error);\n }\n if (isValidJson(error)) {\n return error;\n }\n return null;\n}\n\n/**\n * Construct a JSON-serializable object given an error and a JSON serializable `fallbackError`\n *\n * @param error - The error in question.\n * @param fallbackError - A JSON serializable fallback error.\n * @returns A JSON serializable error object.\n */\nfunction buildError(error, fallbackError) {\n // If an error specifies a `serialize` function, we call it and return the result.\n if (error && typeof error === \"object\" && \"serialize\" in error && typeof error.serialize === \"function\") {\n return error.serialize();\n }\n if (isJsonRpcError(error)) {\n return error;\n }\n\n // If the error does not match the JsonRpcError type, use the fallback error, but try to include the original error as `cause`.\n const cause = serializeCause(error);\n const fallbackWithCause = _objectSpread(_objectSpread({}, fallbackError), {}, {\n data: {\n cause\n }\n });\n return fallbackWithCause;\n}\n\n/**\n * Serializes the given error to an Ethereum JSON RPC-compatible error object.\n * If the given error is not fully compatible, it will be preserved on the\n * returned object's data.cause property.\n *\n * @param error - The error to serialize.\n * @param options - Options bag.\n * @param options.fallbackError - The error to return if the given error is\n * not compatible. Should be a JSON serializable value.\n * @param options.shouldIncludeStack - Whether to include the error's stack\n * on the returned object.\n * @returns The serialized error.\n */\nfunction serializeError(error, {\n fallbackError = FALLBACK_ERROR,\n shouldIncludeStack = true\n} = {}) {\n if (!isJsonRpcError(fallbackError)) {\n throw new Error(\"Must provide fallback error with integer number code and string message.\");\n }\n const serialized = buildError(error, fallbackError);\n if (!shouldIncludeStack) {\n delete serialized.stack;\n }\n return serialized;\n}\n\n/**\n * Returns true if supplied error data has a usable `cause` property; false otherwise.\n *\n * @param data - Optional data to validate.\n * @returns Whether cause property is present and an object.\n */\nfunction dataHasCause(data) {\n return isObject(data) && Object.hasOwn(data, \"cause\") && isObject(data.cause);\n}\n\nexport { JSON_RPC_SERVER_ERROR_MESSAGE, dataHasCause, getMessageFromCode, isObject, isPlainObject, isValidCode, isValidString, serializeCause, serializeError };\n","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport stringify from 'json-stable-stringify';\nimport { dataHasCause, isPlainObject, serializeCause } from './utils.js';\n\n/**\n * Check if the given code is a valid JSON-RPC error code.\n *\n * @param code - The code to check.\n * @returns Whether the code is valid.\n */\nfunction isValidEthProviderCode(code) {\n return Number.isInteger(code) && code >= 1000 && code <= 4999;\n}\n\n/**\n * A JSON replacer function that omits circular references.\n *\n * @param _ - The key being replaced.\n * @param value - The value being replaced.\n * @returns The value to use in place of the original value.\n */\nfunction stringifyReplacer(_, value) {\n if (value === \"[Circular]\") {\n return undefined;\n }\n return value;\n}\n\n/**\n * Error subclass implementing JSON RPC 2.0 errors and Ethereum RPC errors\n * per EIP-1474.\n *\n * Permits any integer error code.\n */\nclass JsonRpcError extends Error {\n constructor(code, message, data) {\n if (!Number.isInteger(code)) {\n throw new Error('\"code\" must be an integer.');\n }\n if (!message || typeof message !== \"string\") {\n throw new Error('\"message\" must be a non-empty string.');\n }\n if (dataHasCause(data)) {\n super(message, {\n cause: data.cause\n });\n\n // Browser backwards-compatibility fallback\n // The `cause` definition can be removed when tsconfig lib and/or target have changed to >=es2022\n _defineProperty(this, \"cause\", void 0);\n _defineProperty(this, \"code\", void 0);\n _defineProperty(this, \"data\", void 0);\n if (!Object.hasOwn(this, \"cause\")) {\n Object.assign(this, {\n cause: data.cause\n });\n }\n } else {\n super(message);\n // The `cause` definition can be removed when tsconfig lib and/or target have changed to >=es2022\n _defineProperty(this, \"cause\", void 0);\n _defineProperty(this, \"code\", void 0);\n _defineProperty(this, \"data\", void 0);\n }\n if (data !== undefined) {\n this.data = data;\n }\n this.code = code;\n this.cause = data === null || data === void 0 ? void 0 : data.cause;\n }\n\n /**\n * Get the error as JSON-serializable object.\n *\n * @returns A plain object with all public class properties.\n */\n serialize() {\n const serialized = {\n code: this.code,\n message: this.message\n };\n if (this.data !== undefined) {\n // `this.data` is not guaranteed to be a plain object, but this simplifies\n // the type guard below. We can safely cast it because we know it's a\n // JSON-serializable value.\n serialized.data = this.data;\n if (isPlainObject(this.data)) {\n serialized.data.cause = serializeCause(this.data.cause);\n }\n }\n if (this.stack) {\n serialized.stack = this.stack;\n }\n return serialized;\n }\n\n /**\n * Get a string representation of the serialized error, omitting any circular\n * references.\n *\n * @returns A string representation of the serialized error.\n */\n toString() {\n return stringify(this.serialize(), {\n replacer: stringifyReplacer,\n space: 2\n });\n }\n}\n\n/**\n * Error subclass implementing Ethereum Provider errors per EIP-1193.\n * Permits integer error codes in the [ 1000 <= 4999 ] range.\n */\nclass EthereumProviderError extends JsonRpcError {\n /**\n * Create an Ethereum Provider JSON-RPC error.\n *\n * @param code - The JSON-RPC error code. Must be an integer in the\n * `1000 <= n <= 4999` range.\n * @param message - The JSON-RPC error message.\n * @param data - Optional data to include in the error.\n */\n constructor(code, message, data) {\n if (!isValidEthProviderCode(code)) {\n throw new Error('\"code\" must be an integer such that: 1000 <= code <= 4999');\n }\n super(code, message, data);\n }\n}\n\nexport { EthereumProviderError, JsonRpcError };\n","import { EthereumProviderError, JsonRpcError } from './error-classes.js';\nimport { errorCodes } from './error-constants.js';\nimport { getMessageFromCode } from './utils.js';\n\n/**\n * Get an error message and optional data from an options bag.\n *\n * @param arg - The error message or options bag.\n * @returns A tuple containing the error message and optional data.\n */\nfunction parseOpts(arg) {\n if (arg) {\n if (typeof arg === \"string\") {\n return [arg];\n } else if (typeof arg === \"object\" && !Array.isArray(arg)) {\n const {\n message,\n data\n } = arg;\n if (message && typeof message !== \"string\") {\n throw new Error(\"Must specify string message.\");\n }\n return [message !== null && message !== void 0 ? message : undefined, data];\n }\n }\n return [];\n}\n\n/**\n * Get a generic JSON-RPC error class instance.\n *\n * @param code - The error code.\n * @param arg - The error message or options bag.\n * @returns An instance of the {@link JsonRpcError} class.\n */\nfunction getJsonRpcError(code, arg) {\n const [message, data] = parseOpts(arg);\n return new JsonRpcError(code, message !== null && message !== void 0 ? message : getMessageFromCode(code), data);\n}\n\n/**\n * Get an Ethereum Provider error class instance.\n *\n * @param code - The error code.\n * @param arg - The error message or options bag.\n * @returns An instance of the {@link EthereumProviderError} class.\n */\nfunction getEthProviderError(code, arg) {\n const [message, data] = parseOpts(arg);\n return new EthereumProviderError(code, message !== null && message !== void 0 ? message : getMessageFromCode(code), data);\n}\nconst rpcErrors = {\n /**\n * Get a JSON RPC 2.0 Parse (-32700) error.\n *\n * @param arg - The error message or options bag.\n * @returns An instance of the {@link JsonRpcError} class.\n */\n parse: arg => getJsonRpcError(errorCodes.rpc.parse, arg),\n /**\n * Get a JSON RPC 2.0 Invalid Request (-32600) error.\n *\n * @param arg - The error message or options bag.\n * @returns An instance of the {@link JsonRpcError} class.\n */\n invalidRequest: arg => getJsonRpcError(errorCodes.rpc.invalidRequest, arg),\n /**\n * Get a JSON RPC 2.0 Invalid Params (-32602) error.\n *\n * @param arg - The error message or options bag.\n * @returns An instance of the {@link JsonRpcError} class.\n */\n invalidParams: arg => getJsonRpcError(errorCodes.rpc.invalidParams, arg),\n /**\n * Get a JSON RPC 2.0 Method Not Found (-32601) error.\n *\n * @param arg - The error message or options bag.\n * @returns An instance of the {@link JsonRpcError} class.\n */\n methodNotFound: arg => getJsonRpcError(errorCodes.rpc.methodNotFound, arg),\n /**\n * Get a JSON RPC 2.0 Internal (-32603) error.\n *\n * @param arg - The error message or options bag.\n * @returns An instance of the {@link JsonRpcError} class.\n */\n internal: arg => getJsonRpcError(errorCodes.rpc.internal, arg),\n /**\n * Get a JSON RPC 2.0 Server error.\n * Permits integer error codes in the [ -32099 <= -32005 ] range.\n * Codes -32000 through -32004 are reserved by EIP-1474.\n *\n * @param opts - The error options bag.\n * @returns An instance of the {@link JsonRpcError} class.\n */\n server: opts => {\n if (!opts || typeof opts !== \"object\" || Array.isArray(opts)) {\n throw new Error(\"Ethereum RPC Server errors must provide single object argument.\");\n }\n const {\n code\n } = opts;\n if (!Number.isInteger(code) || code > -32005 || code < -32099) {\n throw new Error('\"code\" must be an integer such that: -32099 <= code <= -32005');\n }\n return getJsonRpcError(code, opts);\n },\n /**\n * Get an Ethereum JSON RPC Invalid Input (-32000) error.\n *\n * @param arg - The error message or options bag.\n * @returns An instance of the {@link JsonRpcError} class.\n */\n invalidInput: arg => getJsonRpcError(errorCodes.rpc.invalidInput, arg),\n /**\n * Get an Ethereum JSON RPC Resource Not Found (-32001) error.\n *\n * @param arg - The error message or options bag.\n * @returns An instance of the {@link JsonRpcError} class.\n */\n resourceNotFound: arg => getJsonRpcError(errorCodes.rpc.resourceNotFound, arg),\n /**\n * Get an Ethereum JSON RPC Resource Unavailable (-32002) error.\n *\n * @param arg - The error message or options bag.\n * @returns An instance of the {@link JsonRpcError} class.\n */\n resourceUnavailable: arg => getJsonRpcError(errorCodes.rpc.resourceUnavailable, arg),\n /**\n * Get an Ethereum JSON RPC Transaction Rejected (-32003) error.\n *\n * @param arg - The error message or options bag.\n * @returns An instance of the {@link JsonRpcError} class.\n */\n transactionRejected: arg => getJsonRpcError(errorCodes.rpc.transactionRejected, arg),\n /**\n * Get an Ethereum JSON RPC Method Not Supported (-32004) error.\n *\n * @param arg - The error message or options bag.\n * @returns An instance of the {@link JsonRpcError} class.\n */\n methodNotSupported: arg => getJsonRpcError(errorCodes.rpc.methodNotSupported, arg),\n /**\n * Get an Ethereum JSON RPC Limit Exceeded (-32005) error.\n *\n * @param arg - The error message or options bag.\n * @returns An instance of the {@link JsonRpcError} class.\n */\n limitExceeded: arg => getJsonRpcError(errorCodes.rpc.limitExceeded, arg)\n};\nconst providerErrors = {\n /**\n * Get an Ethereum Provider User Rejected Request (4001) error.\n *\n * @param arg - The error message or options bag.\n * @returns An instance of the {@link EthereumProviderError} class.\n */\n userRejectedRequest: arg => {\n return getEthProviderError(errorCodes.provider.userRejectedRequest, arg);\n },\n /**\n * Get an Ethereum Provider Unauthorized (4100) error.\n *\n * @param arg - The error message or options bag.\n * @returns An instance of the {@link EthereumProviderError} class.\n */\n unauthorized: arg => {\n return getEthProviderError(errorCodes.provider.unauthorized, arg);\n },\n /**\n * Get an Ethereum Provider Unsupported Method (4200) error.\n *\n * @param arg - The error message or options bag.\n * @returns An instance of the {@link EthereumProviderError} class.\n */\n unsupportedMethod: arg => {\n return getEthProviderError(errorCodes.provider.unsupportedMethod, arg);\n },\n /**\n * Get an Ethereum Provider Not Connected (4900) error.\n *\n * @param arg - The error message or options bag.\n * @returns An instance of the {@link EthereumProviderError} class.\n */\n disconnected: arg => {\n return getEthProviderError(errorCodes.provider.disconnected, arg);\n },\n /**\n * Get an Ethereum Provider Chain Not Connected (4901) error.\n *\n * @param arg - The error message or options bag.\n * @returns An instance of the {@link EthereumProviderError} class.\n */\n chainDisconnected: arg => {\n return getEthProviderError(errorCodes.provider.chainDisconnected, arg);\n },\n /**\n * Get a custom Ethereum Provider error.\n *\n * @param opts - The error options bag.\n * @returns An instance of the {@link EthereumProviderError} class.\n */\n custom: opts => {\n if (!opts || typeof opts !== \"object\" || Array.isArray(opts)) {\n throw new Error(\"Ethereum Provider custom errors must provide single object argument.\");\n }\n const {\n code,\n message,\n data\n } = opts;\n if (!message || typeof message !== \"string\") {\n throw new Error('\"message\" must be a nonempty string');\n }\n return new EthereumProviderError(code, message, data);\n }\n};\n\nexport { providerErrors, rpcErrors };\n","import { Duplex } from 'readable-stream';\nimport { SafeEventEmitter } from './safeEventEmitter.js';\nimport { SerializableError } from './serializableError.js';\n\nconst getRpcPromiseCallback = (resolve, reject, unwrapResult = true) => (error, response) => {\n if (error || response.error) {\n reject(error || response.error);\n } else if (!unwrapResult || Array.isArray(response)) {\n resolve(response);\n } else {\n resolve(response.result);\n }\n};\nfunction createErrorMiddleware(log) {\n return (req, res, next, end) => {\n try {\n // json-rpc-engine will terminate the request when it notices this error\n if (typeof req.method !== \"string\" || !req.method) {\n res.error = new SerializableError({\n code: -32603,\n message: \"invalid method\"\n });\n end();\n return;\n }\n next(done => {\n const {\n error\n } = res;\n if (!error) {\n return done();\n }\n log.error(`Auth - RPC Error: ${error.message}`, error);\n return done();\n });\n } catch (error) {\n log.error(`Auth - RPC Error thrown: ${error.message}`, error);\n res.error = new SerializableError({\n code: -32603,\n message: error.message\n });\n end();\n }\n };\n}\nfunction createStreamMiddleware() {\n const idMap = {};\n function readNoop() {\n return false;\n }\n const events = new SafeEventEmitter();\n function processResponse(res) {\n const context = idMap[res.id];\n if (!context) {\n throw new Error(`StreamMiddleware - Unknown response id \"${res.id}\"`);\n }\n delete idMap[res.id];\n // copy whole res onto original res\n Object.assign(context.res, res);\n // run callback on empty stack,\n // prevent internal stream-handler from catching errors\n setTimeout(context.end);\n }\n function processNotification(res) {\n events.emit(\"notification\", res);\n }\n function processMessage(res, _encoding, cb) {\n let err;\n try {\n const isNotification = !res.id;\n if (isNotification) {\n processNotification(res);\n } else {\n processResponse(res);\n }\n } catch (_err) {\n err = _err;\n }\n // continue processing stream\n cb(err);\n }\n const stream = new Duplex({\n objectMode: true,\n read: readNoop,\n write: processMessage\n });\n const middleware = (req, res, next, end) => {\n // write req to stream\n stream.push(req);\n // register request on id map\n idMap[req.id] = {\n req,\n res,\n next,\n end\n };\n };\n return {\n events,\n middleware,\n stream\n };\n}\nfunction createScaffoldMiddleware(handlers) {\n return (req, res, next, end) => {\n const handler = handlers[req.method];\n // if no handler, return\n if (handler === undefined) {\n return next();\n }\n // if handler is fn, call as middleware\n if (typeof handler === \"function\") {\n return handler(req, res, next, end);\n }\n // if handler is some other value, use as result\n res.result = handler;\n return end();\n };\n}\nfunction createIdRemapMiddleware() {\n return (req, res, next, _end) => {\n const originalId = req.id;\n const newId = Math.random().toString(36).slice(2);\n req.id = newId;\n res.id = newId;\n next(done => {\n req.id = originalId;\n res.id = originalId;\n done();\n });\n };\n}\nfunction createLoggerMiddleware(logger) {\n return (req, res, next, _) => {\n logger.debug(\"REQ\", req, \"RES\", res);\n next();\n };\n}\nfunction createAsyncMiddleware(asyncMiddleware) {\n return async (req, res, next, end) => {\n // nextPromise is the key to the implementation\n // it is resolved by the return handler passed to the\n // \"next\" function\n let resolveNextPromise;\n const nextPromise = new Promise(resolve => {\n resolveNextPromise = resolve;\n });\n let returnHandlerCallback = null;\n let nextWasCalled = false;\n\n // This will be called by the consumer's async middleware.\n const asyncNext = async () => {\n nextWasCalled = true;\n\n // We pass a return handler to next(). When it is called by the engine,\n // the consumer's async middleware will resume executing.\n\n next(runReturnHandlersCallback => {\n // This callback comes from JRPCEngine._runReturnHandlers\n returnHandlerCallback = runReturnHandlersCallback;\n resolveNextPromise();\n });\n await nextPromise;\n };\n try {\n await asyncMiddleware(req, res, asyncNext);\n if (nextWasCalled) {\n await nextPromise; // we must wait until the return handler is called\n returnHandlerCallback(null);\n } else {\n end(null);\n }\n } catch (err) {\n const error = err;\n if (returnHandlerCallback) {\n returnHandlerCallback(error);\n } else {\n end(error);\n }\n }\n };\n}\n\nexport { createAsyncMiddleware, createErrorMiddleware, createIdRemapMiddleware, createLoggerMiddleware, createScaffoldMiddleware, createStreamMiddleware, getRpcPromiseCallback };\n","import _objectSpread from '@babel/runtime/helpers/objectSpread2';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport { Duplex } from 'readable-stream';\nimport { loglevel } from '../utils/logger.js';\nimport { rpcErrors } from './errors/errors.js';\nimport { serializeError, getMessageFromCode } from './errors/utils.js';\nimport { SafeEventEmitter } from './safeEventEmitter.js';\nimport { SerializableError } from './serializableError.js';\n\nfunction constructFallbackError(error) {\n const {\n message = \"\",\n code = -32603,\n stack = \"Stack trace is not available.\",\n data = \"\"\n } = error;\n const codeNumber = parseInt((code === null || code === void 0 ? void 0 : code.toString()) || \"-32603\");\n return {\n message: message || (error === null || error === void 0 ? void 0 : error.toString()) || getMessageFromCode(codeNumber),\n code: codeNumber,\n stack,\n data: data || message || (error === null || error === void 0 ? void 0 : error.toString())\n };\n}\n\n/**\n * A JSON-RPC request and response processor.\n * Give it a stack of middleware, pass it requests, and get back responses.\n */\nclass JRPCEngine extends SafeEventEmitter {\n constructor() {\n super();\n _defineProperty(this, \"_middleware\", void 0);\n this._middleware = [];\n }\n\n /**\n * Serially executes the given stack of middleware.\n *\n * @returns An array of any error encountered during middleware execution,\n * a boolean indicating whether the request was completed, and an array of\n * middleware-defined return handlers.\n */\n static async _runAllMiddleware(req, res, middlewareStack) {\n const returnHandlers = [];\n let error = null;\n let isComplete = false;\n\n // Go down stack of middleware, call and collect optional returnHandlers\n for (const middleware of middlewareStack) {\n [error, isComplete] = await JRPCEngine._runMiddleware(req, res, middleware, returnHandlers);\n if (isComplete) {\n break;\n }\n }\n return [error, isComplete, returnHandlers.reverse()];\n }\n\n /**\n * Runs an individual middleware.\n *\n * @returns An array of any error encountered during middleware execution,\n * and a boolean indicating whether the request should end.\n */\n static _runMiddleware(req, res, middleware, returnHandlers) {\n return new Promise(resolve => {\n const end = err => {\n const error = err || res.error;\n if (error) {\n if (typeof error === \"object\" && Object.keys(error).includes(\"stack\") === false) error.stack = \"Stack trace is not available.\";\n loglevel.error(error);\n res.error = serializeError(error, {\n shouldIncludeStack: true,\n fallbackError: constructFallbackError(error)\n });\n }\n // True indicates that the request should end\n resolve([error, true]);\n };\n const next = returnHandler => {\n if (res.error) {\n end(res.error);\n } else {\n if (returnHandler) {\n if (typeof returnHandler !== \"function\") {\n end(new SerializableError({\n code: -32603,\n message: \"JRPCEngine: 'next' return handlers must be functions\"\n }));\n }\n returnHandlers.push(returnHandler);\n }\n\n // False indicates that the request should not end\n resolve([null, false]);\n }\n };\n try {\n middleware(req, res, next, end);\n } catch (error) {\n end(error);\n }\n });\n }\n\n /**\n * Serially executes array of return handlers. The request and response are\n * assumed to be in their scope.\n */\n static async _runReturnHandlers(handlers) {\n for (const handler of handlers) {\n await new Promise((resolve, reject) => {\n handler(err => err ? reject(err) : resolve());\n });\n }\n }\n\n /**\n * Throws an error if the response has neither a result nor an error, or if\n * the \"isComplete\" flag is falsy.\n */\n static _checkForCompletion(_req, res, isComplete) {\n if (!(\"result\" in res) && !(\"error\" in res)) {\n throw new SerializableError({\n code: -32603,\n message: \"Response has no error or result for request\"\n });\n }\n if (!isComplete) {\n throw new SerializableError({\n code: -32603,\n message: \"Nothing ended request\"\n });\n }\n }\n\n /**\n * Add a middleware function to the engine's middleware stack.\n *\n * @param middleware - The middleware function to add.\n */\n push(middleware) {\n this._middleware.push(middleware);\n }\n\n /**\n * Handle a JSON-RPC request, and return a response.\n *\n * @param request - The request to handle.\n * @param callback - An error-first callback that will receive the response.\n */\n\n /**\n * Handle an array of JSON-RPC requests, and return an array of responses.\n *\n * @param request - The requests to handle.\n * @param callback - An error-first callback that will receive the array of\n * responses.\n */\n\n /**\n * Handle a JSON-RPC request, and return a response.\n *\n * @param request - The request to handle.\n * @returns A promise that resolves with the response, or rejects with an\n * error.\n */\n\n /**\n * Handle an array of JSON-RPC requests, and return an array of responses.\n *\n * @param request - The requests to handle.\n * @returns A promise that resolves with the array of responses, or rejects\n * with an error.\n */\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n handle(req, cb) {\n if (cb && typeof cb !== \"function\") {\n throw new Error('\"callback\" must be a function if provided.');\n }\n if (Array.isArray(req)) {\n if (cb) {\n return this._handleBatch(req, cb);\n }\n return this._handleBatch(req);\n }\n if (cb) {\n return this._handle(req, cb);\n }\n return this._promiseHandle(req);\n }\n\n /**\n * Returns this engine as a middleware function that can be pushed to other\n * engines.\n *\n * @returns This engine as a middleware function.\n */\n asMiddleware() {\n return async (req, res, next, end) => {\n try {\n const [middlewareError, isComplete, returnHandlers] = await JRPCEngine._runAllMiddleware(req, res, this._middleware);\n if (isComplete) {\n await JRPCEngine._runReturnHandlers(returnHandlers);\n return end(middlewareError);\n }\n return next(async handlerCallback => {\n try {\n await JRPCEngine._runReturnHandlers(returnHandlers);\n } catch (error) {\n return handlerCallback(error);\n }\n return handlerCallback();\n });\n } catch (error) {\n return end(error);\n }\n };\n }\n\n /**\n * Like _handle, but for batch requests.\n */\n\n /**\n * Like _handle, but for batch requests.\n */\n\n async _handleBatch(reqs, cb) {\n // The order here is important\n try {\n // 2. Wait for all requests to finish, or throw on some kind of fatal\n // error\n const responses = await Promise.all(\n // 1. Begin executing each request in the order received\n reqs.map(this._promiseHandle.bind(this)));\n\n // 3. Return batch response\n if (cb) {\n return cb(null, responses);\n }\n return responses;\n } catch (error) {\n if (cb) {\n return cb(error);\n }\n throw error;\n }\n }\n\n /**\n * A promise-wrapped _handle.\n */\n _promiseHandle(req) {\n return new Promise((resolve, reject) => {\n this._handle(req, (_err, res) => {\n // There will always be a response, and it will always have any error\n // that is caught and propagated.\n if (_err && res === undefined) {\n reject(_err);\n } else resolve(res);\n }).catch(reject);\n });\n }\n\n /**\n * Ensures that the request object is valid, processes it, and passes any\n * error and the response object to the given callback.\n *\n * Does not reject.\n */\n async _handle(callerReq, cb) {\n if (!callerReq || Array.isArray(callerReq) || typeof callerReq !== \"object\") {\n const error = new SerializableError({\n code: -32603,\n message: \"request must be plain object\"\n });\n return cb(error, {\n id: undefined,\n jsonrpc: \"2.0\",\n error\n });\n }\n if (typeof callerReq.method !== \"string\") {\n const error = new SerializableError({\n code: -32603,\n message: \"method must be string\"\n });\n return cb(error, {\n id: callerReq.id,\n jsonrpc: \"2.0\",\n error\n });\n }\n const req = _objectSpread({}, callerReq);\n const res = {\n id: req.id,\n jsonrpc: req.jsonrpc\n };\n let error = null;\n try {\n await this._processRequest(req, res);\n } catch (_error) {\n // A request handler error, a re-thrown middleware error, or something\n // unexpected.\n error = _error;\n }\n if (error) {\n // Ensure no result is present on an errored response\n delete res.result;\n if (!res.error) {\n if (typeof error === \"object\" && Object.keys(error).includes(\"stack\") === false) error.stack = \"Stack trace is not available.\";\n loglevel.error(error);\n res.error = serializeError(error, {\n shouldIncludeStack: true,\n fallbackError: constructFallbackError(error)\n });\n }\n }\n return cb(error, res);\n }\n\n /**\n * For the given request and response, runs all middleware and their return\n * handlers, if any, and ensures that internal request processing semantics\n * are satisfied.\n */\n async _processRequest(req, res) {\n const [error, isComplete, returnHandlers] = await JRPCEngine._runAllMiddleware(req, res, this._middleware);\n\n // Throw if \"end\" was not called, or if the response has neither a result\n // nor an error.\n JRPCEngine._checkForCompletion(req, res, isComplete);\n\n // The return handlers should run even if an error was encountered during\n // middleware processing.\n await JRPCEngine._runReturnHandlers(returnHandlers);\n\n // Now we re-throw the middleware processing error, if any, to catch it\n // further up the call chain.\n if (error) {\n throw error;\n }\n }\n}\nfunction mergeMiddleware(middlewareStack) {\n const engine = new JRPCEngine();\n middlewareStack.forEach(middleware => {\n engine.push(middleware);\n });\n return engine.asMiddleware();\n}\nfunction createEngineStream(opts) {\n if (!opts || !opts.engine) {\n throw new Error(\"Missing engine parameter!\");\n }\n const {\n engine\n } = opts;\n // eslint-disable-next-line prefer-const\n let stream;\n function read() {\n return undefined;\n }\n function write(req, _encoding, cb) {\n engine.handle(req, (_err, res) => {\n stream.push(res);\n });\n cb();\n }\n stream = new Duplex({\n objectMode: true,\n read,\n write\n });\n\n // forward notifications\n if (engine.on) {\n engine.on(\"notification\", message => {\n stream.push(message);\n });\n }\n return stream;\n}\nfunction providerFromEngine(engine) {\n const provider = new SafeEventEmitter();\n // handle both rpc send methods\n provider.sendAsync = async req => {\n const res = await engine.handle(req);\n if (res.error) {\n if (typeof res.error === \"object\" && Object.keys(res.error).includes(\"stack\") === false) res.error.stack = \"Stack trace is not available.\";\n loglevel.error(res.error);\n const err = serializeError(res.error, {\n fallbackError: constructFallbackError(res.error),\n shouldIncludeStack: true\n });\n throw rpcErrors.internal(err);\n }\n return res.result;\n };\n provider.send = (req, callback) => {\n if (typeof callback !== \"function\") {\n throw new Error('Must provide callback to \"send\" method.');\n }\n engine.handle(req, callback);\n };\n // forward notifications\n if (engine.on) {\n engine.on(\"notification\", message => {\n provider.emit(\"data\", null, message);\n });\n }\n provider.request = async args => {\n const req = _objectSpread(_objectSpread({}, args), {}, {\n id: Math.random().toString(36).slice(2),\n jsonrpc: \"2.0\"\n });\n const res = await provider.sendAsync(req);\n return res;\n };\n return provider;\n}\nfunction providerFromMiddleware(middleware) {\n const engine = new JRPCEngine();\n engine.push(middleware);\n const provider = providerFromEngine(engine);\n return provider;\n}\nfunction providerAsMiddleware(provider) {\n return async (req, res, _next, end) => {\n // send request to provider\n try {\n const providerRes = await provider.sendAsync(req);\n res.result = providerRes;\n return end();\n } catch (error) {\n return end(error);\n }\n };\n}\n\nexport { JRPCEngine, createEngineStream, mergeMiddleware, providerAsMiddleware, providerFromEngine, providerFromMiddleware };\n","import { exists, output } from './_assert.js';\nimport { Hash, createView, toBytes } from './utils.js';\n// Polyfill for Safari 14\nfunction setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n// Choice: a ? b : c\nexport const Chi = (a, b, c) => (a & b) ^ (~a & c);\n// Majority function, true if any two inpust is true\nexport const Maj = (a, b, c) => (a & b) ^ (a & c) ^ (b & c);\n/**\n * Merkle-Damgard hash construction base class.\n * Could be used to create MD5, RIPEMD, SHA1, SHA2.\n */\nexport class HashMD extends Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data) {\n exists(this);\n const { view, buffer, blockLen } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n exists(this);\n output(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in\n // current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4)\n throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length)\n throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++)\n oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n}\n//# sourceMappingURL=_md.js.map","import { HashMD, Chi, Maj } from './_md.js';\nimport { rotr, wrapConstructor } from './utils.js';\n// SHA2-256 need to try 2^128 hashes to execute birthday attack.\n// BTC network is doing 2^67 hashes/sec as per early 2023.\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n// Initial state:\n// first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19\n// prettier-ignore\nconst SHA256_IV = /* @__PURE__ */ new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nclass SHA256 extends HashMD {\n constructor() {\n super(64, 32, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = SHA256_IV[0] | 0;\n this.B = SHA256_IV[1] | 0;\n this.C = SHA256_IV[2] | 0;\n this.D = SHA256_IV[3] | 0;\n this.E = SHA256_IV[4] | 0;\n this.F = SHA256_IV[5] | 0;\n this.G = SHA256_IV[6] | 0;\n this.H = SHA256_IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n// Constants from https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf\nclass SHA224 extends SHA256 {\n constructor() {\n super();\n this.A = 0xc1059ed8 | 0;\n this.B = 0x367cd507 | 0;\n this.C = 0x3070dd17 | 0;\n this.D = 0xf70e5939 | 0;\n this.E = 0xffc00b31 | 0;\n this.F = 0x68581511 | 0;\n this.G = 0x64f98fa7 | 0;\n this.H = 0xbefa4fa4 | 0;\n this.outputLen = 28;\n }\n}\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexport const sha256 = /* @__PURE__ */ wrapConstructor(() => new SHA256());\nexport const sha224 = /* @__PURE__ */ wrapConstructor(() => new SHA224());\n//# sourceMappingURL=sha256.js.map","import { hash as assertHash, bytes as assertBytes, exists as assertExists } from './_assert.js';\nimport { Hash, toBytes } from './utils.js';\n// HMAC (RFC 2104)\nexport class HMAC extends Hash {\n constructor(hash, _key) {\n super();\n this.finished = false;\n this.destroyed = false;\n assertHash(hash);\n const key = toBytes(_key);\n this.iHash = hash.create();\n if (typeof this.iHash.update !== 'function')\n throw new Error('Expected instance of class which extends utils.Hash');\n this.blockLen = this.iHash.blockLen;\n this.outputLen = this.iHash.outputLen;\n const blockLen = this.blockLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create();\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n pad.fill(0);\n }\n update(buf) {\n assertExists(this);\n this.iHash.update(buf);\n return this;\n }\n digestInto(out) {\n assertExists(this);\n assertBytes(out, this.outputLen);\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest() {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to) {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to || (to = Object.create(Object.getPrototypeOf(this), {}));\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n destroy() {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n */\nexport const hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();\nhmac.create = (hash, key) => new HMAC(hash, key);\n//# sourceMappingURL=hmac.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// 100 lines of code in the file are duplicated from noble-hashes (utils).\n// This is OK: `abstract` directory does not use noble-hashes.\n// User may opt-in into using different hashing library. This way, noble-hashes\n// won't be included into their bundle.\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nexport function isBytes(a) {\n return (a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array'));\n}\nexport function abytes(item) {\n if (!isBytes(item))\n throw new Error('Uint8Array expected');\n}\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n abytes(bytes);\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\nexport function numberToHexUnpadded(num) {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n}\nexport function hexToNumber(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n // Big Endian\n return BigInt(hex === '' ? '0' : `0x${hex}`);\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, _A: 65, _F: 70, _a: 97, _f: 102 };\nfunction asciiToBase16(char) {\n if (char >= asciis._0 && char <= asciis._9)\n return char - asciis._0;\n if (char >= asciis._A && char <= asciis._F)\n return char - (asciis._A - 10);\n if (char >= asciis._a && char <= asciis._f)\n return char - (asciis._a - 10);\n return;\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2;\n }\n return array;\n}\n// BE: Big Endian, LE: Little Endian\nexport function bytesToNumberBE(bytes) {\n return hexToNumber(bytesToHex(bytes));\n}\nexport function bytesToNumberLE(bytes) {\n abytes(bytes);\n return hexToNumber(bytesToHex(Uint8Array.from(bytes).reverse()));\n}\nexport function numberToBytesBE(n, len) {\n return hexToBytes(n.toString(16).padStart(len * 2, '0'));\n}\nexport function numberToBytesLE(n, len) {\n return numberToBytesBE(n, len).reverse();\n}\n// Unpadded, rarely used\nexport function numberToVarBytesBE(n) {\n return hexToBytes(numberToHexUnpadded(n));\n}\n/**\n * Takes hex string or Uint8Array, converts to Uint8Array.\n * Validates output length.\n * Will throw error for other types.\n * @param title descriptive title for an error e.g. 'private key'\n * @param hex hex string or Uint8Array\n * @param expectedLength optional, will compare to result array's length\n * @returns\n */\nexport function ensureBytes(title, hex, expectedLength) {\n let res;\n if (typeof hex === 'string') {\n try {\n res = hexToBytes(hex);\n }\n catch (e) {\n throw new Error(`${title} must be valid hex string, got \"${hex}\". Cause: ${e}`);\n }\n }\n else if (isBytes(hex)) {\n // Uint8Array.from() instead of hash.slice() because node.js Buffer\n // is instance of Uint8Array, and its slice() creates **mutable** copy\n res = Uint8Array.from(hex);\n }\n else {\n throw new Error(`${title} must be hex string or Uint8Array`);\n }\n const len = res.length;\n if (typeof expectedLength === 'number' && len !== expectedLength)\n throw new Error(`${title} expected ${expectedLength} bytes, got ${len}`);\n return res;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n// Compares 2 u8a-s in kinda constant time\nexport function equalBytes(a, b) {\n if (a.length !== b.length)\n return false;\n let diff = 0;\n for (let i = 0; i < a.length; i++)\n diff |= a[i] ^ b[i];\n return diff === 0;\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n// Bit operations\n/**\n * Calculates amount of bits in a bigint.\n * Same as `n.toString(2).length`\n */\nexport function bitLen(n) {\n let len;\n for (len = 0; n > _0n; n >>= _1n, len += 1)\n ;\n return len;\n}\n/**\n * Gets single bit at position.\n * NOTE: first bit position is 0 (same as arrays)\n * Same as `!!+Array.from(n.toString(2)).reverse()[pos]`\n */\nexport function bitGet(n, pos) {\n return (n >> BigInt(pos)) & _1n;\n}\n/**\n * Sets single bit at position.\n */\nexport function bitSet(n, pos, value) {\n return n | ((value ? _1n : _0n) << BigInt(pos));\n}\n/**\n * Calculate mask for N bits. Not using ** operator with bigints because of old engines.\n * Same as BigInt(`0b${Array(i).fill('1').join('')}`)\n */\nexport const bitMask = (n) => (_2n << BigInt(n - 1)) - _1n;\n// DRBG\nconst u8n = (data) => new Uint8Array(data); // creates Uint8Array\nconst u8fr = (arr) => Uint8Array.from(arr); // another shortcut\n/**\n * Minimal HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n * @returns function that will call DRBG until 2nd arg returns something meaningful\n * @example\n * const drbg = createHmacDRBG(32, 32, hmac);\n * drbg(seed, bytesToKey); // bytesToKey must return Key or undefined\n */\nexport function createHmacDrbg(hashLen, qByteLen, hmacFn) {\n if (typeof hashLen !== 'number' || hashLen < 2)\n throw new Error('hashLen must be a number');\n if (typeof qByteLen !== 'number' || qByteLen < 2)\n throw new Error('qByteLen must be a number');\n if (typeof hmacFn !== 'function')\n throw new Error('hmacFn must be a function');\n // Step B, Step C: set hashLen to 8*ceil(hlen/8)\n let v = u8n(hashLen); // Minimal non-full-spec HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n let k = u8n(hashLen); // Steps B and C of RFC6979 3.2: set hashLen, in our case always same\n let i = 0; // Iterations counter, will throw when over 1000\n const reset = () => {\n v.fill(1);\n k.fill(0);\n i = 0;\n };\n const h = (...b) => hmacFn(k, v, ...b); // hmac(k)(v, ...values)\n const reseed = (seed = u8n()) => {\n // HMAC-DRBG reseed() function. Steps D-G\n k = h(u8fr([0x00]), seed); // k = hmac(k || v || 0x00 || seed)\n v = h(); // v = hmac(k || v)\n if (seed.length === 0)\n return;\n k = h(u8fr([0x01]), seed); // k = hmac(k || v || 0x01 || seed)\n v = h(); // v = hmac(k || v)\n };\n const gen = () => {\n // HMAC-DRBG generate() function\n if (i++ >= 1000)\n throw new Error('drbg: tried 1000 values');\n let len = 0;\n const out = [];\n while (len < qByteLen) {\n v = h();\n const sl = v.slice();\n out.push(sl);\n len += v.length;\n }\n return concatBytes(...out);\n };\n const genUntil = (seed, pred) => {\n reset();\n reseed(seed); // Steps D-G\n let res = undefined; // Step H: grind until k is in [1..n-1]\n while (!(res = pred(gen())))\n reseed();\n reset();\n return res;\n };\n return genUntil;\n}\n// Validating curves and fields\nconst validatorFns = {\n bigint: (val) => typeof val === 'bigint',\n function: (val) => typeof val === 'function',\n boolean: (val) => typeof val === 'boolean',\n string: (val) => typeof val === 'string',\n stringOrUint8Array: (val) => typeof val === 'string' || isBytes(val),\n isSafeInteger: (val) => Number.isSafeInteger(val),\n array: (val) => Array.isArray(val),\n field: (val, object) => object.Fp.isValid(val),\n hash: (val) => typeof val === 'function' && Number.isSafeInteger(val.outputLen),\n};\n// type Record = { [P in K]: T; }\nexport function validateObject(object, validators, optValidators = {}) {\n const checkField = (fieldName, type, isOptional) => {\n const checkVal = validatorFns[type];\n if (typeof checkVal !== 'function')\n throw new Error(`Invalid validator \"${type}\", expected function`);\n const val = object[fieldName];\n if (isOptional && val === undefined)\n return;\n if (!checkVal(val, object)) {\n throw new Error(`Invalid param ${String(fieldName)}=${val} (${typeof val}), expected ${type}`);\n }\n };\n for (const [fieldName, type] of Object.entries(validators))\n checkField(fieldName, type, false);\n for (const [fieldName, type] of Object.entries(optValidators))\n checkField(fieldName, type, true);\n return object;\n}\n// validate type tests\n// const o: { a: number; b: number; c: number } = { a: 1, b: 5, c: 6 };\n// const z0 = validateObject(o, { a: 'isSafeInteger' }, { c: 'bigint' }); // Ok!\n// // Should fail type-check\n// const z1 = validateObject(o, { a: 'tmp' }, { c: 'zz' });\n// const z2 = validateObject(o, { a: 'isSafeInteger' }, { c: 'zz' });\n// const z3 = validateObject(o, { test: 'boolean', z: 'bug' });\n// const z4 = validateObject(o, { a: 'boolean', z: 'bug' });\n//# sourceMappingURL=utils.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Utilities for modular arithmetics and finite fields\nimport { bitMask, bytesToNumberBE, bytesToNumberLE, ensureBytes, numberToBytesBE, numberToBytesLE, validateObject, } from './utils.js';\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3);\n// prettier-ignore\nconst _4n = BigInt(4), _5n = BigInt(5), _8n = BigInt(8);\n// prettier-ignore\nconst _9n = BigInt(9), _16n = BigInt(16);\n// Calculates a modulo b\nexport function mod(a, b) {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\n/**\n * Efficiently raise num to power and do modular division.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n * @example\n * pow(2n, 6n, 11n) // 64n % 11n == 9n\n */\n// TODO: use field version && remove\nexport function pow(num, power, modulo) {\n if (modulo <= _0n || power < _0n)\n throw new Error('Expected power/modulo > 0');\n if (modulo === _1n)\n return _0n;\n let res = _1n;\n while (power > _0n) {\n if (power & _1n)\n res = (res * num) % modulo;\n num = (num * num) % modulo;\n power >>= _1n;\n }\n return res;\n}\n// Does x ^ (2 ^ power) mod p. pow2(30, 4) == 30 ^ (2 ^ 4)\nexport function pow2(x, power, modulo) {\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= modulo;\n }\n return res;\n}\n// Inverses number over modulo\nexport function invert(number, modulo) {\n if (number === _0n || modulo <= _0n) {\n throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n }\n // Euclidean GCD https://brilliant.org/wiki/extended-euclidean-algorithm/\n // Fermat's little theorem \"CT-like\" version inv(n) = n^(m-2) mod m is 30x slower.\n let a = mod(number, modulo);\n let b = modulo;\n // prettier-ignore\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n // JIT applies optimization if those two lines follow each other\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n // prettier-ignore\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n)\n throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\n/**\n * Tonelli-Shanks square root search algorithm.\n * 1. https://eprint.iacr.org/2012/685.pdf (page 12)\n * 2. Square Roots from 1; 24, 51, 10 to Dan Shanks\n * Will start an infinite loop if field order P is not prime.\n * @param P field order\n * @returns function that takes field Fp (created from P) and number n\n */\nexport function tonelliShanks(P) {\n // Legendre constant: used to calculate Legendre symbol (a | p),\n // which denotes the value of a^((p-1)/2) (mod p).\n // (a | p) ≡ 1 if a is a square (mod p)\n // (a | p) ≡ -1 if a is not a square (mod p)\n // (a | p) ≡ 0 if a ≡ 0 (mod p)\n const legendreC = (P - _1n) / _2n;\n let Q, S, Z;\n // Step 1: By factoring out powers of 2 from p - 1,\n // find q and s such that p - 1 = q*(2^s) with q odd\n for (Q = P - _1n, S = 0; Q % _2n === _0n; Q /= _2n, S++)\n ;\n // Step 2: Select a non-square z such that (z | p) ≡ -1 and set c ≡ zq\n for (Z = _2n; Z < P && pow(Z, legendreC, P) !== P - _1n; Z++)\n ;\n // Fast-path\n if (S === 1) {\n const p1div4 = (P + _1n) / _4n;\n return function tonelliFast(Fp, n) {\n const root = Fp.pow(n, p1div4);\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n return root;\n };\n }\n // Slow-path\n const Q1div2 = (Q + _1n) / _2n;\n return function tonelliSlow(Fp, n) {\n // Step 0: Check that n is indeed a square: (n | p) should not be ≡ -1\n if (Fp.pow(n, legendreC) === Fp.neg(Fp.ONE))\n throw new Error('Cannot find square root');\n let r = S;\n // TODO: will fail at Fp2/etc\n let g = Fp.pow(Fp.mul(Fp.ONE, Z), Q); // will update both x and b\n let x = Fp.pow(n, Q1div2); // first guess at the square root\n let b = Fp.pow(n, Q); // first guess at the fudge factor\n while (!Fp.eql(b, Fp.ONE)) {\n if (Fp.eql(b, Fp.ZERO))\n return Fp.ZERO; // https://en.wikipedia.org/wiki/Tonelli%E2%80%93Shanks_algorithm (4. If t = 0, return r = 0)\n // Find m such b^(2^m)==1\n let m = 1;\n for (let t2 = Fp.sqr(b); m < r; m++) {\n if (Fp.eql(t2, Fp.ONE))\n break;\n t2 = Fp.sqr(t2); // t2 *= t2\n }\n // NOTE: r-m-1 can be bigger than 32, need to convert to bigint before shift, otherwise there will be overflow\n const ge = Fp.pow(g, _1n << BigInt(r - m - 1)); // ge = 2^(r-m-1)\n g = Fp.sqr(ge); // g = ge * ge\n x = Fp.mul(x, ge); // x *= ge\n b = Fp.mul(b, g); // b *= g\n r = m;\n }\n return x;\n };\n}\nexport function FpSqrt(P) {\n // NOTE: different algorithms can give different roots, it is up to user to decide which one they want.\n // For example there is FpSqrtOdd/FpSqrtEven to choice root based on oddness (used for hash-to-curve).\n // P ≡ 3 (mod 4)\n // √n = n^((P+1)/4)\n if (P % _4n === _3n) {\n // Not all roots possible!\n // const ORDER =\n // 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaabn;\n // const NUM = 72057594037927816n;\n const p1div4 = (P + _1n) / _4n;\n return function sqrt3mod4(Fp, n) {\n const root = Fp.pow(n, p1div4);\n // Throw if root**2 != n\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n return root;\n };\n }\n // Atkin algorithm for q ≡ 5 (mod 8), https://eprint.iacr.org/2012/685.pdf (page 10)\n if (P % _8n === _5n) {\n const c1 = (P - _5n) / _8n;\n return function sqrt5mod8(Fp, n) {\n const n2 = Fp.mul(n, _2n);\n const v = Fp.pow(n2, c1);\n const nv = Fp.mul(n, v);\n const i = Fp.mul(Fp.mul(nv, _2n), v);\n const root = Fp.mul(nv, Fp.sub(i, Fp.ONE));\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n return root;\n };\n }\n // P ≡ 9 (mod 16)\n if (P % _16n === _9n) {\n // NOTE: tonelli is too slow for bls-Fp2 calculations even on start\n // Means we cannot use sqrt for constants at all!\n //\n // const c1 = Fp.sqrt(Fp.negate(Fp.ONE)); // 1. c1 = sqrt(-1) in F, i.e., (c1^2) == -1 in F\n // const c2 = Fp.sqrt(c1); // 2. c2 = sqrt(c1) in F, i.e., (c2^2) == c1 in F\n // const c3 = Fp.sqrt(Fp.negate(c1)); // 3. c3 = sqrt(-c1) in F, i.e., (c3^2) == -c1 in F\n // const c4 = (P + _7n) / _16n; // 4. c4 = (q + 7) / 16 # Integer arithmetic\n // sqrt = (x) => {\n // let tv1 = Fp.pow(x, c4); // 1. tv1 = x^c4\n // let tv2 = Fp.mul(c1, tv1); // 2. tv2 = c1 * tv1\n // const tv3 = Fp.mul(c2, tv1); // 3. tv3 = c2 * tv1\n // let tv4 = Fp.mul(c3, tv1); // 4. tv4 = c3 * tv1\n // const e1 = Fp.equals(Fp.square(tv2), x); // 5. e1 = (tv2^2) == x\n // const e2 = Fp.equals(Fp.square(tv3), x); // 6. e2 = (tv3^2) == x\n // tv1 = Fp.cmov(tv1, tv2, e1); // 7. tv1 = CMOV(tv1, tv2, e1) # Select tv2 if (tv2^2) == x\n // tv2 = Fp.cmov(tv4, tv3, e2); // 8. tv2 = CMOV(tv4, tv3, e2) # Select tv3 if (tv3^2) == x\n // const e3 = Fp.equals(Fp.square(tv2), x); // 9. e3 = (tv2^2) == x\n // return Fp.cmov(tv1, tv2, e3); // 10. z = CMOV(tv1, tv2, e3) # Select the sqrt from tv1 and tv2\n // }\n }\n // Other cases: Tonelli-Shanks algorithm\n return tonelliShanks(P);\n}\n// Little-endian check for first LE bit (last BE bit);\nexport const isNegativeLE = (num, modulo) => (mod(num, modulo) & _1n) === _1n;\n// prettier-ignore\nconst FIELD_FIELDS = [\n 'create', 'isValid', 'is0', 'neg', 'inv', 'sqrt', 'sqr',\n 'eql', 'add', 'sub', 'mul', 'pow', 'div',\n 'addN', 'subN', 'mulN', 'sqrN'\n];\nexport function validateField(field) {\n const initial = {\n ORDER: 'bigint',\n MASK: 'bigint',\n BYTES: 'isSafeInteger',\n BITS: 'isSafeInteger',\n };\n const opts = FIELD_FIELDS.reduce((map, val) => {\n map[val] = 'function';\n return map;\n }, initial);\n return validateObject(field, opts);\n}\n// Generic field functions\n/**\n * Same as `pow` but for Fp: non-constant-time.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n */\nexport function FpPow(f, num, power) {\n // Should have same speed as pow for bigints\n // TODO: benchmark!\n if (power < _0n)\n throw new Error('Expected power > 0');\n if (power === _0n)\n return f.ONE;\n if (power === _1n)\n return num;\n let p = f.ONE;\n let d = num;\n while (power > _0n) {\n if (power & _1n)\n p = f.mul(p, d);\n d = f.sqr(d);\n power >>= _1n;\n }\n return p;\n}\n/**\n * Efficiently invert an array of Field elements.\n * `inv(0)` will return `undefined` here: make sure to throw an error.\n */\nexport function FpInvertBatch(f, nums) {\n const tmp = new Array(nums.length);\n // Walk from first to last, multiply them by each other MOD p\n const lastMultiplied = nums.reduce((acc, num, i) => {\n if (f.is0(num))\n return acc;\n tmp[i] = acc;\n return f.mul(acc, num);\n }, f.ONE);\n // Invert last element\n const inverted = f.inv(lastMultiplied);\n // Walk from last to first, multiply them by inverted each other MOD p\n nums.reduceRight((acc, num, i) => {\n if (f.is0(num))\n return acc;\n tmp[i] = f.mul(acc, tmp[i]);\n return f.mul(acc, num);\n }, inverted);\n return tmp;\n}\nexport function FpDiv(f, lhs, rhs) {\n return f.mul(lhs, typeof rhs === 'bigint' ? invert(rhs, f.ORDER) : f.inv(rhs));\n}\n// This function returns True whenever the value x is a square in the field F.\nexport function FpIsSquare(f) {\n const legendreConst = (f.ORDER - _1n) / _2n; // Integer arithmetic\n return (x) => {\n const p = f.pow(x, legendreConst);\n return f.eql(p, f.ZERO) || f.eql(p, f.ONE);\n };\n}\n// CURVE.n lengths\nexport function nLength(n, nBitLength) {\n // Bit size, byte size of CURVE.n\n const _nBitLength = nBitLength !== undefined ? nBitLength : n.toString(2).length;\n const nByteLength = Math.ceil(_nBitLength / 8);\n return { nBitLength: _nBitLength, nByteLength };\n}\n/**\n * Initializes a finite field over prime. **Non-primes are not supported.**\n * Do not init in loop: slow. Very fragile: always run a benchmark on a change.\n * Major performance optimizations:\n * * a) denormalized operations like mulN instead of mul\n * * b) same object shape: never add or remove keys\n * * c) Object.freeze\n * @param ORDER prime positive bigint\n * @param bitLen how many bits the field consumes\n * @param isLE (def: false) if encoding / decoding should be in little-endian\n * @param redef optional faster redefinitions of sqrt and other methods\n */\nexport function Field(ORDER, bitLen, isLE = false, redef = {}) {\n if (ORDER <= _0n)\n throw new Error(`Expected Field ORDER > 0, got ${ORDER}`);\n const { nBitLength: BITS, nByteLength: BYTES } = nLength(ORDER, bitLen);\n if (BYTES > 2048)\n throw new Error('Field lengths over 2048 bytes are not supported');\n const sqrtP = FpSqrt(ORDER);\n const f = Object.freeze({\n ORDER,\n BITS,\n BYTES,\n MASK: bitMask(BITS),\n ZERO: _0n,\n ONE: _1n,\n create: (num) => mod(num, ORDER),\n isValid: (num) => {\n if (typeof num !== 'bigint')\n throw new Error(`Invalid field element: expected bigint, got ${typeof num}`);\n return _0n <= num && num < ORDER; // 0 is valid element, but it's not invertible\n },\n is0: (num) => num === _0n,\n isOdd: (num) => (num & _1n) === _1n,\n neg: (num) => mod(-num, ORDER),\n eql: (lhs, rhs) => lhs === rhs,\n sqr: (num) => mod(num * num, ORDER),\n add: (lhs, rhs) => mod(lhs + rhs, ORDER),\n sub: (lhs, rhs) => mod(lhs - rhs, ORDER),\n mul: (lhs, rhs) => mod(lhs * rhs, ORDER),\n pow: (num, power) => FpPow(f, num, power),\n div: (lhs, rhs) => mod(lhs * invert(rhs, ORDER), ORDER),\n // Same as above, but doesn't normalize\n sqrN: (num) => num * num,\n addN: (lhs, rhs) => lhs + rhs,\n subN: (lhs, rhs) => lhs - rhs,\n mulN: (lhs, rhs) => lhs * rhs,\n inv: (num) => invert(num, ORDER),\n sqrt: redef.sqrt || ((n) => sqrtP(f, n)),\n invertBatch: (lst) => FpInvertBatch(f, lst),\n // TODO: do we really need constant cmov?\n // We don't have const-time bigints anyway, so probably will be not very useful\n cmov: (a, b, c) => (c ? b : a),\n toBytes: (num) => (isLE ? numberToBytesLE(num, BYTES) : numberToBytesBE(num, BYTES)),\n fromBytes: (bytes) => {\n if (bytes.length !== BYTES)\n throw new Error(`Fp.fromBytes: expected ${BYTES}, got ${bytes.length}`);\n return isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n },\n });\n return Object.freeze(f);\n}\nexport function FpSqrtOdd(Fp, elm) {\n if (!Fp.isOdd)\n throw new Error(`Field doesn't have isOdd`);\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? root : Fp.neg(root);\n}\nexport function FpSqrtEven(Fp, elm) {\n if (!Fp.isOdd)\n throw new Error(`Field doesn't have isOdd`);\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? Fp.neg(root) : root;\n}\n/**\n * \"Constant-time\" private key generation utility.\n * Same as mapKeyToField, but accepts less bytes (40 instead of 48 for 32-byte field).\n * Which makes it slightly more biased, less secure.\n * @deprecated use mapKeyToField instead\n */\nexport function hashToPrivateScalar(hash, groupOrder, isLE = false) {\n hash = ensureBytes('privateHash', hash);\n const hashLen = hash.length;\n const minLen = nLength(groupOrder).nByteLength + 8;\n if (minLen < 24 || hashLen < minLen || hashLen > 1024)\n throw new Error(`hashToPrivateScalar: expected ${minLen}-1024 bytes of input, got ${hashLen}`);\n const num = isLE ? bytesToNumberLE(hash) : bytesToNumberBE(hash);\n return mod(num, groupOrder - _1n) + _1n;\n}\n/**\n * Returns total number of bytes consumed by the field element.\n * For example, 32 bytes for usual 256-bit weierstrass curve.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of field\n */\nexport function getFieldBytesLength(fieldOrder) {\n if (typeof fieldOrder !== 'bigint')\n throw new Error('field order must be bigint');\n const bitLength = fieldOrder.toString(2).length;\n return Math.ceil(bitLength / 8);\n}\n/**\n * Returns minimal amount of bytes that can be safely reduced\n * by field order.\n * Should be 2^-128 for 128-bit curve such as P256.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of target hash\n */\nexport function getMinHashLength(fieldOrder) {\n const length = getFieldBytesLength(fieldOrder);\n return length + Math.ceil(length / 2);\n}\n/**\n * \"Constant-time\" private key generation utility.\n * Can take (n + n/2) or more bytes of uniform input e.g. from CSPRNG or KDF\n * and convert them into private scalar, with the modulo bias being negligible.\n * Needs at least 48 bytes of input for 32-byte private key.\n * https://research.kudelskisecurity.com/2020/07/28/the-definitive-guide-to-modulo-bias-and-how-to-avoid-it/\n * FIPS 186-5, A.2 https://csrc.nist.gov/publications/detail/fips/186/5/final\n * RFC 9380, https://www.rfc-editor.org/rfc/rfc9380#section-5\n * @param hash hash output from SHA3 or a similar function\n * @param groupOrder size of subgroup - (e.g. secp256k1.CURVE.n)\n * @param isLE interpret hash bytes as LE num\n * @returns valid private scalar\n */\nexport function mapHashToField(key, fieldOrder, isLE = false) {\n const len = key.length;\n const fieldLen = getFieldBytesLength(fieldOrder);\n const minLen = getMinHashLength(fieldOrder);\n // No small numbers: need to understand bias story. No huge numbers: easier to detect JS timings.\n if (len < 16 || len < minLen || len > 1024)\n throw new Error(`expected ${minLen}-1024 bytes of input, got ${len}`);\n const num = isLE ? bytesToNumberBE(key) : bytesToNumberLE(key);\n // `mod(x, 11)` can sometimes produce 0. `mod(x, 10) + 1` is the same, but no 0\n const reduced = mod(num, fieldOrder - _1n) + _1n;\n return isLE ? numberToBytesLE(reduced, fieldLen) : numberToBytesBE(reduced, fieldLen);\n}\n//# sourceMappingURL=modular.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Abelian group utilities\nimport { validateField, nLength } from './modular.js';\nimport { validateObject } from './utils.js';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\n// Elliptic curve multiplication of Point by scalar. Fragile.\n// Scalars should always be less than curve order: this should be checked inside of a curve itself.\n// Creates precomputation tables for fast multiplication:\n// - private scalar is split by fixed size windows of W bits\n// - every window point is collected from window's table & added to accumulator\n// - since windows are different, same point inside tables won't be accessed more than once per calc\n// - each multiplication is 'Math.ceil(CURVE_ORDER / 𝑊) + 1' point additions (fixed for any scalar)\n// - +1 window is neccessary for wNAF\n// - wNAF reduces table size: 2x less memory + 2x faster generation, but 10% slower multiplication\n// TODO: Research returning 2d JS array of windows, instead of a single window. This would allow\n// windows to be in different memory locations\nexport function wNAF(c, bits) {\n const constTimeNegate = (condition, item) => {\n const neg = item.negate();\n return condition ? neg : item;\n };\n const opts = (W) => {\n const windows = Math.ceil(bits / W) + 1; // +1, because\n const windowSize = 2 ** (W - 1); // -1 because we skip zero\n return { windows, windowSize };\n };\n return {\n constTimeNegate,\n // non-const time multiplication ladder\n unsafeLadder(elm, n) {\n let p = c.ZERO;\n let d = elm;\n while (n > _0n) {\n if (n & _1n)\n p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n },\n /**\n * Creates a wNAF precomputation window. Used for caching.\n * Default window size is set by `utils.precompute()` and is equal to 8.\n * Number of precomputed points depends on the curve size:\n * 2^(𝑊−1) * (Math.ceil(𝑛 / 𝑊) + 1), where:\n * - 𝑊 is the window size\n * - 𝑛 is the bitlength of the curve order.\n * For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224.\n * @returns precomputed point tables flattened to a single array\n */\n precomputeWindow(elm, W) {\n const { windows, windowSize } = opts(W);\n const points = [];\n let p = elm;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n // =1, because we skip zero\n for (let i = 1; i < windowSize; i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n },\n /**\n * Implements ec multiplication using precomputed tables and w-ary non-adjacent form.\n * @param W window size\n * @param precomputes precomputed tables\n * @param n scalar (we don't check here, but should be less than curve order)\n * @returns real and fake (for const-time) points\n */\n wNAF(W, precomputes, n) {\n // TODO: maybe check that scalar is less than group order? wNAF behavious is undefined otherwise\n // But need to carefully remove other checks before wNAF. ORDER == bits here\n const { windows, windowSize } = opts(W);\n let p = c.ZERO;\n let f = c.BASE;\n const mask = BigInt(2 ** W - 1); // Create mask with W ones: 0b1111 for W=4 etc.\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n // Extract W bits.\n let wbits = Number(n & mask);\n // Shift number by W bits.\n n >>= shiftBy;\n // If the bits are bigger than max size, we'll split those.\n // +224 => 256 - 32\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n // This code was first written with assumption that 'f' and 'p' will never be infinity point:\n // since each addition is multiplied by 2 ** W, it cannot cancel each other. However,\n // there is negate now: it is possible that negated element from low value\n // would be the same as high element, which will create carry into next window.\n // It's not obvious how this can fail, but still worth investigating later.\n // Check if we're onto Zero point.\n // Add random point inside current window to f.\n const offset1 = offset;\n const offset2 = offset + Math.abs(wbits) - 1; // -1 because we skip zero\n const cond1 = window % 2 !== 0;\n const cond2 = wbits < 0;\n if (wbits === 0) {\n // The most important part for const-time getPublicKey\n f = f.add(constTimeNegate(cond1, precomputes[offset1]));\n }\n else {\n p = p.add(constTimeNegate(cond2, precomputes[offset2]));\n }\n }\n // JIT-compiler should not eliminate f here, since it will later be used in normalizeZ()\n // Even if the variable is still unused, there are some checks which will\n // throw an exception, so compiler needs to prove they won't happen, which is hard.\n // At this point there is a way to F be infinity-point even if p is not,\n // which makes it less const-time: around 1 bigint multiply.\n return { p, f };\n },\n wNAFCached(P, precomputesMap, n, transform) {\n // @ts-ignore\n const W = P._WINDOW_SIZE || 1;\n // Calculate precomputes on a first run, reuse them after\n let comp = precomputesMap.get(P);\n if (!comp) {\n comp = this.precomputeWindow(P, W);\n if (W !== 1) {\n precomputesMap.set(P, transform(comp));\n }\n }\n return this.wNAF(W, comp, n);\n },\n };\n}\nexport function validateBasic(curve) {\n validateField(curve.Fp);\n validateObject(curve, {\n n: 'bigint',\n h: 'bigint',\n Gx: 'field',\n Gy: 'field',\n }, {\n nBitLength: 'isSafeInteger',\n nByteLength: 'isSafeInteger',\n });\n // Set defaults\n return Object.freeze({\n ...nLength(curve.n, curve.nBitLength),\n ...curve,\n ...{ p: curve.Fp.ORDER },\n });\n}\n//# sourceMappingURL=curve.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Short Weierstrass curve. The formula is: y² = x³ + ax + b\nimport { validateBasic, wNAF } from './curve.js';\nimport * as mod from './modular.js';\nimport * as ut from './utils.js';\nimport { ensureBytes } from './utils.js';\nfunction validatePointOpts(curve) {\n const opts = validateBasic(curve);\n ut.validateObject(opts, {\n a: 'field',\n b: 'field',\n }, {\n allowedPrivateKeyLengths: 'array',\n wrapPrivateKey: 'boolean',\n isTorsionFree: 'function',\n clearCofactor: 'function',\n allowInfinityPoint: 'boolean',\n fromBytes: 'function',\n toBytes: 'function',\n });\n const { endo, Fp, a } = opts;\n if (endo) {\n if (!Fp.eql(a, Fp.ZERO)) {\n throw new Error('Endomorphism can only be defined for Koblitz curves that have a=0');\n }\n if (typeof endo !== 'object' ||\n typeof endo.beta !== 'bigint' ||\n typeof endo.splitScalar !== 'function') {\n throw new Error('Expected endomorphism with beta: bigint and splitScalar: function');\n }\n }\n return Object.freeze({ ...opts });\n}\n// ASN.1 DER encoding utilities\nconst { bytesToNumberBE: b2n, hexToBytes: h2b } = ut;\nexport const DER = {\n // asn.1 DER encoding utils\n Err: class DERErr extends Error {\n constructor(m = '') {\n super(m);\n }\n },\n _parseInt(data) {\n const { Err: E } = DER;\n if (data.length < 2 || data[0] !== 0x02)\n throw new E('Invalid signature integer tag');\n const len = data[1];\n const res = data.subarray(2, len + 2);\n if (!len || res.length !== len)\n throw new E('Invalid signature integer: wrong length');\n // https://crypto.stackexchange.com/a/57734 Leftmost bit of first byte is 'negative' flag,\n // since we always use positive integers here. It must always be empty:\n // - add zero byte if exists\n // - if next byte doesn't have a flag, leading zero is not allowed (minimal encoding)\n if (res[0] & 0b10000000)\n throw new E('Invalid signature integer: negative');\n if (res[0] === 0x00 && !(res[1] & 0b10000000))\n throw new E('Invalid signature integer: unnecessary leading zero');\n return { d: b2n(res), l: data.subarray(len + 2) }; // d is data, l is left\n },\n toSig(hex) {\n // parse DER signature\n const { Err: E } = DER;\n const data = typeof hex === 'string' ? h2b(hex) : hex;\n ut.abytes(data);\n let l = data.length;\n if (l < 2 || data[0] != 0x30)\n throw new E('Invalid signature tag');\n if (data[1] !== l - 2)\n throw new E('Invalid signature: incorrect length');\n const { d: r, l: sBytes } = DER._parseInt(data.subarray(2));\n const { d: s, l: rBytesLeft } = DER._parseInt(sBytes);\n if (rBytesLeft.length)\n throw new E('Invalid signature: left bytes after parsing');\n return { r, s };\n },\n hexFromSig(sig) {\n // Add leading zero if first byte has negative bit enabled. More details in '_parseInt'\n const slice = (s) => (Number.parseInt(s[0], 16) & 0b1000 ? '00' + s : s);\n const h = (num) => {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n };\n const s = slice(h(sig.s));\n const r = slice(h(sig.r));\n const shl = s.length / 2;\n const rhl = r.length / 2;\n const sl = h(shl);\n const rl = h(rhl);\n return `30${h(rhl + shl + 4)}02${rl}${r}02${sl}${s}`;\n },\n};\n// Be friendly to bad ECMAScript parsers by not using bigint literals\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3), _4n = BigInt(4);\nexport function weierstrassPoints(opts) {\n const CURVE = validatePointOpts(opts);\n const { Fp } = CURVE; // All curves has same field / group length as for now, but they can differ\n const toBytes = CURVE.toBytes ||\n ((_c, point, _isCompressed) => {\n const a = point.toAffine();\n return ut.concatBytes(Uint8Array.from([0x04]), Fp.toBytes(a.x), Fp.toBytes(a.y));\n });\n const fromBytes = CURVE.fromBytes ||\n ((bytes) => {\n // const head = bytes[0];\n const tail = bytes.subarray(1);\n // if (head !== 0x04) throw new Error('Only non-compressed encoding is supported');\n const x = Fp.fromBytes(tail.subarray(0, Fp.BYTES));\n const y = Fp.fromBytes(tail.subarray(Fp.BYTES, 2 * Fp.BYTES));\n return { x, y };\n });\n /**\n * y² = x³ + ax + b: Short weierstrass curve formula\n * @returns y²\n */\n function weierstrassEquation(x) {\n const { a, b } = CURVE;\n const x2 = Fp.sqr(x); // x * x\n const x3 = Fp.mul(x2, x); // x2 * x\n return Fp.add(Fp.add(x3, Fp.mul(x, a)), b); // x3 + a * x + b\n }\n // Validate whether the passed curve params are valid.\n // We check if curve equation works for generator point.\n // `assertValidity()` won't work: `isTorsionFree()` is not available at this point in bls12-381.\n // ProjectivePoint class has not been initialized yet.\n if (!Fp.eql(Fp.sqr(CURVE.Gy), weierstrassEquation(CURVE.Gx)))\n throw new Error('bad generator point: equation left != right');\n // Valid group elements reside in range 1..n-1\n function isWithinCurveOrder(num) {\n return typeof num === 'bigint' && _0n < num && num < CURVE.n;\n }\n function assertGE(num) {\n if (!isWithinCurveOrder(num))\n throw new Error('Expected valid bigint: 0 < bigint < curve.n');\n }\n // Validates if priv key is valid and converts it to bigint.\n // Supports options allowedPrivateKeyLengths and wrapPrivateKey.\n function normPrivateKeyToScalar(key) {\n const { allowedPrivateKeyLengths: lengths, nByteLength, wrapPrivateKey, n } = CURVE;\n if (lengths && typeof key !== 'bigint') {\n if (ut.isBytes(key))\n key = ut.bytesToHex(key);\n // Normalize to hex string, pad. E.g. P521 would norm 130-132 char hex to 132-char bytes\n if (typeof key !== 'string' || !lengths.includes(key.length))\n throw new Error('Invalid key');\n key = key.padStart(nByteLength * 2, '0');\n }\n let num;\n try {\n num =\n typeof key === 'bigint'\n ? key\n : ut.bytesToNumberBE(ensureBytes('private key', key, nByteLength));\n }\n catch (error) {\n throw new Error(`private key must be ${nByteLength} bytes, hex or bigint, not ${typeof key}`);\n }\n if (wrapPrivateKey)\n num = mod.mod(num, n); // disabled by default, enabled for BLS\n assertGE(num); // num in range [1..N-1]\n return num;\n }\n const pointPrecomputes = new Map();\n function assertPrjPoint(other) {\n if (!(other instanceof Point))\n throw new Error('ProjectivePoint expected');\n }\n /**\n * Projective Point works in 3d / projective (homogeneous) coordinates: (x, y, z) ∋ (x=x/z, y=y/z)\n * Default Point works in 2d / affine coordinates: (x, y)\n * We're doing calculations in projective, because its operations don't require costly inversion.\n */\n class Point {\n constructor(px, py, pz) {\n this.px = px;\n this.py = py;\n this.pz = pz;\n if (px == null || !Fp.isValid(px))\n throw new Error('x required');\n if (py == null || !Fp.isValid(py))\n throw new Error('y required');\n if (pz == null || !Fp.isValid(pz))\n throw new Error('z required');\n }\n // Does not validate if the point is on-curve.\n // Use fromHex instead, or call assertValidity() later.\n static fromAffine(p) {\n const { x, y } = p || {};\n if (!p || !Fp.isValid(x) || !Fp.isValid(y))\n throw new Error('invalid affine point');\n if (p instanceof Point)\n throw new Error('projective point not allowed');\n const is0 = (i) => Fp.eql(i, Fp.ZERO);\n // fromAffine(x:0, y:0) would produce (x:0, y:0, z:1), but we need (x:0, y:1, z:0)\n if (is0(x) && is0(y))\n return Point.ZERO;\n return new Point(x, y, Fp.ONE);\n }\n get x() {\n return this.toAffine().x;\n }\n get y() {\n return this.toAffine().y;\n }\n /**\n * Takes a bunch of Projective Points but executes only one\n * inversion on all of them. Inversion is very slow operation,\n * so this improves performance massively.\n * Optimization: converts a list of projective points to a list of identical points with Z=1.\n */\n static normalizeZ(points) {\n const toInv = Fp.invertBatch(points.map((p) => p.pz));\n return points.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);\n }\n /**\n * Converts hash string or Uint8Array to Point.\n * @param hex short/long ECDSA hex\n */\n static fromHex(hex) {\n const P = Point.fromAffine(fromBytes(ensureBytes('pointHex', hex)));\n P.assertValidity();\n return P;\n }\n // Multiplies generator point by privateKey.\n static fromPrivateKey(privateKey) {\n return Point.BASE.multiply(normPrivateKeyToScalar(privateKey));\n }\n // \"Private method\", don't use it directly\n _setWindowSize(windowSize) {\n this._WINDOW_SIZE = windowSize;\n pointPrecomputes.delete(this);\n }\n // A point on curve is valid if it conforms to equation.\n assertValidity() {\n if (this.is0()) {\n // (0, 1, 0) aka ZERO is invalid in most contexts.\n // In BLS, ZERO can be serialized, so we allow it.\n // (0, 0, 0) is wrong representation of ZERO and is always invalid.\n if (CURVE.allowInfinityPoint && !Fp.is0(this.py))\n return;\n throw new Error('bad point: ZERO');\n }\n // Some 3rd-party test vectors require different wording between here & `fromCompressedHex`\n const { x, y } = this.toAffine();\n // Check if x, y are valid field elements\n if (!Fp.isValid(x) || !Fp.isValid(y))\n throw new Error('bad point: x or y not FE');\n const left = Fp.sqr(y); // y²\n const right = weierstrassEquation(x); // x³ + ax + b\n if (!Fp.eql(left, right))\n throw new Error('bad point: equation left != right');\n if (!this.isTorsionFree())\n throw new Error('bad point: not in prime-order subgroup');\n }\n hasEvenY() {\n const { y } = this.toAffine();\n if (Fp.isOdd)\n return !Fp.isOdd(y);\n throw new Error(\"Field doesn't support isOdd\");\n }\n /**\n * Compare one point to another.\n */\n equals(other) {\n assertPrjPoint(other);\n const { px: X1, py: Y1, pz: Z1 } = this;\n const { px: X2, py: Y2, pz: Z2 } = other;\n const U1 = Fp.eql(Fp.mul(X1, Z2), Fp.mul(X2, Z1));\n const U2 = Fp.eql(Fp.mul(Y1, Z2), Fp.mul(Y2, Z1));\n return U1 && U2;\n }\n /**\n * Flips point to one corresponding to (x, -y) in Affine coordinates.\n */\n negate() {\n return new Point(this.px, Fp.neg(this.py), this.pz);\n }\n // Renes-Costello-Batina exception-free doubling formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 3\n // Cost: 8M + 3S + 3*a + 2*b3 + 15add.\n double() {\n const { a, b } = CURVE;\n const b3 = Fp.mul(b, _3n);\n const { px: X1, py: Y1, pz: Z1 } = this;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n let t0 = Fp.mul(X1, X1); // step 1\n let t1 = Fp.mul(Y1, Y1);\n let t2 = Fp.mul(Z1, Z1);\n let t3 = Fp.mul(X1, Y1);\n t3 = Fp.add(t3, t3); // step 5\n Z3 = Fp.mul(X1, Z1);\n Z3 = Fp.add(Z3, Z3);\n X3 = Fp.mul(a, Z3);\n Y3 = Fp.mul(b3, t2);\n Y3 = Fp.add(X3, Y3); // step 10\n X3 = Fp.sub(t1, Y3);\n Y3 = Fp.add(t1, Y3);\n Y3 = Fp.mul(X3, Y3);\n X3 = Fp.mul(t3, X3);\n Z3 = Fp.mul(b3, Z3); // step 15\n t2 = Fp.mul(a, t2);\n t3 = Fp.sub(t0, t2);\n t3 = Fp.mul(a, t3);\n t3 = Fp.add(t3, Z3);\n Z3 = Fp.add(t0, t0); // step 20\n t0 = Fp.add(Z3, t0);\n t0 = Fp.add(t0, t2);\n t0 = Fp.mul(t0, t3);\n Y3 = Fp.add(Y3, t0);\n t2 = Fp.mul(Y1, Z1); // step 25\n t2 = Fp.add(t2, t2);\n t0 = Fp.mul(t2, t3);\n X3 = Fp.sub(X3, t0);\n Z3 = Fp.mul(t2, t1);\n Z3 = Fp.add(Z3, Z3); // step 30\n Z3 = Fp.add(Z3, Z3);\n return new Point(X3, Y3, Z3);\n }\n // Renes-Costello-Batina exception-free addition formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 1\n // Cost: 12M + 0S + 3*a + 3*b3 + 23add.\n add(other) {\n assertPrjPoint(other);\n const { px: X1, py: Y1, pz: Z1 } = this;\n const { px: X2, py: Y2, pz: Z2 } = other;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n const a = CURVE.a;\n const b3 = Fp.mul(CURVE.b, _3n);\n let t0 = Fp.mul(X1, X2); // step 1\n let t1 = Fp.mul(Y1, Y2);\n let t2 = Fp.mul(Z1, Z2);\n let t3 = Fp.add(X1, Y1);\n let t4 = Fp.add(X2, Y2); // step 5\n t3 = Fp.mul(t3, t4);\n t4 = Fp.add(t0, t1);\n t3 = Fp.sub(t3, t4);\n t4 = Fp.add(X1, Z1);\n let t5 = Fp.add(X2, Z2); // step 10\n t4 = Fp.mul(t4, t5);\n t5 = Fp.add(t0, t2);\n t4 = Fp.sub(t4, t5);\n t5 = Fp.add(Y1, Z1);\n X3 = Fp.add(Y2, Z2); // step 15\n t5 = Fp.mul(t5, X3);\n X3 = Fp.add(t1, t2);\n t5 = Fp.sub(t5, X3);\n Z3 = Fp.mul(a, t4);\n X3 = Fp.mul(b3, t2); // step 20\n Z3 = Fp.add(X3, Z3);\n X3 = Fp.sub(t1, Z3);\n Z3 = Fp.add(t1, Z3);\n Y3 = Fp.mul(X3, Z3);\n t1 = Fp.add(t0, t0); // step 25\n t1 = Fp.add(t1, t0);\n t2 = Fp.mul(a, t2);\n t4 = Fp.mul(b3, t4);\n t1 = Fp.add(t1, t2);\n t2 = Fp.sub(t0, t2); // step 30\n t2 = Fp.mul(a, t2);\n t4 = Fp.add(t4, t2);\n t0 = Fp.mul(t1, t4);\n Y3 = Fp.add(Y3, t0);\n t0 = Fp.mul(t5, t4); // step 35\n X3 = Fp.mul(t3, X3);\n X3 = Fp.sub(X3, t0);\n t0 = Fp.mul(t3, t1);\n Z3 = Fp.mul(t5, Z3);\n Z3 = Fp.add(Z3, t0); // step 40\n return new Point(X3, Y3, Z3);\n }\n subtract(other) {\n return this.add(other.negate());\n }\n is0() {\n return this.equals(Point.ZERO);\n }\n wNAF(n) {\n return wnaf.wNAFCached(this, pointPrecomputes, n, (comp) => {\n const toInv = Fp.invertBatch(comp.map((p) => p.pz));\n return comp.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);\n });\n }\n /**\n * Non-constant-time multiplication. Uses double-and-add algorithm.\n * It's faster, but should only be used when you don't care about\n * an exposed private key e.g. sig verification, which works over *public* keys.\n */\n multiplyUnsafe(n) {\n const I = Point.ZERO;\n if (n === _0n)\n return I;\n assertGE(n); // Will throw on 0\n if (n === _1n)\n return this;\n const { endo } = CURVE;\n if (!endo)\n return wnaf.unsafeLadder(this, n);\n // Apply endomorphism\n let { k1neg, k1, k2neg, k2 } = endo.splitScalar(n);\n let k1p = I;\n let k2p = I;\n let d = this;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n)\n k1p = k1p.add(d);\n if (k2 & _1n)\n k2p = k2p.add(d);\n d = d.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n return k1p.add(k2p);\n }\n /**\n * Constant time multiplication.\n * Uses wNAF method. Windowed method may be 10% faster,\n * but takes 2x longer to generate and consumes 2x memory.\n * Uses precomputes when available.\n * Uses endomorphism for Koblitz curves.\n * @param scalar by which the point would be multiplied\n * @returns New point\n */\n multiply(scalar) {\n assertGE(scalar);\n let n = scalar;\n let point, fake; // Fake point is used to const-time mult\n const { endo } = CURVE;\n if (endo) {\n const { k1neg, k1, k2neg, k2 } = endo.splitScalar(n);\n let { p: k1p, f: f1p } = this.wNAF(k1);\n let { p: k2p, f: f2p } = this.wNAF(k2);\n k1p = wnaf.constTimeNegate(k1neg, k1p);\n k2p = wnaf.constTimeNegate(k2neg, k2p);\n k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n point = k1p.add(k2p);\n fake = f1p.add(f2p);\n }\n else {\n const { p, f } = this.wNAF(n);\n point = p;\n fake = f;\n }\n // Normalize `z` for both points, but return only real one\n return Point.normalizeZ([point, fake])[0];\n }\n /**\n * Efficiently calculate `aP + bQ`. Unsafe, can expose private key, if used incorrectly.\n * Not using Strauss-Shamir trick: precomputation tables are faster.\n * The trick could be useful if both P and Q are not G (not in our case).\n * @returns non-zero affine point\n */\n multiplyAndAddUnsafe(Q, a, b) {\n const G = Point.BASE; // No Strauss-Shamir trick: we have 10% faster G precomputes\n const mul = (P, a // Select faster multiply() method\n ) => (a === _0n || a === _1n || !P.equals(G) ? P.multiplyUnsafe(a) : P.multiply(a));\n const sum = mul(this, a).add(mul(Q, b));\n return sum.is0() ? undefined : sum;\n }\n // Converts Projective point to affine (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n // (x, y, z) ∋ (x=x/z, y=y/z)\n toAffine(iz) {\n const { px: x, py: y, pz: z } = this;\n const is0 = this.is0();\n // If invZ was 0, we return zero point. However we still want to execute\n // all operations, so we replace invZ with a random number, 1.\n if (iz == null)\n iz = is0 ? Fp.ONE : Fp.inv(z);\n const ax = Fp.mul(x, iz);\n const ay = Fp.mul(y, iz);\n const zz = Fp.mul(z, iz);\n if (is0)\n return { x: Fp.ZERO, y: Fp.ZERO };\n if (!Fp.eql(zz, Fp.ONE))\n throw new Error('invZ was invalid');\n return { x: ax, y: ay };\n }\n isTorsionFree() {\n const { h: cofactor, isTorsionFree } = CURVE;\n if (cofactor === _1n)\n return true; // No subgroups, always torsion-free\n if (isTorsionFree)\n return isTorsionFree(Point, this);\n throw new Error('isTorsionFree() has not been declared for the elliptic curve');\n }\n clearCofactor() {\n const { h: cofactor, clearCofactor } = CURVE;\n if (cofactor === _1n)\n return this; // Fast-path\n if (clearCofactor)\n return clearCofactor(Point, this);\n return this.multiplyUnsafe(CURVE.h);\n }\n toRawBytes(isCompressed = true) {\n this.assertValidity();\n return toBytes(Point, this, isCompressed);\n }\n toHex(isCompressed = true) {\n return ut.bytesToHex(this.toRawBytes(isCompressed));\n }\n }\n Point.BASE = new Point(CURVE.Gx, CURVE.Gy, Fp.ONE);\n Point.ZERO = new Point(Fp.ZERO, Fp.ONE, Fp.ZERO);\n const _bits = CURVE.nBitLength;\n const wnaf = wNAF(Point, CURVE.endo ? Math.ceil(_bits / 2) : _bits);\n // Validate if generator point is on curve\n return {\n CURVE,\n ProjectivePoint: Point,\n normPrivateKeyToScalar,\n weierstrassEquation,\n isWithinCurveOrder,\n };\n}\nfunction validateOpts(curve) {\n const opts = validateBasic(curve);\n ut.validateObject(opts, {\n hash: 'hash',\n hmac: 'function',\n randomBytes: 'function',\n }, {\n bits2int: 'function',\n bits2int_modN: 'function',\n lowS: 'boolean',\n });\n return Object.freeze({ lowS: true, ...opts });\n}\nexport function weierstrass(curveDef) {\n const CURVE = validateOpts(curveDef);\n const { Fp, n: CURVE_ORDER } = CURVE;\n const compressedLen = Fp.BYTES + 1; // e.g. 33 for 32\n const uncompressedLen = 2 * Fp.BYTES + 1; // e.g. 65 for 32\n function isValidFieldElement(num) {\n return _0n < num && num < Fp.ORDER; // 0 is banned since it's not invertible FE\n }\n function modN(a) {\n return mod.mod(a, CURVE_ORDER);\n }\n function invN(a) {\n return mod.invert(a, CURVE_ORDER);\n }\n const { ProjectivePoint: Point, normPrivateKeyToScalar, weierstrassEquation, isWithinCurveOrder, } = weierstrassPoints({\n ...CURVE,\n toBytes(_c, point, isCompressed) {\n const a = point.toAffine();\n const x = Fp.toBytes(a.x);\n const cat = ut.concatBytes;\n if (isCompressed) {\n return cat(Uint8Array.from([point.hasEvenY() ? 0x02 : 0x03]), x);\n }\n else {\n return cat(Uint8Array.from([0x04]), x, Fp.toBytes(a.y));\n }\n },\n fromBytes(bytes) {\n const len = bytes.length;\n const head = bytes[0];\n const tail = bytes.subarray(1);\n // this.assertValidity() is done inside of fromHex\n if (len === compressedLen && (head === 0x02 || head === 0x03)) {\n const x = ut.bytesToNumberBE(tail);\n if (!isValidFieldElement(x))\n throw new Error('Point is not on curve');\n const y2 = weierstrassEquation(x); // y² = x³ + ax + b\n let y;\n try {\n y = Fp.sqrt(y2); // y = y² ^ (p+1)/4\n }\n catch (sqrtError) {\n const suffix = sqrtError instanceof Error ? ': ' + sqrtError.message : '';\n throw new Error('Point is not on curve' + suffix);\n }\n const isYOdd = (y & _1n) === _1n;\n // ECDSA\n const isHeadOdd = (head & 1) === 1;\n if (isHeadOdd !== isYOdd)\n y = Fp.neg(y);\n return { x, y };\n }\n else if (len === uncompressedLen && head === 0x04) {\n const x = Fp.fromBytes(tail.subarray(0, Fp.BYTES));\n const y = Fp.fromBytes(tail.subarray(Fp.BYTES, 2 * Fp.BYTES));\n return { x, y };\n }\n else {\n throw new Error(`Point of length ${len} was invalid. Expected ${compressedLen} compressed bytes or ${uncompressedLen} uncompressed bytes`);\n }\n },\n });\n const numToNByteStr = (num) => ut.bytesToHex(ut.numberToBytesBE(num, CURVE.nByteLength));\n function isBiggerThanHalfOrder(number) {\n const HALF = CURVE_ORDER >> _1n;\n return number > HALF;\n }\n function normalizeS(s) {\n return isBiggerThanHalfOrder(s) ? modN(-s) : s;\n }\n // slice bytes num\n const slcNum = (b, from, to) => ut.bytesToNumberBE(b.slice(from, to));\n /**\n * ECDSA signature with its (r, s) properties. Supports DER & compact representations.\n */\n class Signature {\n constructor(r, s, recovery) {\n this.r = r;\n this.s = s;\n this.recovery = recovery;\n this.assertValidity();\n }\n // pair (bytes of r, bytes of s)\n static fromCompact(hex) {\n const l = CURVE.nByteLength;\n hex = ensureBytes('compactSignature', hex, l * 2);\n return new Signature(slcNum(hex, 0, l), slcNum(hex, l, 2 * l));\n }\n // DER encoded ECDSA signature\n // https://bitcoin.stackexchange.com/questions/57644/what-are-the-parts-of-a-bitcoin-transaction-input-script\n static fromDER(hex) {\n const { r, s } = DER.toSig(ensureBytes('DER', hex));\n return new Signature(r, s);\n }\n assertValidity() {\n // can use assertGE here\n if (!isWithinCurveOrder(this.r))\n throw new Error('r must be 0 < r < CURVE.n');\n if (!isWithinCurveOrder(this.s))\n throw new Error('s must be 0 < s < CURVE.n');\n }\n addRecoveryBit(recovery) {\n return new Signature(this.r, this.s, recovery);\n }\n recoverPublicKey(msgHash) {\n const { r, s, recovery: rec } = this;\n const h = bits2int_modN(ensureBytes('msgHash', msgHash)); // Truncate hash\n if (rec == null || ![0, 1, 2, 3].includes(rec))\n throw new Error('recovery id invalid');\n const radj = rec === 2 || rec === 3 ? r + CURVE.n : r;\n if (radj >= Fp.ORDER)\n throw new Error('recovery id 2 or 3 invalid');\n const prefix = (rec & 1) === 0 ? '02' : '03';\n const R = Point.fromHex(prefix + numToNByteStr(radj));\n const ir = invN(radj); // r^-1\n const u1 = modN(-h * ir); // -hr^-1\n const u2 = modN(s * ir); // sr^-1\n const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2); // (sr^-1)R-(hr^-1)G = -(hr^-1)G + (sr^-1)\n if (!Q)\n throw new Error('point at infinify'); // unsafe is fine: no priv data leaked\n Q.assertValidity();\n return Q;\n }\n // Signatures should be low-s, to prevent malleability.\n hasHighS() {\n return isBiggerThanHalfOrder(this.s);\n }\n normalizeS() {\n return this.hasHighS() ? new Signature(this.r, modN(-this.s), this.recovery) : this;\n }\n // DER-encoded\n toDERRawBytes() {\n return ut.hexToBytes(this.toDERHex());\n }\n toDERHex() {\n return DER.hexFromSig({ r: this.r, s: this.s });\n }\n // padded bytes of r, then padded bytes of s\n toCompactRawBytes() {\n return ut.hexToBytes(this.toCompactHex());\n }\n toCompactHex() {\n return numToNByteStr(this.r) + numToNByteStr(this.s);\n }\n }\n const utils = {\n isValidPrivateKey(privateKey) {\n try {\n normPrivateKeyToScalar(privateKey);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n normPrivateKeyToScalar: normPrivateKeyToScalar,\n /**\n * Produces cryptographically secure private key from random of size\n * (groupLen + ceil(groupLen / 2)) with modulo bias being negligible.\n */\n randomPrivateKey: () => {\n const length = mod.getMinHashLength(CURVE.n);\n return mod.mapHashToField(CURVE.randomBytes(length), CURVE.n);\n },\n /**\n * Creates precompute table for an arbitrary EC point. Makes point \"cached\".\n * Allows to massively speed-up `point.multiply(scalar)`.\n * @returns cached point\n * @example\n * const fast = utils.precompute(8, ProjectivePoint.fromHex(someonesPubKey));\n * fast.multiply(privKey); // much faster ECDH now\n */\n precompute(windowSize = 8, point = Point.BASE) {\n point._setWindowSize(windowSize);\n point.multiply(BigInt(3)); // 3 is arbitrary, just need any number here\n return point;\n },\n };\n /**\n * Computes public key for a private key. Checks for validity of the private key.\n * @param privateKey private key\n * @param isCompressed whether to return compact (default), or full key\n * @returns Public key, full when isCompressed=false; short when isCompressed=true\n */\n function getPublicKey(privateKey, isCompressed = true) {\n return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n }\n /**\n * Quick and dirty check for item being public key. Does not validate hex, or being on-curve.\n */\n function isProbPub(item) {\n const arr = ut.isBytes(item);\n const str = typeof item === 'string';\n const len = (arr || str) && item.length;\n if (arr)\n return len === compressedLen || len === uncompressedLen;\n if (str)\n return len === 2 * compressedLen || len === 2 * uncompressedLen;\n if (item instanceof Point)\n return true;\n return false;\n }\n /**\n * ECDH (Elliptic Curve Diffie Hellman).\n * Computes shared public key from private key and public key.\n * Checks: 1) private key validity 2) shared key is on-curve.\n * Does NOT hash the result.\n * @param privateA private key\n * @param publicB different public key\n * @param isCompressed whether to return compact (default), or full key\n * @returns shared public key\n */\n function getSharedSecret(privateA, publicB, isCompressed = true) {\n if (isProbPub(privateA))\n throw new Error('first arg must be private key');\n if (!isProbPub(publicB))\n throw new Error('second arg must be public key');\n const b = Point.fromHex(publicB); // check for being on-curve\n return b.multiply(normPrivateKeyToScalar(privateA)).toRawBytes(isCompressed);\n }\n // RFC6979: ensure ECDSA msg is X bytes and < N. RFC suggests optional truncating via bits2octets.\n // FIPS 186-4 4.6 suggests the leftmost min(nBitLen, outLen) bits, which matches bits2int.\n // bits2int can produce res>N, we can do mod(res, N) since the bitLen is the same.\n // int2octets can't be used; pads small msgs with 0: unacceptatble for trunc as per RFC vectors\n const bits2int = CURVE.bits2int ||\n function (bytes) {\n // For curves with nBitLength % 8 !== 0: bits2octets(bits2octets(m)) !== bits2octets(m)\n // for some cases, since bytes.length * 8 is not actual bitLength.\n const num = ut.bytesToNumberBE(bytes); // check for == u8 done here\n const delta = bytes.length * 8 - CURVE.nBitLength; // truncate to nBitLength leftmost bits\n return delta > 0 ? num >> BigInt(delta) : num;\n };\n const bits2int_modN = CURVE.bits2int_modN ||\n function (bytes) {\n return modN(bits2int(bytes)); // can't use bytesToNumberBE here\n };\n // NOTE: pads output with zero as per spec\n const ORDER_MASK = ut.bitMask(CURVE.nBitLength);\n /**\n * Converts to bytes. Checks if num in `[0..ORDER_MASK-1]` e.g.: `[0..2^256-1]`.\n */\n function int2octets(num) {\n if (typeof num !== 'bigint')\n throw new Error('bigint expected');\n if (!(_0n <= num && num < ORDER_MASK))\n throw new Error(`bigint expected < 2^${CURVE.nBitLength}`);\n // works with order, can have different size than numToField!\n return ut.numberToBytesBE(num, CURVE.nByteLength);\n }\n // Steps A, D of RFC6979 3.2\n // Creates RFC6979 seed; converts msg/privKey to numbers.\n // Used only in sign, not in verify.\n // NOTE: we cannot assume here that msgHash has same amount of bytes as curve order, this will be wrong at least for P521.\n // Also it can be bigger for P224 + SHA256\n function prepSig(msgHash, privateKey, opts = defaultSigOpts) {\n if (['recovered', 'canonical'].some((k) => k in opts))\n throw new Error('sign() legacy options not supported');\n const { hash, randomBytes } = CURVE;\n let { lowS, prehash, extraEntropy: ent } = opts; // generates low-s sigs by default\n if (lowS == null)\n lowS = true; // RFC6979 3.2: we skip step A, because we already provide hash\n msgHash = ensureBytes('msgHash', msgHash);\n if (prehash)\n msgHash = ensureBytes('prehashed msgHash', hash(msgHash));\n // We can't later call bits2octets, since nested bits2int is broken for curves\n // with nBitLength % 8 !== 0. Because of that, we unwrap it here as int2octets call.\n // const bits2octets = (bits) => int2octets(bits2int_modN(bits))\n const h1int = bits2int_modN(msgHash);\n const d = normPrivateKeyToScalar(privateKey); // validate private key, convert to bigint\n const seedArgs = [int2octets(d), int2octets(h1int)];\n // extraEntropy. RFC6979 3.6: additional k' (optional).\n if (ent != null && ent !== false) {\n // K = HMAC_K(V || 0x00 || int2octets(x) || bits2octets(h1) || k')\n const e = ent === true ? randomBytes(Fp.BYTES) : ent; // generate random bytes OR pass as-is\n seedArgs.push(ensureBytes('extraEntropy', e)); // check for being bytes\n }\n const seed = ut.concatBytes(...seedArgs); // Step D of RFC6979 3.2\n const m = h1int; // NOTE: no need to call bits2int second time here, it is inside truncateHash!\n // Converts signature params into point w r/s, checks result for validity.\n function k2sig(kBytes) {\n // RFC 6979 Section 3.2, step 3: k = bits2int(T)\n const k = bits2int(kBytes); // Cannot use fields methods, since it is group element\n if (!isWithinCurveOrder(k))\n return; // Important: all mod() calls here must be done over N\n const ik = invN(k); // k^-1 mod n\n const q = Point.BASE.multiply(k).toAffine(); // q = Gk\n const r = modN(q.x); // r = q.x mod n\n if (r === _0n)\n return;\n // Can use scalar blinding b^-1(bm + bdr) where b ∈ [1,q−1] according to\n // https://tches.iacr.org/index.php/TCHES/article/view/7337/6509. We've decided against it:\n // a) dependency on CSPRNG b) 15% slowdown c) doesn't really help since bigints are not CT\n const s = modN(ik * modN(m + r * d)); // Not using blinding here\n if (s === _0n)\n return;\n let recovery = (q.x === r ? 0 : 2) | Number(q.y & _1n); // recovery bit (2 or 3, when q.x > n)\n let normS = s;\n if (lowS && isBiggerThanHalfOrder(s)) {\n normS = normalizeS(s); // if lowS was passed, ensure s is always\n recovery ^= 1; // // in the bottom half of N\n }\n return new Signature(r, normS, recovery); // use normS, not s\n }\n return { seed, k2sig };\n }\n const defaultSigOpts = { lowS: CURVE.lowS, prehash: false };\n const defaultVerOpts = { lowS: CURVE.lowS, prehash: false };\n /**\n * Signs message hash with a private key.\n * ```\n * sign(m, d, k) where\n * (x, y) = G × k\n * r = x mod n\n * s = (m + dr)/k mod n\n * ```\n * @param msgHash NOT message. msg needs to be hashed to `msgHash`, or use `prehash`.\n * @param privKey private key\n * @param opts lowS for non-malleable sigs. extraEntropy for mixing randomness into k. prehash will hash first arg.\n * @returns signature with recovery param\n */\n function sign(msgHash, privKey, opts = defaultSigOpts) {\n const { seed, k2sig } = prepSig(msgHash, privKey, opts); // Steps A, D of RFC6979 3.2.\n const C = CURVE;\n const drbg = ut.createHmacDrbg(C.hash.outputLen, C.nByteLength, C.hmac);\n return drbg(seed, k2sig); // Steps B, C, D, E, F, G\n }\n // Enable precomputes. Slows down first publicKey computation by 20ms.\n Point.BASE._setWindowSize(8);\n // utils.precompute(8, ProjectivePoint.BASE)\n /**\n * Verifies a signature against message hash and public key.\n * Rejects lowS signatures by default: to override,\n * specify option `{lowS: false}`. Implements section 4.1.4 from https://www.secg.org/sec1-v2.pdf:\n *\n * ```\n * verify(r, s, h, P) where\n * U1 = hs^-1 mod n\n * U2 = rs^-1 mod n\n * R = U1⋅G - U2⋅P\n * mod(R.x, n) == r\n * ```\n */\n function verify(signature, msgHash, publicKey, opts = defaultVerOpts) {\n const sg = signature;\n msgHash = ensureBytes('msgHash', msgHash);\n publicKey = ensureBytes('publicKey', publicKey);\n if ('strict' in opts)\n throw new Error('options.strict was renamed to lowS');\n const { lowS, prehash } = opts;\n let _sig = undefined;\n let P;\n try {\n if (typeof sg === 'string' || ut.isBytes(sg)) {\n // Signature can be represented in 2 ways: compact (2*nByteLength) & DER (variable-length).\n // Since DER can also be 2*nByteLength bytes, we check for it first.\n try {\n _sig = Signature.fromDER(sg);\n }\n catch (derError) {\n if (!(derError instanceof DER.Err))\n throw derError;\n _sig = Signature.fromCompact(sg);\n }\n }\n else if (typeof sg === 'object' && typeof sg.r === 'bigint' && typeof sg.s === 'bigint') {\n const { r, s } = sg;\n _sig = new Signature(r, s);\n }\n else {\n throw new Error('PARSE');\n }\n P = Point.fromHex(publicKey);\n }\n catch (error) {\n if (error.message === 'PARSE')\n throw new Error(`signature must be Signature instance, Uint8Array or hex string`);\n return false;\n }\n if (lowS && _sig.hasHighS())\n return false;\n if (prehash)\n msgHash = CURVE.hash(msgHash);\n const { r, s } = _sig;\n const h = bits2int_modN(msgHash); // Cannot use fields methods, since it is group element\n const is = invN(s); // s^-1\n const u1 = modN(h * is); // u1 = hs^-1 mod n\n const u2 = modN(r * is); // u2 = rs^-1 mod n\n const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2)?.toAffine(); // R = u1⋅G + u2⋅P\n if (!R)\n return false;\n const v = modN(R.x);\n return v === r;\n }\n return {\n CURVE,\n getPublicKey,\n getSharedSecret,\n sign,\n verify,\n ProjectivePoint: Point,\n Signature,\n utils,\n };\n}\n/**\n * Implementation of the Shallue and van de Woestijne method for any weierstrass curve.\n * TODO: check if there is a way to merge this with uvRatio in Edwards; move to modular.\n * b = True and y = sqrt(u / v) if (u / v) is square in F, and\n * b = False and y = sqrt(Z * (u / v)) otherwise.\n * @param Fp\n * @param Z\n * @returns\n */\nexport function SWUFpSqrtRatio(Fp, Z) {\n // Generic implementation\n const q = Fp.ORDER;\n let l = _0n;\n for (let o = q - _1n; o % _2n === _0n; o /= _2n)\n l += _1n;\n const c1 = l; // 1. c1, the largest integer such that 2^c1 divides q - 1.\n // We need 2n ** c1 and 2n ** (c1-1). We can't use **; but we can use <<.\n // 2n ** c1 == 2n << (c1-1)\n const _2n_pow_c1_1 = _2n << (c1 - _1n - _1n);\n const _2n_pow_c1 = _2n_pow_c1_1 * _2n;\n const c2 = (q - _1n) / _2n_pow_c1; // 2. c2 = (q - 1) / (2^c1) # Integer arithmetic\n const c3 = (c2 - _1n) / _2n; // 3. c3 = (c2 - 1) / 2 # Integer arithmetic\n const c4 = _2n_pow_c1 - _1n; // 4. c4 = 2^c1 - 1 # Integer arithmetic\n const c5 = _2n_pow_c1_1; // 5. c5 = 2^(c1 - 1) # Integer arithmetic\n const c6 = Fp.pow(Z, c2); // 6. c6 = Z^c2\n const c7 = Fp.pow(Z, (c2 + _1n) / _2n); // 7. c7 = Z^((c2 + 1) / 2)\n let sqrtRatio = (u, v) => {\n let tv1 = c6; // 1. tv1 = c6\n let tv2 = Fp.pow(v, c4); // 2. tv2 = v^c4\n let tv3 = Fp.sqr(tv2); // 3. tv3 = tv2^2\n tv3 = Fp.mul(tv3, v); // 4. tv3 = tv3 * v\n let tv5 = Fp.mul(u, tv3); // 5. tv5 = u * tv3\n tv5 = Fp.pow(tv5, c3); // 6. tv5 = tv5^c3\n tv5 = Fp.mul(tv5, tv2); // 7. tv5 = tv5 * tv2\n tv2 = Fp.mul(tv5, v); // 8. tv2 = tv5 * v\n tv3 = Fp.mul(tv5, u); // 9. tv3 = tv5 * u\n let tv4 = Fp.mul(tv3, tv2); // 10. tv4 = tv3 * tv2\n tv5 = Fp.pow(tv4, c5); // 11. tv5 = tv4^c5\n let isQR = Fp.eql(tv5, Fp.ONE); // 12. isQR = tv5 == 1\n tv2 = Fp.mul(tv3, c7); // 13. tv2 = tv3 * c7\n tv5 = Fp.mul(tv4, tv1); // 14. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, isQR); // 15. tv3 = CMOV(tv2, tv3, isQR)\n tv4 = Fp.cmov(tv5, tv4, isQR); // 16. tv4 = CMOV(tv5, tv4, isQR)\n // 17. for i in (c1, c1 - 1, ..., 2):\n for (let i = c1; i > _1n; i--) {\n let tv5 = i - _2n; // 18. tv5 = i - 2\n tv5 = _2n << (tv5 - _1n); // 19. tv5 = 2^tv5\n let tvv5 = Fp.pow(tv4, tv5); // 20. tv5 = tv4^tv5\n const e1 = Fp.eql(tvv5, Fp.ONE); // 21. e1 = tv5 == 1\n tv2 = Fp.mul(tv3, tv1); // 22. tv2 = tv3 * tv1\n tv1 = Fp.mul(tv1, tv1); // 23. tv1 = tv1 * tv1\n tvv5 = Fp.mul(tv4, tv1); // 24. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, e1); // 25. tv3 = CMOV(tv2, tv3, e1)\n tv4 = Fp.cmov(tvv5, tv4, e1); // 26. tv4 = CMOV(tv5, tv4, e1)\n }\n return { isValid: isQR, value: tv3 };\n };\n if (Fp.ORDER % _4n === _3n) {\n // sqrt_ratio_3mod4(u, v)\n const c1 = (Fp.ORDER - _3n) / _4n; // 1. c1 = (q - 3) / 4 # Integer arithmetic\n const c2 = Fp.sqrt(Fp.neg(Z)); // 2. c2 = sqrt(-Z)\n sqrtRatio = (u, v) => {\n let tv1 = Fp.sqr(v); // 1. tv1 = v^2\n const tv2 = Fp.mul(u, v); // 2. tv2 = u * v\n tv1 = Fp.mul(tv1, tv2); // 3. tv1 = tv1 * tv2\n let y1 = Fp.pow(tv1, c1); // 4. y1 = tv1^c1\n y1 = Fp.mul(y1, tv2); // 5. y1 = y1 * tv2\n const y2 = Fp.mul(y1, c2); // 6. y2 = y1 * c2\n const tv3 = Fp.mul(Fp.sqr(y1), v); // 7. tv3 = y1^2; 8. tv3 = tv3 * v\n const isQR = Fp.eql(tv3, u); // 9. isQR = tv3 == u\n let y = Fp.cmov(y2, y1, isQR); // 10. y = CMOV(y2, y1, isQR)\n return { isValid: isQR, value: y }; // 11. return (isQR, y) isQR ? y : y*c2\n };\n }\n // No curves uses that\n // if (Fp.ORDER % _8n === _5n) // sqrt_ratio_5mod8\n return sqrtRatio;\n}\n/**\n * Simplified Shallue-van de Woestijne-Ulas Method\n * https://www.rfc-editor.org/rfc/rfc9380#section-6.6.2\n */\nexport function mapToCurveSimpleSWU(Fp, opts) {\n mod.validateField(Fp);\n if (!Fp.isValid(opts.A) || !Fp.isValid(opts.B) || !Fp.isValid(opts.Z))\n throw new Error('mapToCurveSimpleSWU: invalid opts');\n const sqrtRatio = SWUFpSqrtRatio(Fp, opts.Z);\n if (!Fp.isOdd)\n throw new Error('Fp.isOdd is not implemented!');\n // Input: u, an element of F.\n // Output: (x, y), a point on E.\n return (u) => {\n // prettier-ignore\n let tv1, tv2, tv3, tv4, tv5, tv6, x, y;\n tv1 = Fp.sqr(u); // 1. tv1 = u^2\n tv1 = Fp.mul(tv1, opts.Z); // 2. tv1 = Z * tv1\n tv2 = Fp.sqr(tv1); // 3. tv2 = tv1^2\n tv2 = Fp.add(tv2, tv1); // 4. tv2 = tv2 + tv1\n tv3 = Fp.add(tv2, Fp.ONE); // 5. tv3 = tv2 + 1\n tv3 = Fp.mul(tv3, opts.B); // 6. tv3 = B * tv3\n tv4 = Fp.cmov(opts.Z, Fp.neg(tv2), !Fp.eql(tv2, Fp.ZERO)); // 7. tv4 = CMOV(Z, -tv2, tv2 != 0)\n tv4 = Fp.mul(tv4, opts.A); // 8. tv4 = A * tv4\n tv2 = Fp.sqr(tv3); // 9. tv2 = tv3^2\n tv6 = Fp.sqr(tv4); // 10. tv6 = tv4^2\n tv5 = Fp.mul(tv6, opts.A); // 11. tv5 = A * tv6\n tv2 = Fp.add(tv2, tv5); // 12. tv2 = tv2 + tv5\n tv2 = Fp.mul(tv2, tv3); // 13. tv2 = tv2 * tv3\n tv6 = Fp.mul(tv6, tv4); // 14. tv6 = tv6 * tv4\n tv5 = Fp.mul(tv6, opts.B); // 15. tv5 = B * tv6\n tv2 = Fp.add(tv2, tv5); // 16. tv2 = tv2 + tv5\n x = Fp.mul(tv1, tv3); // 17. x = tv1 * tv3\n const { isValid, value } = sqrtRatio(tv2, tv6); // 18. (is_gx1_square, y1) = sqrt_ratio(tv2, tv6)\n y = Fp.mul(tv1, u); // 19. y = tv1 * u -> Z * u^3 * y1\n y = Fp.mul(y, value); // 20. y = y * y1\n x = Fp.cmov(x, tv3, isValid); // 21. x = CMOV(x, tv3, is_gx1_square)\n y = Fp.cmov(y, value, isValid); // 22. y = CMOV(y, y1, is_gx1_square)\n const e1 = Fp.isOdd(u) === Fp.isOdd(y); // 23. e1 = sgn0(u) == sgn0(y)\n y = Fp.cmov(Fp.neg(y), y, e1); // 24. y = CMOV(-y, y, e1)\n x = Fp.div(x, tv4); // 25. x = x / tv4\n return { x, y };\n };\n}\n//# sourceMappingURL=weierstrass.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { hmac } from '@noble/hashes/hmac';\nimport { concatBytes, randomBytes } from '@noble/hashes/utils';\nimport { weierstrass } from './abstract/weierstrass.js';\n// connects noble-curves to noble-hashes\nexport function getHash(hash) {\n return {\n hash,\n hmac: (key, ...msgs) => hmac(hash, key, concatBytes(...msgs)),\n randomBytes,\n };\n}\nexport function createCurve(curveDef, defHash) {\n const create = (hash) => weierstrass({ ...curveDef, ...getHash(hash) });\n return Object.freeze({ ...create(defHash), create });\n}\n//# sourceMappingURL=_shortw_utils.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha256 } from '@noble/hashes/sha256';\nimport { randomBytes } from '@noble/hashes/utils';\nimport { createCurve } from './_shortw_utils.js';\nimport { createHasher, isogenyMap } from './abstract/hash-to-curve.js';\nimport { Field, mod, pow2 } from './abstract/modular.js';\nimport { bytesToNumberBE, concatBytes, ensureBytes, numberToBytesBE } from './abstract/utils.js';\nimport { mapToCurveSimpleSWU } from './abstract/weierstrass.js';\nconst secp256k1P = BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f');\nconst secp256k1N = BigInt('0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141');\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst divNearest = (a, b) => (a + b / _2n) / b;\n/**\n * √n = n^((p+1)/4) for fields p = 3 mod 4. We unwrap the loop and multiply bit-by-bit.\n * (P+1n/4n).toString(2) would produce bits [223x 1, 0, 22x 1, 4x 0, 11, 00]\n */\nfunction sqrtMod(y) {\n const P = secp256k1P;\n // prettier-ignore\n const _3n = BigInt(3), _6n = BigInt(6), _11n = BigInt(11), _22n = BigInt(22);\n // prettier-ignore\n const _23n = BigInt(23), _44n = BigInt(44), _88n = BigInt(88);\n const b2 = (y * y * y) % P; // x^3, 11\n const b3 = (b2 * b2 * y) % P; // x^7\n const b6 = (pow2(b3, _3n, P) * b3) % P;\n const b9 = (pow2(b6, _3n, P) * b3) % P;\n const b11 = (pow2(b9, _2n, P) * b2) % P;\n const b22 = (pow2(b11, _11n, P) * b11) % P;\n const b44 = (pow2(b22, _22n, P) * b22) % P;\n const b88 = (pow2(b44, _44n, P) * b44) % P;\n const b176 = (pow2(b88, _88n, P) * b88) % P;\n const b220 = (pow2(b176, _44n, P) * b44) % P;\n const b223 = (pow2(b220, _3n, P) * b3) % P;\n const t1 = (pow2(b223, _23n, P) * b22) % P;\n const t2 = (pow2(t1, _6n, P) * b2) % P;\n const root = pow2(t2, _2n, P);\n if (!Fp.eql(Fp.sqr(root), y))\n throw new Error('Cannot find square root');\n return root;\n}\nconst Fp = Field(secp256k1P, undefined, undefined, { sqrt: sqrtMod });\nexport const secp256k1 = createCurve({\n a: BigInt(0), // equation params: a, b\n b: BigInt(7), // Seem to be rigid: bitcointalk.org/index.php?topic=289795.msg3183975#msg3183975\n Fp, // Field's prime: 2n**256n - 2n**32n - 2n**9n - 2n**8n - 2n**7n - 2n**6n - 2n**4n - 1n\n n: secp256k1N, // Curve order, total count of valid points in the field\n // Base point (x, y) aka generator point\n Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),\n Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),\n h: BigInt(1), // Cofactor\n lowS: true, // Allow only low-S signatures by default in sign() and verify()\n /**\n * secp256k1 belongs to Koblitz curves: it has efficiently computable endomorphism.\n * Endomorphism uses 2x less RAM, speeds up precomputation by 2x and ECDH / key recovery by 20%.\n * For precomputed wNAF it trades off 1/2 init time & 1/3 ram for 20% perf hit.\n * Explanation: https://gist.github.com/paulmillr/eb670806793e84df628a7c434a873066\n */\n endo: {\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n splitScalar: (k) => {\n const n = secp256k1N;\n const a1 = BigInt('0x3086d221a7d46bcde86c90e49284eb15');\n const b1 = -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3');\n const a2 = BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8');\n const b2 = a1;\n const POW_2_128 = BigInt('0x100000000000000000000000000000000'); // (2n**128n).toString(16)\n const c1 = divNearest(b2 * k, n);\n const c2 = divNearest(-b1 * k, n);\n let k1 = mod(k - c1 * a1 - c2 * a2, n);\n let k2 = mod(-c1 * b1 - c2 * b2, n);\n const k1neg = k1 > POW_2_128;\n const k2neg = k2 > POW_2_128;\n if (k1neg)\n k1 = n - k1;\n if (k2neg)\n k2 = n - k2;\n if (k1 > POW_2_128 || k2 > POW_2_128) {\n throw new Error('splitScalar: Endomorphism failed, k=' + k);\n }\n return { k1neg, k1, k2neg, k2 };\n },\n },\n}, sha256);\n// Schnorr signatures are superior to ECDSA from above. Below is Schnorr-specific BIP0340 code.\n// https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki\nconst _0n = BigInt(0);\nconst fe = (x) => typeof x === 'bigint' && _0n < x && x < secp256k1P;\nconst ge = (x) => typeof x === 'bigint' && _0n < x && x < secp256k1N;\n/** An object mapping tags to their tagged hash prefix of [SHA256(tag) | SHA256(tag)] */\nconst TAGGED_HASH_PREFIXES = {};\nfunction taggedHash(tag, ...messages) {\n let tagP = TAGGED_HASH_PREFIXES[tag];\n if (tagP === undefined) {\n const tagH = sha256(Uint8Array.from(tag, (c) => c.charCodeAt(0)));\n tagP = concatBytes(tagH, tagH);\n TAGGED_HASH_PREFIXES[tag] = tagP;\n }\n return sha256(concatBytes(tagP, ...messages));\n}\n// ECDSA compact points are 33-byte. Schnorr is 32: we strip first byte 0x02 or 0x03\nconst pointToBytes = (point) => point.toRawBytes(true).slice(1);\nconst numTo32b = (n) => numberToBytesBE(n, 32);\nconst modP = (x) => mod(x, secp256k1P);\nconst modN = (x) => mod(x, secp256k1N);\nconst Point = secp256k1.ProjectivePoint;\nconst GmulAdd = (Q, a, b) => Point.BASE.multiplyAndAddUnsafe(Q, a, b);\n// Calculate point, scalar and bytes\nfunction schnorrGetExtPubKey(priv) {\n let d_ = secp256k1.utils.normPrivateKeyToScalar(priv); // same method executed in fromPrivateKey\n let p = Point.fromPrivateKey(d_); // P = d'⋅G; 0 < d' < n check is done inside\n const scalar = p.hasEvenY() ? d_ : modN(-d_);\n return { scalar: scalar, bytes: pointToBytes(p) };\n}\n/**\n * lift_x from BIP340. Convert 32-byte x coordinate to elliptic curve point.\n * @returns valid point checked for being on-curve\n */\nfunction lift_x(x) {\n if (!fe(x))\n throw new Error('bad x: need 0 < x < p'); // Fail if x ≥ p.\n const xx = modP(x * x);\n const c = modP(xx * x + BigInt(7)); // Let c = x³ + 7 mod p.\n let y = sqrtMod(c); // Let y = c^(p+1)/4 mod p.\n if (y % _2n !== _0n)\n y = modP(-y); // Return the unique point P such that x(P) = x and\n const p = new Point(x, y, _1n); // y(P) = y if y mod 2 = 0 or y(P) = p-y otherwise.\n p.assertValidity();\n return p;\n}\n/**\n * Create tagged hash, convert it to bigint, reduce modulo-n.\n */\nfunction challenge(...args) {\n return modN(bytesToNumberBE(taggedHash('BIP0340/challenge', ...args)));\n}\n/**\n * Schnorr public key is just `x` coordinate of Point as per BIP340.\n */\nfunction schnorrGetPublicKey(privateKey) {\n return schnorrGetExtPubKey(privateKey).bytes; // d'=int(sk). Fail if d'=0 or d'≥n. Ret bytes(d'⋅G)\n}\n/**\n * Creates Schnorr signature as per BIP340. Verifies itself before returning anything.\n * auxRand is optional and is not the sole source of k generation: bad CSPRNG won't be dangerous.\n */\nfunction schnorrSign(message, privateKey, auxRand = randomBytes(32)) {\n const m = ensureBytes('message', message);\n const { bytes: px, scalar: d } = schnorrGetExtPubKey(privateKey); // checks for isWithinCurveOrder\n const a = ensureBytes('auxRand', auxRand, 32); // Auxiliary random data a: a 32-byte array\n const t = numTo32b(d ^ bytesToNumberBE(taggedHash('BIP0340/aux', a))); // Let t be the byte-wise xor of bytes(d) and hash/aux(a)\n const rand = taggedHash('BIP0340/nonce', t, px, m); // Let rand = hash/nonce(t || bytes(P) || m)\n const k_ = modN(bytesToNumberBE(rand)); // Let k' = int(rand) mod n\n if (k_ === _0n)\n throw new Error('sign failed: k is zero'); // Fail if k' = 0.\n const { bytes: rx, scalar: k } = schnorrGetExtPubKey(k_); // Let R = k'⋅G.\n const e = challenge(rx, px, m); // Let e = int(hash/challenge(bytes(R) || bytes(P) || m)) mod n.\n const sig = new Uint8Array(64); // Let sig = bytes(R) || bytes((k + ed) mod n).\n sig.set(rx, 0);\n sig.set(numTo32b(modN(k + e * d)), 32);\n // If Verify(bytes(P), m, sig) (see below) returns failure, abort\n if (!schnorrVerify(sig, m, px))\n throw new Error('sign: Invalid signature produced');\n return sig;\n}\n/**\n * Verifies Schnorr signature.\n * Will swallow errors & return false except for initial type validation of arguments.\n */\nfunction schnorrVerify(signature, message, publicKey) {\n const sig = ensureBytes('signature', signature, 64);\n const m = ensureBytes('message', message);\n const pub = ensureBytes('publicKey', publicKey, 32);\n try {\n const P = lift_x(bytesToNumberBE(pub)); // P = lift_x(int(pk)); fail if that fails\n const r = bytesToNumberBE(sig.subarray(0, 32)); // Let r = int(sig[0:32]); fail if r ≥ p.\n if (!fe(r))\n return false;\n const s = bytesToNumberBE(sig.subarray(32, 64)); // Let s = int(sig[32:64]); fail if s ≥ n.\n if (!ge(s))\n return false;\n const e = challenge(numTo32b(r), pointToBytes(P), m); // int(challenge(bytes(r)||bytes(P)||m))%n\n const R = GmulAdd(P, s, modN(-e)); // R = s⋅G - e⋅P\n if (!R || !R.hasEvenY() || R.toAffine().x !== r)\n return false; // -eP == (n-e)P\n return true; // Fail if is_infinite(R) / not has_even_y(R) / x(R) ≠ r.\n }\n catch (error) {\n return false;\n }\n}\nexport const schnorr = /* @__PURE__ */ (() => ({\n getPublicKey: schnorrGetPublicKey,\n sign: schnorrSign,\n verify: schnorrVerify,\n utils: {\n randomPrivateKey: secp256k1.utils.randomPrivateKey,\n lift_x,\n pointToBytes,\n numberToBytesBE,\n bytesToNumberBE,\n taggedHash,\n mod,\n },\n}))();\nconst isoMap = /* @__PURE__ */ (() => isogenyMap(Fp, [\n // xNum\n [\n '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa8c7',\n '0x7d3d4c80bc321d5b9f315cea7fd44c5d595d2fc0bf63b92dfff1044f17c6581',\n '0x534c328d23f234e6e2a413deca25caece4506144037c40314ecbd0b53d9dd262',\n '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa88c',\n ],\n // xDen\n [\n '0xd35771193d94918a9ca34ccbb7b640dd86cd409542f8487d9fe6b745781eb49b',\n '0xedadc6f64383dc1df7c4b2d51b54225406d36b641f5e41bbc52a56612a8c6d14',\n '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n ],\n // yNum\n [\n '0x4bda12f684bda12f684bda12f684bda12f684bda12f684bda12f684b8e38e23c',\n '0xc75e0c32d5cb7c0fa9d0a54b12a0a6d5647ab046d686da6fdffc90fc201d71a3',\n '0x29a6194691f91a73715209ef6512e576722830a201be2018a765e85a9ecee931',\n '0x2f684bda12f684bda12f684bda12f684bda12f684bda12f684bda12f38e38d84',\n ],\n // yDen\n [\n '0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffff93b',\n '0x7a06534bb8bdb49fd5e9e6632722c2989467c1bfc8e8d978dfb425d2685c2573',\n '0x6484aa716545ca2cf3a70c3fa8fe337e0a3d21162f0d6299a7bf8192bfd2a76f',\n '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n ],\n].map((i) => i.map((j) => BigInt(j)))))();\nconst mapSWU = /* @__PURE__ */ (() => mapToCurveSimpleSWU(Fp, {\n A: BigInt('0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533'),\n B: BigInt('1771'),\n Z: Fp.create(BigInt('-11')),\n}))();\nconst htf = /* @__PURE__ */ (() => createHasher(secp256k1.ProjectivePoint, (scalars) => {\n const { x, y } = mapSWU(Fp.create(scalars[0]));\n return isoMap(x, y);\n}, {\n DST: 'secp256k1_XMD:SHA-256_SSWU_RO_',\n encodeDST: 'secp256k1_XMD:SHA-256_SSWU_NU_',\n p: Fp.ORDER,\n m: 1,\n k: 128,\n expand: 'xmd',\n hash: sha256,\n}))();\nexport const hashToCurve = /* @__PURE__ */ (() => htf.hashToCurve)();\nexport const encodeToCurve = /* @__PURE__ */ (() => htf.encodeToCurve)();\n//# sourceMappingURL=secp256k1.js.map","/*\nThe MIT License\n\nCopyright (c) 2016 Nick Dodson. nickdodson.com\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE\n */\nimport { bytesToUnprefixedHex, utf8ToBytes } from './bytes.js';\n/**\n * Returns a boolean on whether or not the the input starts with '0x' and matches the optional length\n * @param {string} value the string input value\n * @param {number|undefined} length the optional length of the hex string in bytes\n * @returns {boolean} Whether or not the string is a valid PrefixedHexString matching the optional length\n */\nexport function isHexString(value, length) {\n if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/))\n return false;\n if (typeof length !== 'undefined' && length > 0 && value.length !== 2 + 2 * length)\n return false;\n return true;\n}\n/**\n * Removes '0x' from a given `String` if present\n * @param str the string value\n * @returns the string without 0x prefix\n */\nexport const stripHexPrefix = (str) => {\n if (typeof str !== 'string')\n throw new Error(`[stripHexPrefix] input must be type 'string', received ${typeof str}`);\n return isHexString(str) ? str.slice(2) : str;\n};\n/**\n * Pads a `String` to have an even length\n * @param value\n * @return output\n */\nexport function padToEven(value) {\n let a = value;\n if (typeof a !== 'string') {\n throw new Error(`[padToEven] value must be type 'string', received ${typeof a}`);\n }\n if (a.length % 2)\n a = `0${a}`;\n return a;\n}\n/**\n * Get the binary size of a string\n * @param str\n * @returns the number of bytes contained within the string\n */\nexport function getBinarySize(str) {\n if (typeof str !== 'string') {\n throw new Error(`[getBinarySize] method requires input type 'string', received ${typeof str}`);\n }\n return utf8ToBytes(str).byteLength;\n}\n/**\n * Returns TRUE if the first specified array contains all elements\n * from the second one. FALSE otherwise.\n *\n * @param superset\n * @param subset\n *\n */\nexport function arrayContainsArray(superset, subset, some) {\n if (Array.isArray(superset) !== true) {\n throw new Error(`[arrayContainsArray] method requires input 'superset' to be an array, got type '${typeof superset}'`);\n }\n if (Array.isArray(subset) !== true) {\n throw new Error(`[arrayContainsArray] method requires input 'subset' to be an array, got type '${typeof subset}'`);\n }\n return subset[some === true ? 'some' : 'every']((value) => superset.indexOf(value) >= 0);\n}\n/**\n * Should be called to get ascii from its hex representation\n *\n * @param string in hex\n * @returns ascii string representation of hex value\n */\nexport function toAscii(hex) {\n let str = '';\n let i = 0;\n const l = hex.length;\n if (hex.substring(0, 2) === '0x')\n i = 2;\n for (; i < l; i += 2) {\n const code = parseInt(hex.substr(i, 2), 16);\n str += String.fromCharCode(code);\n }\n return str;\n}\n/**\n * Should be called to get hex representation (prefixed by 0x) of utf8 string.\n * Strips leading and trailing 0's.\n *\n * @param string\n * @param optional padding\n * @returns hex representation of input string\n */\nexport function fromUtf8(stringValue) {\n const str = utf8ToBytes(stringValue);\n return `0x${padToEven(bytesToUnprefixedHex(str)).replace(/^0+|0+$/g, '')}`;\n}\n/**\n * Should be called to get hex representation (prefixed by 0x) of ascii string\n *\n * @param string\n * @param optional padding\n * @returns hex representation of input string\n */\nexport function fromAscii(stringValue) {\n let hex = '';\n for (let i = 0; i < stringValue.length; i++) {\n const code = stringValue.charCodeAt(i);\n const n = code.toString(16);\n hex += n.length < 2 ? `0${n}` : n;\n }\n return `0x${hex}`;\n}\n/**\n * Returns the keys from an array of objects.\n * @example\n * ```js\n * getKeys([{a: '1', b: '2'}, {a: '3', b: '4'}], 'a') => ['1', '3']\n *````\n * @param params\n * @param key\n * @param allowEmpty\n * @returns output just a simple array of output keys\n */\nexport function getKeys(params, key, allowEmpty) {\n if (!Array.isArray(params)) {\n throw new Error(`[getKeys] method expects input 'params' to be an array, got ${typeof params}`);\n }\n if (typeof key !== 'string') {\n throw new Error(`[getKeys] method expects input 'key' to be type 'string', got ${typeof params}`);\n }\n const result = [];\n for (let i = 0; i < params.length; i++) {\n let value = params[i][key];\n if (allowEmpty === true && !value) {\n value = '';\n }\n else if (typeof value !== 'string') {\n throw new Error(`invalid abi - expected type 'string', received ${typeof value}`);\n }\n result.push(value);\n }\n return result;\n}\n//# sourceMappingURL=internal.js.map","import { isHexString } from './internal.js';\n/**\n * Throws if a string is not hex prefixed\n * @param {string} input string to check hex prefix of\n */\nexport const assertIsHexString = function (input) {\n if (!isHexString(input)) {\n const msg = `This method only supports 0x-prefixed hex strings but input was: ${input}`;\n throw new Error(msg);\n }\n};\n/**\n * Throws if input is not a buffer\n * @param {Buffer} input value to check\n */\nexport const assertIsBytes = function (input) {\n if (!(input instanceof Uint8Array)) {\n const msg = `This method only supports Uint8Array but input was: ${input}`;\n throw new Error(msg);\n }\n};\n/**\n * Throws if input is not an array\n * @param {number[]} input value to check\n */\nexport const assertIsArray = function (input) {\n if (!Array.isArray(input)) {\n const msg = `This method only supports number arrays but input was: ${input}`;\n throw new Error(msg);\n }\n};\n/**\n * Throws if input is not a string\n * @param {string} input value to check\n */\nexport const assertIsString = function (input) {\n if (typeof input !== 'string') {\n const msg = `This method only supports strings but input was: ${input}`;\n throw new Error(msg);\n }\n};\n//# sourceMappingURL=helpers.js.map","import { getRandomBytesSync } from 'ethereum-cryptography/random.js';\n// eslint-disable-next-line no-restricted-imports\nimport { bytesToHex as _bytesToUnprefixedHex } from 'ethereum-cryptography/utils.js';\nimport { assertIsArray, assertIsBytes, assertIsHexString } from './helpers.js';\nimport { isHexString, padToEven, stripHexPrefix } from './internal.js';\nconst BIGINT_0 = BigInt(0);\n/**\n * @deprecated\n */\nexport const bytesToUnprefixedHex = _bytesToUnprefixedHex;\n// hexToBytes cache\nconst hexToBytesMapFirstKey = {};\nconst hexToBytesMapSecondKey = {};\nfor (let i = 0; i < 16; i++) {\n const vSecondKey = i;\n const vFirstKey = i * 16;\n const key = i.toString(16).toLowerCase();\n hexToBytesMapSecondKey[key] = vSecondKey;\n hexToBytesMapSecondKey[key.toUpperCase()] = vSecondKey;\n hexToBytesMapFirstKey[key] = vFirstKey;\n hexToBytesMapFirstKey[key.toUpperCase()] = vFirstKey;\n}\n/**\n * NOTE: only use this function if the string is even, and only consists of hex characters\n * If this is not the case, this function could return weird results\n * @deprecated\n */\nfunction _unprefixedHexToBytes(hex) {\n const byteLen = hex.length;\n const bytes = new Uint8Array(byteLen / 2);\n for (let i = 0; i < byteLen; i += 2) {\n bytes[i / 2] = hexToBytesMapFirstKey[hex[i]] + hexToBytesMapSecondKey[hex[i + 1]];\n }\n return bytes;\n}\n/**\n * @deprecated\n */\nexport const unprefixedHexToBytes = (inp) => {\n if (inp.slice(0, 2) === '0x') {\n throw new Error('hex string is prefixed with 0x, should be unprefixed');\n }\n else {\n return _unprefixedHexToBytes(padToEven(inp));\n }\n};\n/**************** Borrowed from @chainsafe/ssz */\n// Caching this info costs about ~1000 bytes and speeds up toHexString() by x6\nconst hexByByte = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\nexport const bytesToHex = (bytes) => {\n let hex = `0x`;\n if (bytes === undefined || bytes.length === 0)\n return hex;\n for (const byte of bytes) {\n hex = `${hex}${hexByByte[byte]}`;\n }\n return hex;\n};\n// BigInt cache for the numbers 0 - 256*256-1 (two-byte bytes)\nconst BIGINT_CACHE = [];\nfor (let i = 0; i <= 256 * 256 - 1; i++) {\n BIGINT_CACHE[i] = BigInt(i);\n}\n/**\n * Converts a {@link Uint8Array} to a {@link bigint}\n * @param {Uint8Array} bytes the bytes to convert\n * @returns {bigint}\n */\nexport const bytesToBigInt = (bytes, littleEndian = false) => {\n if (littleEndian) {\n bytes.reverse();\n }\n const hex = bytesToHex(bytes);\n if (hex === '0x') {\n return BIGINT_0;\n }\n if (hex.length === 4) {\n // If the byte length is 1 (this is faster than checking `bytes.length === 1`)\n return BIGINT_CACHE[bytes[0]];\n }\n if (hex.length === 6) {\n return BIGINT_CACHE[bytes[0] * 256 + bytes[1]];\n }\n return BigInt(hex);\n};\n/**\n * Converts a {@link Uint8Array} to a {@link number}.\n * @param {Uint8Array} bytes the bytes to convert\n * @return {number}\n * @throws If the input number exceeds 53 bits.\n */\nexport const bytesToInt = (bytes) => {\n const res = Number(bytesToBigInt(bytes));\n if (!Number.isSafeInteger(res))\n throw new Error('Number exceeds 53 bits');\n return res;\n};\n// TODO: Restrict the input type to only PrefixedHexString\n/**\n * Converts a {@link PrefixedHexString} to a {@link Uint8Array}\n * @param {PrefixedHexString | string} hex The 0x-prefixed hex string to convert\n * @returns {Uint8Array} The converted bytes\n * @throws If the input is not a valid 0x-prefixed hex string\n */\nexport const hexToBytes = (hex) => {\n if (typeof hex !== 'string') {\n throw new Error(`hex argument type ${typeof hex} must be of type string`);\n }\n if (!/^0x[0-9a-fA-F]*$/.test(hex)) {\n throw new Error(`Input must be a 0x-prefixed hexadecimal string, got ${hex}`);\n }\n const unprefixedHex = hex.slice(2);\n return _unprefixedHexToBytes(unprefixedHex.length % 2 === 0 ? unprefixedHex : padToEven(unprefixedHex));\n};\n/******************************************/\n/**\n * Converts a {@link number} into a {@link PrefixedHexString}\n * @param {number} i\n * @return {PrefixedHexString}\n */\nexport const intToHex = (i) => {\n if (!Number.isSafeInteger(i) || i < 0) {\n throw new Error(`Received an invalid integer type: ${i}`);\n }\n return `0x${i.toString(16)}`;\n};\n/**\n * Converts an {@link number} to a {@link Uint8Array}\n * @param {Number} i\n * @return {Uint8Array}\n */\nexport const intToBytes = (i) => {\n const hex = intToHex(i);\n return hexToBytes(hex);\n};\n/**\n * Converts a {@link bigint} to a {@link Uint8Array}\n * * @param {bigint} num the bigint to convert\n * @returns {Uint8Array}\n */\nexport const bigIntToBytes = (num, littleEndian = false) => {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const bytes = toBytes(`0x${padToEven(num.toString(16))}`);\n return littleEndian ? bytes.reverse() : bytes;\n};\n/**\n * Returns a Uint8Array filled with 0s.\n * @param {number} bytes the number of bytes of the Uint8Array\n * @return {Uint8Array}\n */\nexport const zeros = (bytes) => {\n return new Uint8Array(bytes);\n};\n/**\n * Pads a `Uint8Array` with zeros till it has `length` bytes.\n * Truncates the beginning or end of input if its length exceeds `length`.\n * @param {Uint8Array} msg the value to pad\n * @param {number} length the number of bytes the output should be\n * @param {boolean} right whether to start padding form the left or right\n * @return {Uint8Array}\n */\nconst setLength = (msg, length, right) => {\n if (right) {\n if (msg.length < length) {\n return new Uint8Array([...msg, ...zeros(length - msg.length)]);\n }\n return msg.subarray(0, length);\n }\n else {\n if (msg.length < length) {\n return new Uint8Array([...zeros(length - msg.length), ...msg]);\n }\n return msg.subarray(-length);\n }\n};\n/**\n * Left Pads a `Uint8Array` with leading zeros till it has `length` bytes.\n * Or it truncates the beginning if it exceeds.\n * @param {Uint8Array} msg the value to pad\n * @param {number} length the number of bytes the output should be\n * @return {Uint8Array}\n */\nexport const setLengthLeft = (msg, length) => {\n assertIsBytes(msg);\n return setLength(msg, length, false);\n};\n/**\n * Right Pads a `Uint8Array` with trailing zeros till it has `length` bytes.\n * it truncates the end if it exceeds.\n * @param {Uint8Array} msg the value to pad\n * @param {number} length the number of bytes the output should be\n * @return {Uint8Array}\n */\nexport const setLengthRight = (msg, length) => {\n assertIsBytes(msg);\n return setLength(msg, length, true);\n};\n/**\n * Trims leading zeros from a `Uint8Array`, `number[]` or `string`.\n * @param {Uint8Array|number[]|string} a\n * @return {Uint8Array|number[]|string}\n */\nconst stripZeros = (a) => {\n let first = a[0];\n while (a.length > 0 && first.toString() === '0') {\n a = a.slice(1);\n first = a[0];\n }\n return a;\n};\n/**\n * Trims leading zeros from a `Uint8Array`.\n * @param {Uint8Array} a\n * @return {Uint8Array}\n */\nexport const unpadBytes = (a) => {\n assertIsBytes(a);\n return stripZeros(a);\n};\n/**\n * Trims leading zeros from an `Array` (of numbers).\n * @param {number[]} a\n * @return {number[]}\n */\nexport const unpadArray = (a) => {\n assertIsArray(a);\n return stripZeros(a);\n};\n// TODO: Restrict the input type to only PrefixedHexString\n/**\n * Trims leading zeros from a `PrefixedHexString`.\n * @param {PrefixedHexString | string} a\n * @return {PrefixedHexString}\n */\nexport const unpadHex = (a) => {\n assertIsHexString(a);\n return `0x${stripZeros(stripHexPrefix(a))}`;\n};\n/**\n * Attempts to turn a value into a `Uint8Array`.\n * Inputs supported: `Buffer`, `Uint8Array`, `String` (hex-prefixed), `Number`, null/undefined, `BigInt` and other objects\n * with a `toArray()` or `toBytes()` method.\n * @param {ToBytesInputTypes} v the value\n * @return {Uint8Array}\n */\nexport const toBytes = (v) => {\n if (v === null || v === undefined) {\n return new Uint8Array();\n }\n if (Array.isArray(v) || v instanceof Uint8Array) {\n return Uint8Array.from(v);\n }\n if (typeof v === 'string') {\n if (!isHexString(v)) {\n throw new Error(`Cannot convert string to Uint8Array. toBytes only supports 0x-prefixed hex strings and this string was given: ${v}`);\n }\n return hexToBytes(v);\n }\n if (typeof v === 'number') {\n return intToBytes(v);\n }\n if (typeof v === 'bigint') {\n if (v < BIGINT_0) {\n throw new Error(`Cannot convert negative bigint to Uint8Array. Given: ${v}`);\n }\n let n = v.toString(16);\n if (n.length % 2)\n n = '0' + n;\n return unprefixedHexToBytes(n);\n }\n if (v.toBytes !== undefined) {\n // converts a `TransformableToBytes` object to a Uint8Array\n return v.toBytes();\n }\n throw new Error('invalid type');\n};\n/**\n * Interprets a `Uint8Array` as a signed integer and returns a `BigInt`. Assumes 256-bit numbers.\n * @param {Uint8Array} num Signed integer value\n * @returns {bigint}\n */\nexport const fromSigned = (num) => {\n return BigInt.asIntN(256, bytesToBigInt(num));\n};\n/**\n * Converts a `BigInt` to an unsigned integer and returns it as a `Uint8Array`. Assumes 256-bit numbers.\n * @param {bigint} num\n * @returns {Uint8Array}\n */\nexport const toUnsigned = (num) => {\n return bigIntToBytes(BigInt.asUintN(256, num));\n};\n/**\n * Adds \"0x\" to a given `string` if it does not already start with \"0x\".\n * @param {string} str\n * @return {PrefixedHexString}\n */\nexport const addHexPrefix = (str) => {\n if (typeof str !== 'string') {\n return str;\n }\n return isHexString(str) ? str : `0x${str}`;\n};\n/**\n * Shortens a string or Uint8Array's hex string representation to maxLength (default 50).\n *\n * Examples:\n *\n * Input: '657468657265756d000000000000000000000000000000000000000000000000'\n * Output: '657468657265756d0000000000000000000000000000000000…'\n * @param {Uint8Array | string} bytes\n * @param {number} maxLength\n * @return {string}\n */\nexport const short = (bytes, maxLength = 50) => {\n const byteStr = bytes instanceof Uint8Array ? bytesToHex(bytes) : bytes;\n const len = byteStr.slice(0, 2) === '0x' ? maxLength + 2 : maxLength;\n if (byteStr.length <= len) {\n return byteStr;\n }\n return byteStr.slice(0, len) + '…';\n};\n/**\n * Checks provided Uint8Array for leading zeroes and throws if found.\n *\n * Examples:\n *\n * Valid values: 0x1, 0x, 0x01, 0x1234\n * Invalid values: 0x0, 0x00, 0x001, 0x0001\n *\n * Note: This method is useful for validating that RLP encoded integers comply with the rule that all\n * integer values encoded to RLP must be in the most compact form and contain no leading zero bytes\n * @param values An object containing string keys and Uint8Array values\n * @throws if any provided value is found to have leading zero bytes\n */\nexport const validateNoLeadingZeroes = (values) => {\n for (const [k, v] of Object.entries(values)) {\n if (v !== undefined && v.length > 0 && v[0] === 0) {\n throw new Error(`${k} cannot have leading zeroes, received: ${bytesToHex(v)}`);\n }\n }\n};\n/**\n * Converts a {@link bigint} to a `0x` prefixed hex string\n * @param {bigint} num the bigint to convert\n * @returns {PrefixedHexString}\n */\nexport const bigIntToHex = (num) => {\n return `0x${num.toString(16)}`;\n};\n/**\n * Calculates max bigint from an array of bigints\n * @param args array of bigints\n */\nexport const bigIntMax = (...args) => args.reduce((m, e) => (e > m ? e : m));\n/**\n * Calculates min BigInt from an array of BigInts\n * @param args array of bigints\n */\nexport const bigIntMin = (...args) => args.reduce((m, e) => (e < m ? e : m));\n/**\n * Convert value from bigint to an unpadded Uint8Array\n * (useful for RLP transport)\n * @param {bigint} value the bigint to convert\n * @returns {Uint8Array}\n */\nexport const bigIntToUnpaddedBytes = (value) => {\n return unpadBytes(bigIntToBytes(value));\n};\nexport const bigIntToAddressBytes = (value, strict = true) => {\n const addressBytes = bigIntToBytes(value);\n if (strict && addressBytes.length > 20) {\n throw Error(`Invalid address bytes length=${addressBytes.length} strict=${strict}`);\n }\n // setLength already slices if more than requisite length\n return setLengthLeft(addressBytes, 20);\n};\n/**\n * Convert value from number to an unpadded Uint8Array\n * (useful for RLP transport)\n * @param {number} value the bigint to convert\n * @returns {Uint8Array}\n */\nexport const intToUnpaddedBytes = (value) => {\n return unpadBytes(intToBytes(value));\n};\n/**\n * Compares two Uint8Arrays and returns a number indicating their order in a sorted array.\n *\n * @param {Uint8Array} value1 - The first Uint8Array to compare.\n * @param {Uint8Array} value2 - The second Uint8Array to compare.\n * @returns {number} A positive number if value1 is larger than value2,\n * A negative number if value1 is smaller than value2,\n * or 0 if value1 and value2 are equal.\n */\nexport const compareBytes = (value1, value2) => {\n const bigIntValue1 = bytesToBigInt(value1);\n const bigIntValue2 = bytesToBigInt(value2);\n return bigIntValue1 > bigIntValue2 ? 1 : bigIntValue1 < bigIntValue2 ? -1 : 0;\n};\n/**\n * Generates a Uint8Array of random bytes of specified length.\n *\n * @param {number} length - The length of the Uint8Array.\n * @returns {Uint8Array} A Uint8Array of random bytes of specified length.\n */\nexport const randomBytes = (length) => {\n return getRandomBytesSync(length);\n};\n/**\n * This mirrors the functionality of the `ethereum-cryptography` export except\n * it skips the check to validate that every element of `arrays` is indead a `uint8Array`\n * Can give small performance gains on large arrays\n * @param {Uint8Array[]} arrays an array of Uint8Arrays\n * @returns {Uint8Array} one Uint8Array with all the elements of the original set\n * works like `Buffer.concat`\n */\nexport const concatBytes = (...arrays) => {\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n};\n/**\n * @notice Convert a Uint8Array to a 32-bit integer\n * @param {Uint8Array} bytes The input Uint8Array from which to read the 32-bit integer.\n * @param {boolean} littleEndian True for little-endian, undefined or false for big-endian.\n * @return {number} The 32-bit integer read from the input Uint8Array.\n */\nexport function bytesToInt32(bytes, littleEndian = false) {\n if (bytes.length < 4) {\n bytes = setLength(bytes, 4, littleEndian);\n }\n const dataView = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n return dataView.getUint32(0, littleEndian);\n}\n/**\n * @notice Convert a Uint8Array to a 64-bit bigint\n * @param {Uint8Array} bytes The input Uint8Array from which to read the 64-bit bigint.\n * @param {boolean} littleEndian True for little-endian, undefined or false for big-endian.\n * @return {bigint} The 64-bit bigint read from the input Uint8Array.\n */\nexport function bytesToBigInt64(bytes, littleEndian = false) {\n if (bytes.length < 8) {\n bytes = setLength(bytes, 8, littleEndian);\n }\n const dataView = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n return dataView.getBigUint64(0, littleEndian);\n}\n/**\n * @notice Convert a 32-bit integer to a Uint8Array.\n * @param {number} value The 32-bit integer to convert.\n * @param {boolean} littleEndian True for little-endian, undefined or false for big-endian.\n * @return {Uint8Array} A Uint8Array of length 4 containing the integer.\n */\nexport function int32ToBytes(value, littleEndian = false) {\n const buffer = new ArrayBuffer(4);\n const dataView = new DataView(buffer);\n dataView.setUint32(0, value, littleEndian);\n return new Uint8Array(buffer);\n}\n/**\n * @notice Convert a 64-bit bigint to a Uint8Array.\n * @param {bigint} value The 64-bit bigint to convert.\n * @param {boolean} littleEndian True for little-endian, undefined or false for big-endian.\n * @return {Uint8Array} A Uint8Array of length 8 containing the bigint.\n */\nexport function bigInt64ToBytes(value, littleEndian = false) {\n const buffer = new ArrayBuffer(8);\n const dataView = new DataView(buffer);\n dataView.setBigUint64(0, value, littleEndian);\n return new Uint8Array(buffer);\n}\n// eslint-disable-next-line no-restricted-imports\nexport { bytesToUtf8, equalsBytes, utf8ToBytes } from 'ethereum-cryptography/utils.js';\n// TODO: Restrict the input type to only PrefixedHexString\nexport function hexToBigInt(input) {\n return bytesToBigInt(hexToBytes(isHexString(input) ? input : `0x${input}`));\n}\n//# sourceMappingURL=bytes.js.map","import { secp256k1 } from 'ethereum-cryptography/secp256k1.js';\nimport { hexToBytes } from './bytes.js';\n/**\n * 2^64-1\n */\nexport const MAX_UINT64 = BigInt('0xffffffffffffffff');\n/**\n * The max integer that the evm can handle (2^256-1)\n */\nexport const MAX_INTEGER = BigInt('0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff');\n/**\n * The max integer that the evm can handle (2^256-1) as a bigint\n * 2^256-1 equals to 340282366920938463463374607431768211455\n * We use literal value instead of calculated value for compatibility issue.\n */\nexport const MAX_INTEGER_BIGINT = BigInt('115792089237316195423570985008687907853269984665640564039457584007913129639935');\nexport const SECP256K1_ORDER = secp256k1.CURVE.n;\nexport const SECP256K1_ORDER_DIV_2 = secp256k1.CURVE.n / BigInt(2);\n/**\n * 2^256\n */\nexport const TWO_POW256 = BigInt('0x10000000000000000000000000000000000000000000000000000000000000000');\n/**\n * Keccak-256 hash of null\n */\nexport const KECCAK256_NULL_S = '0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470';\n/**\n * Keccak-256 hash of null\n */\nexport const KECCAK256_NULL = hexToBytes(KECCAK256_NULL_S);\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexport const KECCAK256_RLP_ARRAY_S = '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347';\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexport const KECCAK256_RLP_ARRAY = hexToBytes(KECCAK256_RLP_ARRAY_S);\n/**\n * Keccak-256 hash of the RLP of null\n */\nexport const KECCAK256_RLP_S = '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421';\n/**\n * Keccak-256 hash of the RLP of null\n */\nexport const KECCAK256_RLP = hexToBytes(KECCAK256_RLP_S);\n/**\n * RLP encoded empty string\n */\nexport const RLP_EMPTY_STRING = Uint8Array.from([0x80]);\nexport const MAX_WITHDRAWALS_PER_PAYLOAD = 16;\nexport const RIPEMD160_ADDRESS_STRING = '0000000000000000000000000000000000000003';\n/**\n * BigInt constants\n */\nexport const BIGINT_NEG1 = BigInt(-1);\nexport const BIGINT_0 = BigInt(0);\nexport const BIGINT_1 = BigInt(1);\nexport const BIGINT_2 = BigInt(2);\nexport const BIGINT_3 = BigInt(3);\nexport const BIGINT_7 = BigInt(7);\nexport const BIGINT_8 = BigInt(8);\nexport const BIGINT_27 = BigInt(27);\nexport const BIGINT_28 = BigInt(28);\nexport const BIGINT_31 = BigInt(31);\nexport const BIGINT_32 = BigInt(32);\nexport const BIGINT_64 = BigInt(64);\nexport const BIGINT_128 = BigInt(128);\nexport const BIGINT_255 = BigInt(255);\nexport const BIGINT_256 = BigInt(256);\nexport const BIGINT_96 = BigInt(96);\nexport const BIGINT_100 = BigInt(100);\nexport const BIGINT_160 = BigInt(160);\nexport const BIGINT_224 = BigInt(224);\nexport const BIGINT_2EXP96 = BigInt(79228162514264337593543950336);\nexport const BIGINT_2EXP160 = BigInt(1461501637330902918203684832716283019655932542976);\nexport const BIGINT_2EXP224 = BigInt(26959946667150639794667015087019630673637144422540572481103610249216);\nexport const BIGINT_2EXP256 = BIGINT_2 ** BIGINT_256;\n//# sourceMappingURL=constants.js.map","import { BIGINT_0, BIGINT_1 } from './constants.js';\n/** Easy conversion from Gwei to wei */\nexport const GWEI_TO_WEI = BigInt(1000000000);\nexport function formatBigDecimal(numerator, denominator, maxDecimalFactor) {\n if (denominator === BIGINT_0) {\n denominator = BIGINT_1;\n }\n const full = numerator / denominator;\n const fraction = ((numerator - full * denominator) * maxDecimalFactor) / denominator;\n // zeros to be added post decimal are number of zeros in maxDecimalFactor - number of digits in fraction\n const zerosPostDecimal = String(maxDecimalFactor).length - 1 - String(fraction).length;\n return `${full}.${'0'.repeat(zerosPostDecimal)}${fraction}`;\n}\n//# sourceMappingURL=units.js.map","/**\n * RLP Encoding based on https://ethereum.org/en/developers/docs/data-structures-and-encoding/rlp/\n * This function takes in data, converts it to Uint8Array if not,\n * and adds a length for recursion.\n * @param input Will be converted to Uint8Array\n * @returns Uint8Array of encoded data\n **/\nexport function encode(input) {\n if (Array.isArray(input)) {\n const output = [];\n let outputLength = 0;\n for (let i = 0; i < input.length; i++) {\n const encoded = encode(input[i]);\n output.push(encoded);\n outputLength += encoded.length;\n }\n return concatBytes(encodeLength(outputLength, 192), ...output);\n }\n const inputBuf = toBytes(input);\n if (inputBuf.length === 1 && inputBuf[0] < 128) {\n return inputBuf;\n }\n return concatBytes(encodeLength(inputBuf.length, 128), inputBuf);\n}\n/**\n * Slices a Uint8Array, throws if the slice goes out-of-bounds of the Uint8Array.\n * E.g. `safeSlice(hexToBytes('aa'), 1, 2)` will throw.\n * @param input\n * @param start\n * @param end\n */\nfunction safeSlice(input, start, end) {\n if (end > input.length) {\n throw new Error('invalid RLP (safeSlice): end slice of Uint8Array out-of-bounds');\n }\n return input.slice(start, end);\n}\n/**\n * Parse integers. Check if there is no leading zeros\n * @param v The value to parse\n */\nfunction decodeLength(v) {\n if (v[0] === 0) {\n throw new Error('invalid RLP: extra zeros');\n }\n return parseHexByte(bytesToHex(v));\n}\nfunction encodeLength(len, offset) {\n if (len < 56) {\n return Uint8Array.from([len + offset]);\n }\n const hexLength = numberToHex(len);\n const lLength = hexLength.length / 2;\n const firstByte = numberToHex(offset + 55 + lLength);\n return Uint8Array.from(hexToBytes(firstByte + hexLength));\n}\nexport function decode(input, stream = false) {\n if (typeof input === 'undefined' || input === null || input.length === 0) {\n return Uint8Array.from([]);\n }\n const inputBytes = toBytes(input);\n const decoded = _decode(inputBytes);\n if (stream) {\n return {\n data: decoded.data,\n remainder: decoded.remainder.slice(),\n };\n }\n if (decoded.remainder.length !== 0) {\n throw new Error('invalid RLP: remainder must be zero');\n }\n return decoded.data;\n}\n/** Decode an input with RLP */\nfunction _decode(input) {\n let length, llength, data, innerRemainder, d;\n const decoded = [];\n const firstByte = input[0];\n if (firstByte <= 0x7f) {\n // a single byte whose value is in the [0x00, 0x7f] range, that byte is its own RLP encoding.\n return {\n data: input.slice(0, 1),\n remainder: input.subarray(1),\n };\n }\n else if (firstByte <= 0xb7) {\n // string is 0-55 bytes long. A single byte with value 0x80 plus the length of the string followed by the string\n // The range of the first byte is [0x80, 0xb7]\n length = firstByte - 0x7f;\n // set 0x80 null to 0\n if (firstByte === 0x80) {\n data = Uint8Array.from([]);\n }\n else {\n data = safeSlice(input, 1, length);\n }\n if (length === 2 && data[0] < 0x80) {\n throw new Error('invalid RLP encoding: invalid prefix, single byte < 0x80 are not prefixed');\n }\n return {\n data,\n remainder: input.subarray(length),\n };\n }\n else if (firstByte <= 0xbf) {\n // string is greater than 55 bytes long. A single byte with the value (0xb7 plus the length of the length),\n // followed by the length, followed by the string\n llength = firstByte - 0xb6;\n if (input.length - 1 < llength) {\n throw new Error('invalid RLP: not enough bytes for string length');\n }\n length = decodeLength(safeSlice(input, 1, llength));\n if (length <= 55) {\n throw new Error('invalid RLP: expected string length to be greater than 55');\n }\n data = safeSlice(input, llength, length + llength);\n return {\n data,\n remainder: input.subarray(length + llength),\n };\n }\n else if (firstByte <= 0xf7) {\n // a list between 0-55 bytes long\n length = firstByte - 0xbf;\n innerRemainder = safeSlice(input, 1, length);\n while (innerRemainder.length) {\n d = _decode(innerRemainder);\n decoded.push(d.data);\n innerRemainder = d.remainder;\n }\n return {\n data: decoded,\n remainder: input.subarray(length),\n };\n }\n else {\n // a list over 55 bytes long\n llength = firstByte - 0xf6;\n length = decodeLength(safeSlice(input, 1, llength));\n if (length < 56) {\n throw new Error('invalid RLP: encoded list too short');\n }\n const totalLength = llength + length;\n if (totalLength > input.length) {\n throw new Error('invalid RLP: total length is larger than the data');\n }\n innerRemainder = safeSlice(input, llength, totalLength);\n while (innerRemainder.length) {\n d = _decode(innerRemainder);\n decoded.push(d.data);\n innerRemainder = d.remainder;\n }\n return {\n data: decoded,\n remainder: input.subarray(totalLength),\n };\n }\n}\nconst cachedHexes = Array.from({ length: 256 }, (_v, i) => i.toString(16).padStart(2, '0'));\nfunction bytesToHex(uint8a) {\n // Pre-caching chars with `cachedHexes` speeds this up 6x\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += cachedHexes[uint8a[i]];\n }\n return hex;\n}\nfunction parseHexByte(hexByte) {\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte))\n throw new Error('Invalid byte sequence');\n return byte;\n}\n// Caching slows it down 2-3x\nfunction hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2)\n throw new Error('hexToBytes: received invalid unpadded hex');\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n array[i] = parseHexByte(hex.slice(j, j + 2));\n }\n return array;\n}\n/** Concatenates two Uint8Arrays into one. */\nfunction concatBytes(...arrays) {\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\nfunction utf8ToBytes(utf) {\n return new TextEncoder().encode(utf);\n}\n/** Transform an integer into its hexadecimal value */\nfunction numberToHex(integer) {\n if (integer < 0) {\n throw new Error('Invalid integer as argument, must be unsigned!');\n }\n const hex = integer.toString(16);\n return hex.length % 2 ? `0${hex}` : hex;\n}\n/** Pad a string to be even */\nfunction padToEven(a) {\n return a.length % 2 ? `0${a}` : a;\n}\n/** Check if a string is prefixed by 0x */\nfunction isHexPrefixed(str) {\n return str.length >= 2 && str[0] === '0' && str[1] === 'x';\n}\n/** Removes 0x from a given String */\nfunction stripHexPrefix(str) {\n if (typeof str !== 'string') {\n return str;\n }\n return isHexPrefixed(str) ? str.slice(2) : str;\n}\n/** Transform anything into a Uint8Array */\nfunction toBytes(v) {\n if (v instanceof Uint8Array) {\n return v;\n }\n if (typeof v === 'string') {\n if (isHexPrefixed(v)) {\n return hexToBytes(padToEven(stripHexPrefix(v)));\n }\n return utf8ToBytes(v);\n }\n if (typeof v === 'number' || typeof v === 'bigint') {\n if (!v) {\n return Uint8Array.from([]);\n }\n return hexToBytes(numberToHex(v));\n }\n if (v === null || v === undefined) {\n return Uint8Array.from([]);\n }\n throw new Error('toBytes: received unsupported type ' + typeof v);\n}\nexport const utils = {\n bytesToHex,\n concatBytes,\n hexToBytes,\n utf8ToBytes,\n};\nexport const RLP = { encode, decode };\n//# sourceMappingURL=index.js.map","import { RLP } from '@ethereumjs/rlp';\nimport { keccak256 } from 'ethereum-cryptography/keccak.js';\nimport { secp256k1 } from 'ethereum-cryptography/secp256k1.js';\nimport { bigIntToUnpaddedBytes, bytesToBigInt, bytesToHex, bytesToInt, concatBytes, equalsBytes, hexToBytes, intToUnpaddedBytes, toBytes, utf8ToBytes, zeros, } from './bytes.js';\nimport { BIGINT_0, KECCAK256_NULL, KECCAK256_RLP } from './constants.js';\nimport { assertIsBytes, assertIsHexString, assertIsString } from './helpers.js';\nimport { stripHexPrefix } from './internal.js';\n/**\n * Account class to load and maintain the basic account objects.\n * Supports partial loading and access required for verkle with null\n * as the placeholder.\n *\n * Note: passing undefined in constructor is different from null\n * While undefined leads to default assignment, null is retained\n * to track the information not available/loaded because of partial\n * witness access\n */\nexport class Account {\n /**\n * This constructor assigns and validates the values.\n * Use the static factory methods to assist in creating an Account from varying data types.\n * undefined get assigned with the defaults present, but null args are retained as is\n */\n constructor(nonce = BIGINT_0, balance = BIGINT_0, storageRoot = KECCAK256_RLP, codeHash = KECCAK256_NULL, codeSize = null, version = 0) {\n this._nonce = null;\n this._balance = null;\n this._storageRoot = null;\n this._codeHash = null;\n // codeSize and version is separately stored in VKT\n this._codeSize = null;\n this._version = null;\n this._nonce = nonce;\n this._balance = balance;\n this._storageRoot = storageRoot;\n this._codeHash = codeHash;\n if (codeSize === null && codeHash !== null && !this.isContract()) {\n codeSize = 0;\n }\n this._codeSize = codeSize;\n this._version = version;\n this._validate();\n }\n get version() {\n if (this._version !== null) {\n return this._version;\n }\n else {\n throw Error(`version=${this._version} not loaded`);\n }\n }\n set version(_version) {\n this._version = _version;\n }\n get nonce() {\n if (this._nonce !== null) {\n return this._nonce;\n }\n else {\n throw Error(`nonce=${this._nonce} not loaded`);\n }\n }\n set nonce(_nonce) {\n this._nonce = _nonce;\n }\n get balance() {\n if (this._balance !== null) {\n return this._balance;\n }\n else {\n throw Error(`balance=${this._balance} not loaded`);\n }\n }\n set balance(_balance) {\n this._balance = _balance;\n }\n get storageRoot() {\n if (this._storageRoot !== null) {\n return this._storageRoot;\n }\n else {\n throw Error(`storageRoot=${this._storageRoot} not loaded`);\n }\n }\n set storageRoot(_storageRoot) {\n this._storageRoot = _storageRoot;\n }\n get codeHash() {\n if (this._codeHash !== null) {\n return this._codeHash;\n }\n else {\n throw Error(`codeHash=${this._codeHash} not loaded`);\n }\n }\n set codeHash(_codeHash) {\n this._codeHash = _codeHash;\n }\n get codeSize() {\n if (this._codeSize !== null) {\n return this._codeSize;\n }\n else {\n throw Error(`codeHash=${this._codeSize} not loaded`);\n }\n }\n set codeSize(_codeSize) {\n this._codeSize = _codeSize;\n }\n static fromAccountData(accountData) {\n const { nonce, balance, storageRoot, codeHash } = accountData;\n if (nonce === null || balance === null || storageRoot === null || codeHash === null) {\n throw Error(`Partial fields not supported in fromAccountData`);\n }\n return new Account(nonce !== undefined ? bytesToBigInt(toBytes(nonce)) : undefined, balance !== undefined ? bytesToBigInt(toBytes(balance)) : undefined, storageRoot !== undefined ? toBytes(storageRoot) : undefined, codeHash !== undefined ? toBytes(codeHash) : undefined);\n }\n static fromPartialAccountData(partialAccountData) {\n const { nonce, balance, storageRoot, codeHash, codeSize, version } = partialAccountData;\n if (nonce === null &&\n balance === null &&\n storageRoot === null &&\n codeHash === null &&\n codeSize === null &&\n version === null) {\n throw Error(`All partial fields null`);\n }\n return new Account(nonce !== undefined && nonce !== null ? bytesToBigInt(toBytes(nonce)) : nonce, balance !== undefined && balance !== null ? bytesToBigInt(toBytes(balance)) : balance, storageRoot !== undefined && storageRoot !== null ? toBytes(storageRoot) : storageRoot, codeHash !== undefined && codeHash !== null ? toBytes(codeHash) : codeHash, codeSize !== undefined && codeSize !== null ? bytesToInt(toBytes(codeSize)) : codeSize, version !== undefined && version !== null ? bytesToInt(toBytes(version)) : version);\n }\n static fromRlpSerializedAccount(serialized) {\n const values = RLP.decode(serialized);\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized account input. Must be array');\n }\n return this.fromValuesArray(values);\n }\n static fromRlpSerializedPartialAccount(serialized) {\n const values = RLP.decode(serialized);\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized account input. Must be array');\n }\n let nonce = null;\n if (!Array.isArray(values[0])) {\n throw new Error('Invalid partial nonce encoding. Must be array');\n }\n else {\n const isNotNullIndicator = bytesToInt(values[0][0]);\n if (isNotNullIndicator !== 0 && isNotNullIndicator !== 1) {\n throw new Error(`Invalid isNullIndicator=${isNotNullIndicator} for nonce`);\n }\n if (isNotNullIndicator === 1) {\n nonce = bytesToBigInt(values[0][1]);\n }\n }\n let balance = null;\n if (!Array.isArray(values[1])) {\n throw new Error('Invalid partial balance encoding. Must be array');\n }\n else {\n const isNotNullIndicator = bytesToInt(values[1][0]);\n if (isNotNullIndicator !== 0 && isNotNullIndicator !== 1) {\n throw new Error(`Invalid isNullIndicator=${isNotNullIndicator} for balance`);\n }\n if (isNotNullIndicator === 1) {\n balance = bytesToBigInt(values[1][1]);\n }\n }\n let storageRoot = null;\n if (!Array.isArray(values[2])) {\n throw new Error('Invalid partial storageRoot encoding. Must be array');\n }\n else {\n const isNotNullIndicator = bytesToInt(values[2][0]);\n if (isNotNullIndicator !== 0 && isNotNullIndicator !== 1) {\n throw new Error(`Invalid isNullIndicator=${isNotNullIndicator} for storageRoot`);\n }\n if (isNotNullIndicator === 1) {\n storageRoot = values[2][1];\n }\n }\n let codeHash = null;\n if (!Array.isArray(values[3])) {\n throw new Error('Invalid partial codeHash encoding. Must be array');\n }\n else {\n const isNotNullIndicator = bytesToInt(values[3][0]);\n if (isNotNullIndicator !== 0 && isNotNullIndicator !== 1) {\n throw new Error(`Invalid isNullIndicator=${isNotNullIndicator} for codeHash`);\n }\n if (isNotNullIndicator === 1) {\n codeHash = values[3][1];\n }\n }\n let codeSize = null;\n if (!Array.isArray(values[4])) {\n throw new Error('Invalid partial codeSize encoding. Must be array');\n }\n else {\n const isNotNullIndicator = bytesToInt(values[4][0]);\n if (isNotNullIndicator !== 0 && isNotNullIndicator !== 1) {\n throw new Error(`Invalid isNullIndicator=${isNotNullIndicator} for codeSize`);\n }\n if (isNotNullIndicator === 1) {\n codeSize = bytesToInt(values[4][1]);\n }\n }\n let version = null;\n if (!Array.isArray(values[5])) {\n throw new Error('Invalid partial version encoding. Must be array');\n }\n else {\n const isNotNullIndicator = bytesToInt(values[5][0]);\n if (isNotNullIndicator !== 0 && isNotNullIndicator !== 1) {\n throw new Error(`Invalid isNullIndicator=${isNotNullIndicator} for version`);\n }\n if (isNotNullIndicator === 1) {\n version = bytesToInt(values[5][1]);\n }\n }\n return this.fromPartialAccountData({ balance, nonce, storageRoot, codeHash, codeSize, version });\n }\n static fromValuesArray(values) {\n const [nonce, balance, storageRoot, codeHash] = values;\n return new Account(bytesToBigInt(nonce), bytesToBigInt(balance), storageRoot, codeHash);\n }\n _validate() {\n if (this._nonce !== null && this._nonce < BIGINT_0) {\n throw new Error('nonce must be greater than zero');\n }\n if (this._balance !== null && this._balance < BIGINT_0) {\n throw new Error('balance must be greater than zero');\n }\n if (this._storageRoot !== null && this._storageRoot.length !== 32) {\n throw new Error('storageRoot must have a length of 32');\n }\n if (this._codeHash !== null && this._codeHash.length !== 32) {\n throw new Error('codeHash must have a length of 32');\n }\n if (this._codeSize !== null && this._codeSize < BIGINT_0) {\n throw new Error('codeSize must be greater than zero');\n }\n }\n /**\n * Returns an array of Uint8Arrays of the raw bytes for the account, in order.\n */\n raw() {\n return [\n bigIntToUnpaddedBytes(this.nonce),\n bigIntToUnpaddedBytes(this.balance),\n this.storageRoot,\n this.codeHash,\n ];\n }\n /**\n * Returns the RLP serialization of the account as a `Uint8Array`.\n */\n serialize() {\n return RLP.encode(this.raw());\n }\n serializeWithPartialInfo() {\n const partialData = [];\n const zeroEncoded = intToUnpaddedBytes(0);\n const oneEncoded = intToUnpaddedBytes(1);\n if (this._nonce !== null) {\n partialData.push([oneEncoded, bigIntToUnpaddedBytes(this._nonce)]);\n }\n else {\n partialData.push([zeroEncoded]);\n }\n if (this._balance !== null) {\n partialData.push([oneEncoded, bigIntToUnpaddedBytes(this._balance)]);\n }\n else {\n partialData.push([zeroEncoded]);\n }\n if (this._storageRoot !== null) {\n partialData.push([oneEncoded, this._storageRoot]);\n }\n else {\n partialData.push([zeroEncoded]);\n }\n if (this._codeHash !== null) {\n partialData.push([oneEncoded, this._codeHash]);\n }\n else {\n partialData.push([zeroEncoded]);\n }\n if (this._codeSize !== null) {\n partialData.push([oneEncoded, intToUnpaddedBytes(this._codeSize)]);\n }\n else {\n partialData.push([zeroEncoded]);\n }\n if (this._version !== null) {\n partialData.push([oneEncoded, intToUnpaddedBytes(this._version)]);\n }\n else {\n partialData.push([zeroEncoded]);\n }\n return RLP.encode(partialData);\n }\n /**\n * Returns a `Boolean` determining if the account is a contract.\n */\n isContract() {\n if (this._codeHash === null && this._codeSize === null) {\n throw Error(`Insufficient data as codeHash=null and codeSize=null`);\n }\n return ((this._codeHash !== null && !equalsBytes(this._codeHash, KECCAK256_NULL)) ||\n (this._codeSize !== null && this._codeSize !== 0));\n }\n /**\n * Returns a `Boolean` determining if the account is empty complying to the definition of\n * account emptiness in [EIP-161](https://eips.ethereum.org/EIPS/eip-161):\n * \"An account is considered empty when it has no code and zero nonce and zero balance.\"\n */\n isEmpty() {\n // helpful for determination in partial accounts\n if ((this._balance !== null && this.balance !== BIGINT_0) ||\n (this._nonce === null && this.nonce !== BIGINT_0) ||\n (this._codeHash !== null && !equalsBytes(this.codeHash, KECCAK256_NULL))) {\n return false;\n }\n return (this.balance === BIGINT_0 &&\n this.nonce === BIGINT_0 &&\n equalsBytes(this.codeHash, KECCAK256_NULL));\n }\n}\n/**\n * Checks if the address is a valid. Accepts checksummed addresses too.\n */\nexport const isValidAddress = function (hexAddress) {\n try {\n assertIsString(hexAddress);\n }\n catch (e) {\n return false;\n }\n return /^0x[0-9a-fA-F]{40}$/.test(hexAddress);\n};\n/**\n * Returns a checksummed address.\n *\n * If an eip1191ChainId is provided, the chainId will be included in the checksum calculation. This\n * has the effect of checksummed addresses for one chain having invalid checksums for others.\n * For more details see [EIP-1191](https://eips.ethereum.org/EIPS/eip-1191).\n *\n * WARNING: Checksums with and without the chainId will differ and the EIP-1191 checksum is not\n * backwards compatible to the original widely adopted checksum format standard introduced in\n * [EIP-55](https://eips.ethereum.org/EIPS/eip-55), so this will break in existing applications.\n * Usage of this EIP is therefore discouraged unless you have a very targeted use case.\n */\nexport const toChecksumAddress = function (hexAddress, eip1191ChainId) {\n assertIsHexString(hexAddress);\n const address = stripHexPrefix(hexAddress).toLowerCase();\n let prefix = '';\n if (eip1191ChainId !== undefined) {\n const chainId = bytesToBigInt(toBytes(eip1191ChainId));\n prefix = chainId.toString() + '0x';\n }\n const bytes = utf8ToBytes(prefix + address);\n const hash = bytesToHex(keccak256(bytes)).slice(2);\n let ret = '';\n for (let i = 0; i < address.length; i++) {\n if (parseInt(hash[i], 16) >= 8) {\n ret += address[i].toUpperCase();\n }\n else {\n ret += address[i];\n }\n }\n return `0x${ret}`;\n};\n/**\n * Checks if the address is a valid checksummed address.\n *\n * See toChecksumAddress' documentation for details about the eip1191ChainId parameter.\n */\nexport const isValidChecksumAddress = function (hexAddress, eip1191ChainId) {\n return isValidAddress(hexAddress) && toChecksumAddress(hexAddress, eip1191ChainId) === hexAddress;\n};\n/**\n * Generates an address of a newly created contract.\n * @param from The address which is creating this new address\n * @param nonce The nonce of the from account\n */\nexport const generateAddress = function (from, nonce) {\n assertIsBytes(from);\n assertIsBytes(nonce);\n if (bytesToBigInt(nonce) === BIGINT_0) {\n // in RLP we want to encode null in the case of zero nonce\n // read the RLP documentation for an answer if you dare\n return keccak256(RLP.encode([from, Uint8Array.from([])])).subarray(-20);\n }\n // Only take the lower 160bits of the hash\n return keccak256(RLP.encode([from, nonce])).subarray(-20);\n};\n/**\n * Generates an address for a contract created using CREATE2.\n * @param from The address which is creating this new address\n * @param salt A salt\n * @param initCode The init code of the contract being created\n */\nexport const generateAddress2 = function (from, salt, initCode) {\n assertIsBytes(from);\n assertIsBytes(salt);\n assertIsBytes(initCode);\n if (from.length !== 20) {\n throw new Error('Expected from to be of length 20');\n }\n if (salt.length !== 32) {\n throw new Error('Expected salt to be of length 32');\n }\n const address = keccak256(concatBytes(hexToBytes('0xff'), from, salt, keccak256(initCode)));\n return address.subarray(-20);\n};\n/**\n * Checks if the private key satisfies the rules of the curve secp256k1.\n */\nexport const isValidPrivate = function (privateKey) {\n return secp256k1.utils.isValidPrivateKey(privateKey);\n};\n/**\n * Checks if the public key satisfies the rules of the curve secp256k1\n * and the requirements of Ethereum.\n * @param publicKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexport const isValidPublic = function (publicKey, sanitize = false) {\n assertIsBytes(publicKey);\n if (publicKey.length === 64) {\n // Convert to SEC1 for secp256k1\n // Automatically checks whether point is on curve\n try {\n secp256k1.ProjectivePoint.fromHex(concatBytes(Uint8Array.from([4]), publicKey));\n return true;\n }\n catch (e) {\n return false;\n }\n }\n if (!sanitize) {\n return false;\n }\n try {\n secp256k1.ProjectivePoint.fromHex(publicKey);\n return true;\n }\n catch (e) {\n return false;\n }\n};\n/**\n * Returns the ethereum address of a given public key.\n * Accepts \"Ethereum public keys\" and SEC1 encoded keys.\n * @param pubKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexport const pubToAddress = function (pubKey, sanitize = false) {\n assertIsBytes(pubKey);\n if (sanitize && pubKey.length !== 64) {\n pubKey = secp256k1.ProjectivePoint.fromHex(pubKey).toRawBytes(false).slice(1);\n }\n if (pubKey.length !== 64) {\n throw new Error('Expected pubKey to be of length 64');\n }\n // Only take the lower 160bits of the hash\n return keccak256(pubKey).subarray(-20);\n};\nexport const publicToAddress = pubToAddress;\n/**\n * Returns the ethereum public key of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexport const privateToPublic = function (privateKey) {\n assertIsBytes(privateKey);\n // skip the type flag and use the X, Y points\n return secp256k1.ProjectivePoint.fromPrivateKey(privateKey).toRawBytes(false).slice(1);\n};\n/**\n * Returns the ethereum address of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexport const privateToAddress = function (privateKey) {\n return publicToAddress(privateToPublic(privateKey));\n};\n/**\n * Converts a public key to the Ethereum format.\n */\nexport const importPublic = function (publicKey) {\n assertIsBytes(publicKey);\n if (publicKey.length !== 64) {\n publicKey = secp256k1.ProjectivePoint.fromHex(publicKey).toRawBytes(false).slice(1);\n }\n return publicKey;\n};\n/**\n * Returns the zero address.\n */\nexport const zeroAddress = function () {\n const addressLength = 20;\n const addr = zeros(addressLength);\n return bytesToHex(addr);\n};\n/**\n * Checks if a given address is the zero address.\n */\nexport const isZeroAddress = function (hexAddress) {\n try {\n assertIsString(hexAddress);\n }\n catch (e) {\n return false;\n }\n const zeroAddr = zeroAddress();\n return zeroAddr === hexAddress;\n};\nexport function accountBodyFromSlim(body) {\n const [nonce, balance, storageRoot, codeHash] = body;\n return [\n nonce,\n balance,\n storageRoot.length === 0 ? KECCAK256_RLP : storageRoot,\n codeHash.length === 0 ? KECCAK256_NULL : codeHash,\n ];\n}\nconst emptyUint8Arr = new Uint8Array(0);\nexport function accountBodyToSlim(body) {\n const [nonce, balance, storageRoot, codeHash] = body;\n return [\n nonce,\n balance,\n equalsBytes(storageRoot, KECCAK256_RLP) ? emptyUint8Arr : storageRoot,\n equalsBytes(codeHash, KECCAK256_NULL) ? emptyUint8Arr : codeHash,\n ];\n}\n/**\n * Converts a slim account (per snap protocol spec) to the RLP encoded version of the account\n * @param body Array of 4 Uint8Array-like items to represent the account\n * @returns RLP encoded version of the account\n */\nexport function accountBodyToRLP(body, couldBeSlim = true) {\n const accountBody = couldBeSlim ? accountBodyFromSlim(body) : body;\n return RLP.encode(accountBody);\n}\n//# sourceMappingURL=account.js.map","export var KeyEncoding;\n(function (KeyEncoding) {\n KeyEncoding[\"String\"] = \"string\";\n KeyEncoding[\"Bytes\"] = \"view\";\n KeyEncoding[\"Number\"] = \"number\";\n})(KeyEncoding || (KeyEncoding = {}));\nexport var ValueEncoding;\n(function (ValueEncoding) {\n ValueEncoding[\"String\"] = \"string\";\n ValueEncoding[\"Bytes\"] = \"view\";\n ValueEncoding[\"JSON\"] = \"json\";\n})(ValueEncoding || (ValueEncoding = {}));\n//# sourceMappingURL=db.js.map","import { bytesToBigInt, bytesToHex, toBytes } from './bytes.js';\nimport { isHexString } from './internal.js';\nexport function isNestedUint8Array(value) {\n if (!Array.isArray(value)) {\n return false;\n }\n for (const item of value) {\n if (Array.isArray(item)) {\n if (!isNestedUint8Array(item)) {\n return false;\n }\n }\n else if (!(item instanceof Uint8Array)) {\n return false;\n }\n }\n return true;\n}\n/**\n * Type output options\n */\nexport var TypeOutput;\n(function (TypeOutput) {\n TypeOutput[TypeOutput[\"Number\"] = 0] = \"Number\";\n TypeOutput[TypeOutput[\"BigInt\"] = 1] = \"BigInt\";\n TypeOutput[TypeOutput[\"Uint8Array\"] = 2] = \"Uint8Array\";\n TypeOutput[TypeOutput[\"PrefixedHexString\"] = 3] = \"PrefixedHexString\";\n})(TypeOutput || (TypeOutput = {}));\nexport function toType(input, outputType) {\n if (input === null) {\n return null;\n }\n if (input === undefined) {\n return undefined;\n }\n if (typeof input === 'string' && !isHexString(input)) {\n throw new Error(`A string must be provided with a 0x-prefix, given: ${input}`);\n }\n else if (typeof input === 'number' && !Number.isSafeInteger(input)) {\n throw new Error('The provided number is greater than MAX_SAFE_INTEGER (please use an alternative input type)');\n }\n const output = toBytes(input);\n switch (outputType) {\n case TypeOutput.Uint8Array:\n return output;\n case TypeOutput.BigInt:\n return bytesToBigInt(output);\n case TypeOutput.Number: {\n const bigInt = bytesToBigInt(output);\n if (bigInt > BigInt(Number.MAX_SAFE_INTEGER)) {\n throw new Error('The provided number is greater than MAX_SAFE_INTEGER (please use an alternative output type)');\n }\n return Number(bigInt);\n }\n case TypeOutput.PrefixedHexString:\n return bytesToHex(output);\n default:\n throw new Error('unknown outputType');\n }\n}\n//# sourceMappingURL=types.js.map","import { keccak256 } from 'ethereum-cryptography/keccak.js';\nimport { secp256k1 } from 'ethereum-cryptography/secp256k1.js';\nimport { bytesToBigInt, bytesToHex, bytesToInt, concatBytes, setLengthLeft, toBytes, utf8ToBytes, } from './bytes.js';\nimport { BIGINT_0, BIGINT_1, BIGINT_2, BIGINT_27, SECP256K1_ORDER, SECP256K1_ORDER_DIV_2, } from './constants.js';\nimport { assertIsBytes } from './helpers.js';\n/**\n * Returns the ECDSA signature of a message hash.\n *\n * If `chainId` is provided assume an EIP-155-style signature and calculate the `v` value\n * accordingly, otherwise return a \"static\" `v` just derived from the `recovery` bit\n */\nexport function ecsign(msgHash, privateKey, chainId) {\n const sig = secp256k1.sign(msgHash, privateKey);\n const buf = sig.toCompactRawBytes();\n const r = buf.slice(0, 32);\n const s = buf.slice(32, 64);\n const v = chainId === undefined\n ? BigInt(sig.recovery + 27)\n : BigInt(sig.recovery + 35) + BigInt(chainId) * BIGINT_2;\n return { r, s, v };\n}\nexport function calculateSigRecovery(v, chainId) {\n if (v === BIGINT_0 || v === BIGINT_1)\n return v;\n if (chainId === undefined) {\n return v - BIGINT_27;\n }\n return v - (chainId * BIGINT_2 + BigInt(35));\n}\nfunction isValidSigRecovery(recovery) {\n return recovery === BIGINT_0 || recovery === BIGINT_1;\n}\n/**\n * ECDSA public key recovery from signature.\n * NOTE: Accepts `v === 0 | v === 1` for EIP1559 transactions\n * @returns Recovered public key\n */\nexport const ecrecover = function (msgHash, v, r, s, chainId) {\n const signature = concatBytes(setLengthLeft(r, 32), setLengthLeft(s, 32));\n const recovery = calculateSigRecovery(v, chainId);\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value');\n }\n const sig = secp256k1.Signature.fromCompact(signature).addRecoveryBit(Number(recovery));\n const senderPubKey = sig.recoverPublicKey(msgHash);\n return senderPubKey.toRawBytes(false).slice(1);\n};\n/**\n * Convert signature parameters into the format of `eth_sign` RPC method.\n * NOTE: Accepts `v === 0 | v === 1` for EIP1559 transactions\n * @returns Signature\n */\nexport const toRpcSig = function (v, r, s, chainId) {\n const recovery = calculateSigRecovery(v, chainId);\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value');\n }\n // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin\n return bytesToHex(concatBytes(setLengthLeft(r, 32), setLengthLeft(s, 32), toBytes(v)));\n};\n/**\n * Convert signature parameters into the format of Compact Signature Representation (EIP-2098).\n * NOTE: Accepts `v === 0 | v === 1` for EIP1559 transactions\n * @returns Signature\n */\nexport const toCompactSig = function (v, r, s, chainId) {\n const recovery = calculateSigRecovery(v, chainId);\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value');\n }\n const ss = Uint8Array.from([...s]);\n if ((v > BigInt(28) && v % BIGINT_2 === BIGINT_1) || v === BIGINT_1 || v === BigInt(28)) {\n ss[0] |= 0x80;\n }\n return bytesToHex(concatBytes(setLengthLeft(r, 32), setLengthLeft(ss, 32)));\n};\n/**\n * Convert signature format of the `eth_sign` RPC method to signature parameters\n *\n * NOTE: For an extracted `v` value < 27 (see Geth bug https://github.com/ethereum/go-ethereum/issues/2053)\n * `v + 27` is returned for the `v` value\n * NOTE: After EIP1559, `v` could be `0` or `1` but this function assumes\n * it's a signed message (EIP-191 or EIP-712) adding `27` at the end. Remove if needed.\n */\nexport const fromRpcSig = function (sig) {\n const bytes = toBytes(sig);\n let r;\n let s;\n let v;\n if (bytes.length >= 65) {\n r = bytes.subarray(0, 32);\n s = bytes.subarray(32, 64);\n v = bytesToBigInt(bytes.subarray(64));\n }\n else if (bytes.length === 64) {\n // Compact Signature Representation (https://eips.ethereum.org/EIPS/eip-2098)\n r = bytes.subarray(0, 32);\n s = bytes.subarray(32, 64);\n v = BigInt(bytesToInt(bytes.subarray(32, 33)) >> 7);\n s[0] &= 0x7f;\n }\n else {\n throw new Error('Invalid signature length');\n }\n // support both versions of `eth_sign` responses\n if (v < 27) {\n v = v + BIGINT_27;\n }\n return {\n v,\n r,\n s,\n };\n};\n/**\n * Validate a ECDSA signature.\n * NOTE: Accepts `v === 0 | v === 1` for EIP1559 transactions\n * @param homesteadOrLater Indicates whether this is being used on either the homestead hardfork or a later one\n */\nexport const isValidSignature = function (v, r, s, homesteadOrLater = true, chainId) {\n if (r.length !== 32 || s.length !== 32) {\n return false;\n }\n if (!isValidSigRecovery(calculateSigRecovery(v, chainId))) {\n return false;\n }\n const rBigInt = bytesToBigInt(r);\n const sBigInt = bytesToBigInt(s);\n if (rBigInt === BIGINT_0 ||\n rBigInt >= SECP256K1_ORDER ||\n sBigInt === BIGINT_0 ||\n sBigInt >= SECP256K1_ORDER) {\n return false;\n }\n if (homesteadOrLater && sBigInt >= SECP256K1_ORDER_DIV_2) {\n return false;\n }\n return true;\n};\n/**\n * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.\n * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`\n * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key\n * used to produce the signature.\n */\nexport const hashPersonalMessage = function (message) {\n assertIsBytes(message);\n const prefix = utf8ToBytes(`\\u0019Ethereum Signed Message:\\n${message.length}`);\n return keccak256(concatBytes(prefix, message));\n};\n//# sourceMappingURL=signature.js.map","import { RLP } from '@ethereumjs/rlp';\nimport { concatBytes } from 'ethereum-cryptography/utils';\nimport { bigIntToBytes, bigIntToHex, bytesToBigInt, bytesToHex, hexToBigInt, hexToBytes, } from './bytes.js';\nimport { BIGINT_0 } from './constants.js';\nexport var CLRequestType;\n(function (CLRequestType) {\n CLRequestType[CLRequestType[\"Deposit\"] = 0] = \"Deposit\";\n CLRequestType[CLRequestType[\"Withdrawal\"] = 1] = \"Withdrawal\";\n CLRequestType[CLRequestType[\"Consolidation\"] = 2] = \"Consolidation\";\n})(CLRequestType || (CLRequestType = {}));\nexport class CLRequest {\n constructor(type) {\n this.type = type;\n }\n}\nexport class DepositRequest extends CLRequest {\n constructor(pubkey, withdrawalCredentials, amount, signature, index) {\n super(CLRequestType.Deposit);\n this.pubkey = pubkey;\n this.withdrawalCredentials = withdrawalCredentials;\n this.amount = amount;\n this.signature = signature;\n this.index = index;\n }\n static fromRequestData(depositData) {\n const { pubkey, withdrawalCredentials, amount, signature, index } = depositData;\n return new DepositRequest(pubkey, withdrawalCredentials, amount, signature, index);\n }\n static fromJSON(jsonData) {\n const { pubkey, withdrawalCredentials, amount, signature, index } = jsonData;\n return this.fromRequestData({\n pubkey: hexToBytes(pubkey),\n withdrawalCredentials: hexToBytes(withdrawalCredentials),\n amount: hexToBigInt(amount),\n signature: hexToBytes(signature),\n index: hexToBigInt(index),\n });\n }\n serialize() {\n const indexBytes = this.index === BIGINT_0 ? new Uint8Array() : bigIntToBytes(this.index);\n const amountBytes = this.amount === BIGINT_0 ? new Uint8Array() : bigIntToBytes(this.amount);\n return concatBytes(Uint8Array.from([this.type]), RLP.encode([this.pubkey, this.withdrawalCredentials, amountBytes, this.signature, indexBytes]));\n }\n toJSON() {\n return {\n pubkey: bytesToHex(this.pubkey),\n withdrawalCredentials: bytesToHex(this.withdrawalCredentials),\n amount: bigIntToHex(this.amount),\n signature: bytesToHex(this.signature),\n index: bigIntToHex(this.index),\n };\n }\n static deserialize(bytes) {\n const [pubkey, withdrawalCredentials, amount, signature, index] = RLP.decode(bytes.slice(1));\n return this.fromRequestData({\n pubkey,\n withdrawalCredentials,\n amount: bytesToBigInt(amount),\n signature,\n index: bytesToBigInt(index),\n });\n }\n}\nexport class WithdrawalRequest extends CLRequest {\n constructor(sourceAddress, validatorPubkey, amount) {\n super(CLRequestType.Withdrawal);\n this.sourceAddress = sourceAddress;\n this.validatorPubkey = validatorPubkey;\n this.amount = amount;\n }\n static fromRequestData(withdrawalData) {\n const { sourceAddress, validatorPubkey, amount } = withdrawalData;\n return new WithdrawalRequest(sourceAddress, validatorPubkey, amount);\n }\n static fromJSON(jsonData) {\n const { sourceAddress, validatorPubkey, amount } = jsonData;\n return this.fromRequestData({\n sourceAddress: hexToBytes(sourceAddress),\n validatorPubkey: hexToBytes(validatorPubkey),\n amount: hexToBigInt(amount),\n });\n }\n serialize() {\n const amountBytes = this.amount === BIGINT_0 ? new Uint8Array() : bigIntToBytes(this.amount);\n return concatBytes(Uint8Array.from([this.type]), RLP.encode([this.sourceAddress, this.validatorPubkey, amountBytes]));\n }\n toJSON() {\n return {\n sourceAddress: bytesToHex(this.sourceAddress),\n validatorPubkey: bytesToHex(this.validatorPubkey),\n amount: bigIntToHex(this.amount),\n };\n }\n static deserialize(bytes) {\n const [sourceAddress, validatorPubkey, amount] = RLP.decode(bytes.slice(1));\n return this.fromRequestData({\n sourceAddress,\n validatorPubkey,\n amount: bytesToBigInt(amount),\n });\n }\n}\nexport class ConsolidationRequest extends CLRequest {\n constructor(sourceAddress, sourcePubkey, targetPubkey) {\n super(CLRequestType.Consolidation);\n this.sourceAddress = sourceAddress;\n this.sourcePubkey = sourcePubkey;\n this.targetPubkey = targetPubkey;\n }\n static fromRequestData(consolidationData) {\n const { sourceAddress, sourcePubkey, targetPubkey } = consolidationData;\n return new ConsolidationRequest(sourceAddress, sourcePubkey, targetPubkey);\n }\n static fromJSON(jsonData) {\n const { sourceAddress, sourcePubkey, targetPubkey } = jsonData;\n return this.fromRequestData({\n sourceAddress: hexToBytes(sourceAddress),\n sourcePubkey: hexToBytes(sourcePubkey),\n targetPubkey: hexToBytes(targetPubkey),\n });\n }\n serialize() {\n return concatBytes(Uint8Array.from([this.type]), RLP.encode([this.sourceAddress, this.sourcePubkey, this.targetPubkey]));\n }\n toJSON() {\n return {\n sourceAddress: bytesToHex(this.sourceAddress),\n sourcePubkey: bytesToHex(this.sourcePubkey),\n targetPubkey: bytesToHex(this.targetPubkey),\n };\n }\n static deserialize(bytes) {\n const [sourceAddress, sourcePubkey, targetPubkey] = RLP.decode(bytes.slice(1));\n return this.fromRequestData({\n sourceAddress,\n sourcePubkey,\n targetPubkey,\n });\n }\n}\nexport class CLRequestFactory {\n static fromSerializedRequest(bytes) {\n switch (bytes[0]) {\n case CLRequestType.Deposit:\n return DepositRequest.deserialize(bytes);\n case CLRequestType.Withdrawal:\n return WithdrawalRequest.deserialize(bytes);\n case CLRequestType.Consolidation:\n return ConsolidationRequest.deserialize(bytes);\n default:\n throw Error(`Invalid request type=${bytes[0]}`);\n }\n }\n}\n//# sourceMappingURL=requests.js.map","import { bigIntToBytes, bytesToHex, concatBytes, int32ToBytes, intToBytes, setLengthLeft, setLengthRight, toBytes, } from './bytes.js';\n/**\n * @dev Returns the 31-bytes verkle tree stem for a given address and tree index.\n * @dev Assumes that the verkle node width = 256\n * @param ffi The verkle ffi object from verkle-crypotography-wasm.\n * @param address The address to generate the tree key for.\n * @param treeIndex The index of the tree to generate the key for. Defaults to 0.\n * @return The 31-bytes verkle tree stem as a Uint8Array.\n */\nexport function getVerkleStem(ffi, address, treeIndex = 0) {\n const address32 = setLengthLeft(address.toBytes(), 32);\n let treeIndexBytes;\n if (typeof treeIndex === 'number') {\n treeIndexBytes = setLengthRight(int32ToBytes(Number(treeIndex), true), 32);\n }\n else {\n treeIndexBytes = setLengthRight(bigIntToBytes(BigInt(treeIndex), true).slice(0, 32), 32);\n }\n const treeStem = ffi.getTreeKey(address32, treeIndexBytes, 0).slice(0, 31);\n return treeStem;\n}\n/**\n * Verifies that the executionWitness is valid for the given prestateRoot.\n * @param ffi The verkle ffi object from verkle-crypotography-wasm.\n * @param prestateRoot The prestateRoot matching the executionWitness.\n * @param executionWitness The verkle execution witness.\n * @returns {boolean} Whether or not the executionWitness belongs to the prestateRoot.\n */\nexport function verifyVerkleProof(ffi, prestateRoot, executionWitness) {\n return ffi.verifyExecutionWitnessPreState(bytesToHex(prestateRoot), JSON.stringify(executionWitness));\n}\nexport var VerkleLeafType;\n(function (VerkleLeafType) {\n VerkleLeafType[VerkleLeafType[\"Version\"] = 0] = \"Version\";\n VerkleLeafType[VerkleLeafType[\"Balance\"] = 1] = \"Balance\";\n VerkleLeafType[VerkleLeafType[\"Nonce\"] = 2] = \"Nonce\";\n VerkleLeafType[VerkleLeafType[\"CodeHash\"] = 3] = \"CodeHash\";\n VerkleLeafType[VerkleLeafType[\"CodeSize\"] = 4] = \"CodeSize\";\n})(VerkleLeafType || (VerkleLeafType = {}));\nexport const VERKLE_VERSION_LEAF_KEY = intToBytes(VerkleLeafType.Version);\nexport const VERKLE_BALANCE_LEAF_KEY = intToBytes(VerkleLeafType.Balance);\nexport const VERKLE_NONCE_LEAF_KEY = intToBytes(VerkleLeafType.Nonce);\nexport const VERKLE_CODE_HASH_LEAF_KEY = intToBytes(VerkleLeafType.CodeHash);\nexport const VERKLE_CODE_SIZE_LEAF_KEY = intToBytes(VerkleLeafType.CodeSize);\nexport const VERKLE_HEADER_STORAGE_OFFSET = 64;\nexport const VERKLE_CODE_OFFSET = 128;\nexport const VERKLE_NODE_WIDTH = 256;\nexport const VERKLE_MAIN_STORAGE_OFFSET = BigInt(256) ** BigInt(31);\n/**\n * @dev Returns the tree key for a given verkle tree stem, and sub index.\n * @dev Assumes that the verkle node width = 256\n * @param stem The 31-bytes verkle tree stem as a Uint8Array.\n * @param subIndex The sub index of the tree to generate the key for as a Uint8Array.\n * @return The tree key as a Uint8Array.\n */\nexport const getVerkleKey = (stem, leaf) => {\n switch (leaf) {\n case VerkleLeafType.Version:\n return concatBytes(stem, VERKLE_VERSION_LEAF_KEY);\n case VerkleLeafType.Balance:\n return concatBytes(stem, VERKLE_BALANCE_LEAF_KEY);\n case VerkleLeafType.Nonce:\n return concatBytes(stem, VERKLE_NONCE_LEAF_KEY);\n case VerkleLeafType.CodeHash:\n return concatBytes(stem, VERKLE_CODE_HASH_LEAF_KEY);\n case VerkleLeafType.CodeSize:\n return concatBytes(stem, VERKLE_CODE_SIZE_LEAF_KEY);\n default:\n return concatBytes(stem, leaf);\n }\n};\nexport function getVerkleTreeIndexesForStorageSlot(storageKey) {\n let position;\n if (storageKey < VERKLE_CODE_OFFSET - VERKLE_HEADER_STORAGE_OFFSET) {\n position = BigInt(VERKLE_HEADER_STORAGE_OFFSET) + storageKey;\n }\n else {\n position = VERKLE_MAIN_STORAGE_OFFSET + storageKey;\n }\n const treeIndex = position / BigInt(VERKLE_NODE_WIDTH);\n const subIndex = Number(position % BigInt(VERKLE_NODE_WIDTH));\n return { treeIndex, subIndex };\n}\nexport function getVerkleTreeIndicesForCodeChunk(chunkId) {\n const treeIndex = Math.floor((VERKLE_CODE_OFFSET + chunkId) / VERKLE_NODE_WIDTH);\n const subIndex = (VERKLE_CODE_OFFSET + chunkId) % VERKLE_NODE_WIDTH;\n return { treeIndex, subIndex };\n}\nexport const getVerkleTreeKeyForCodeChunk = async (address, chunkId, verkleCrypto) => {\n const { treeIndex, subIndex } = getVerkleTreeIndicesForCodeChunk(chunkId);\n return concatBytes(getVerkleStem(verkleCrypto, address, treeIndex), toBytes(subIndex));\n};\nexport const chunkifyCode = (code) => {\n // Pad code to multiple of 31 bytes\n if (code.length % 31 !== 0) {\n const paddingLength = 31 - (code.length % 31);\n code = setLengthRight(code, code.length + paddingLength);\n }\n throw new Error('Not implemented');\n};\nexport const getVerkleTreeKeyForStorageSlot = async (address, storageKey, verkleCrypto) => {\n const { treeIndex, subIndex } = getVerkleTreeIndexesForStorageSlot(storageKey);\n return concatBytes(getVerkleStem(verkleCrypto, address, treeIndex), toBytes(subIndex));\n};\n//# sourceMappingURL=verkle.js.map","import _objectSpread from '@babel/runtime/helpers/objectSpread2';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport { SafeEventEmitter } from '@web3auth/auth';\n\n/**\n * Controller class that provides configuration, state management, and subscriptions\n */\nclass BaseController extends SafeEventEmitter {\n /**\n * Creates a BaseController instance. Both initial state and initial\n * configuration options are merged with defaults upon initialization.\n *\n * @param config - Initial options used to configure this controller\n * @param state - Initial state to set on this controller\n */\n constructor({\n config = {},\n state = {}\n }) {\n super();\n // Use assign since generics can't be spread: https://git.io/vpRhY\n /**\n * Default options used to configure this controller\n */\n _defineProperty(this, \"defaultConfig\", {});\n /**\n * Default state set on this controller\n */\n _defineProperty(this, \"defaultState\", {});\n /**\n * Determines if listeners are notified of state changes\n */\n _defineProperty(this, \"disabled\", false);\n /**\n * Name of this controller used during composition\n */\n _defineProperty(this, \"name\", \"BaseController\");\n _defineProperty(this, \"initialConfig\", void 0);\n _defineProperty(this, \"initialState\", void 0);\n _defineProperty(this, \"internalConfig\", this.defaultConfig);\n _defineProperty(this, \"internalState\", this.defaultState);\n this.initialState = state;\n this.initialConfig = config;\n }\n\n /**\n * Retrieves current controller configuration options\n *\n * @returns - Current configuration\n */\n get config() {\n return this.internalConfig;\n }\n\n /**\n * Retrieves current controller state\n *\n * @returns - Current state\n */\n get state() {\n return this.internalState;\n }\n\n /**\n * Updates controller configuration\n *\n * @param config - New configuration options\n * @param overwrite - Overwrite config instead of merging\n * @param fullUpdate - Boolean that defines if the update is partial or not\n */\n configure(config, overwrite = false, fullUpdate = true) {\n if (fullUpdate) {\n this.internalConfig = overwrite ? config : Object.assign(this.internalConfig, config);\n for (const key in this.internalConfig) {\n if (typeof this.internalConfig[key] !== \"undefined\") {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this[key] = this.internalConfig[key];\n }\n }\n } else {\n for (const key in config) {\n /* istanbul ignore else */\n if (typeof this.internalConfig[key] !== \"undefined\") {\n this.internalConfig[key] = config[key];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this[key] = config[key];\n }\n }\n }\n }\n\n /**\n * Updates controller state\n *\n * @param state - New state\n * @param overwrite - Overwrite state instead of merging\n */\n update(state, overwrite = false) {\n this.internalState = overwrite ? _objectSpread({}, state) : _objectSpread(_objectSpread({}, this.internalState), state);\n this.emit(\"store\", this.internalState);\n }\n\n /**\n * Enables the controller. This sets each config option as a member\n * variable on this instance and triggers any defined setters. This\n * also sets initial state and triggers any listeners.\n *\n * @returns - This controller instance\n */\n initialize() {\n this.internalState = this.defaultState;\n this.internalConfig = this.defaultConfig;\n this.configure(this.initialConfig);\n this.update(this.initialState);\n return this;\n }\n}\n\nexport { BaseController };\n","const filterNoop = () => true;\nconst internalEvents = [\"newListener\", \"removeListener\"];\nconst externalEventFilter = name => !internalEvents.includes(name);\nfunction getRawListeners(eventEmitter, name) {\n // prefer native\n return typeof eventEmitter.rawListeners !== \"undefined\" ? eventEmitter.rawListeners(name) : eventEmitter.listeners(name);\n}\nfunction createEventEmitterProxy(initialTarget, opts) {\n // parse options\n const finalOpts = opts || {};\n let eventFilter = finalOpts.eventFilter || filterNoop;\n if (typeof eventFilter === \"string\" && eventFilter === \"skipInternal\") eventFilter = externalEventFilter;\n if (typeof eventFilter !== \"function\") throw new Error(\"createEventEmitterProxy - Invalid eventFilter\");\n let target = initialTarget;\n let setTarget = newTarget => {\n if (target === newTarget) return;\n const oldTarget = target;\n target = newTarget;\n const eventNames = oldTarget.eventNames();\n eventNames.filter(eventFilter).forEach(name => {\n getRawListeners(oldTarget, name).forEach(handler => {\n newTarget.on(name, handler);\n });\n });\n\n // remove old listeners\n oldTarget.removeAllListeners();\n };\n const proxy = new Proxy({}, {\n get: (_, name) => {\n // override `setTarget` access\n if (name === \"setTarget\") return setTarget;\n return target[name];\n },\n set: (_, name, value) => {\n // allow `setTarget` overrides\n if (name === \"setTarget\") {\n setTarget = value;\n return true;\n }\n target[name] = value;\n return true;\n },\n has: (_, key) => {\n if (key[0] === \"_\") {\n return false;\n }\n return key in target;\n }\n });\n return proxy;\n}\n\nexport { createEventEmitterProxy };\n","/*\r\n * bignumber.js v9.1.2\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2022 Michael Mclaughlin \r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\nvar\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n/*\r\n * Create and return a BigNumber constructor.\r\n */\r\nfunction clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz',\r\n alphabetHasNormalDecimalDigits = true;\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10 && alphabetHasNormalDecimalDigits) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if less than two characters,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n alphabetHasNormalDecimalDigits = v.slice(0, 10) == '0123456789';\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, -1);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // THe index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n // If any number is NaN, return NaN.\r\n function maxOrMin(args, n) {\r\n var k, y,\r\n i = 1,\r\n x = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n y = new BigNumber(args[i]);\r\n if (!y.s || (k = compare(x, y)) === n || k === 0 && x.s === n) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = mathfloor(n / pows10[d - j - 1] % 10);\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : mathfloor(n / pows10[d - j - 1] % 10);\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? n.s * (2 - isOdd(n)) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) {\r\n zc = xc;\r\n xc = yc;\r\n yc = zc;\r\n i = xcL;\r\n xcL = ycL;\r\n ycL = i;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n b = a;\r\n }\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) {\r\n i = g1;\r\n g1 = g2;\r\n g2 = i;\r\n len -= i;\r\n }\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10 && alphabetHasNormalDecimalDigits) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n P[Symbol.toStringTag] = 'BigNumber';\r\n\r\n // Node.js v10.12.0+\r\n P[Symbol.for('nodejs.util.inspect.custom')] = P.valueOf;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n}\r\n\r\n\r\n// PRIVATE HELPER FUNCTIONS\r\n\r\n// These functions don't need access to variables,\r\n// e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\nfunction bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n}\r\n\r\n\r\n// Return a coefficient array as a string of base 10 digits.\r\nfunction coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n}\r\n\r\n\r\n// Compare the value of BigNumbers x and y.\r\nfunction compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n}\r\n\r\n\r\n/*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\nfunction intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n}\r\n\r\n\r\n// Assumes finite n.\r\nfunction isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n}\r\n\r\n\r\nfunction toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n}\r\n\r\n\r\nfunction toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n}\r\n\r\n\r\n// EXPORT\r\n\r\n\r\nexport var BigNumber = clone();\r\n\r\nexport default BigNumber;\r\n","import { fromSigned, bytesToBigInt, toUnsigned, stripHexPrefix, bigIntToHex, addHexPrefix, hashPersonalMessage, ecsign, bigIntToBytes } from '@ethereumjs/util';\nimport { safeatob } from '@web3auth/auth';\nimport BigNumber from 'bignumber.js';\n\n/**\n * General utility functions\n */\n\nfunction intToHex(i) {\n const hex = i.toString(16);\n return `0x${hex}`;\n}\n\n/**\n * Returns a random number. Don't use for cryptographic purposes.\n * @returns a random number\n */\nconst randomId = () => Math.random().toString(36).slice(2);\n\n/**\n * Pads the front of the given hex string with zeroes until it reaches the\n * target length. If the input string is already longer than or equal to the\n * target length, it is returned unmodified.\n *\n * If the input string is \"0x\"-prefixed or not a hex string, an error will be\n * thrown.\n *\n * @param hexString - The hexadecimal string to pad with zeroes.\n * @param targetLength - The target length of the hexadecimal string.\n * @returns The input string front-padded with zeroes, or the original string\n * if it was already greater than or equal to to the target length.\n */\nfunction padWithZeroes(hexString, targetLength) {\n if (hexString !== \"\" && !/^[a-f0-9]+$/iu.test(hexString)) {\n throw new Error(`Expected an unprefixed hex string. Received: ${hexString}`);\n }\n if (targetLength < 0) {\n throw new Error(`Expected a non-negative integer target length. Received: ${targetLength}`);\n }\n return String.prototype.padStart.call(hexString, targetLength, \"0\");\n}\n/**\n * Concatenate an extended ECDSA signature into a hex string.\n *\n * @param v - The 'v' portion of the signature.\n * @param r - The 'r' portion of the signature.\n * @param s - The 's' portion of the signature.\n * @returns The concatenated ECDSA signature.\n */\nfunction concatSig(v, r, s) {\n const rSig = fromSigned(r);\n const sSig = fromSigned(s);\n const vSig = bytesToBigInt(v);\n const rStr = padWithZeroes(Buffer.from(toUnsigned(rSig)).toString(\"hex\"), 64);\n const sStr = padWithZeroes(Buffer.from(toUnsigned(sSig)).toString(\"hex\"), 64);\n const vStr = stripHexPrefix(bigIntToHex(vSig));\n return addHexPrefix(rStr.concat(sStr, vStr));\n}\nfunction timeout(duration) {\n return new Promise(resolve => {\n const timeoutRef = window.setTimeout(() => {\n resolve();\n window.clearTimeout(timeoutRef);\n }, duration);\n });\n}\nconst getHeaders = (jwt, publicAddress) => {\n return {\n headers: {\n Authorization: `Bearer ${jwt}`,\n \"Content-Type\": \"application/json; charset=utf-8\",\n \"public-address\": publicAddress\n }\n };\n};\n\n/**\n * Text/number formatting utilities\n */\nconst formatSmallNumbers = (number, currency = \"usd\", noTilde = false) => {\n const finalNumber = BigNumber.isBigNumber(number) ? number.toNumber() : number;\n if (!Number.isFinite(finalNumber)) return \"\";\n const value = currency.toLowerCase() === \"usd\" ? parseFloat(Number(finalNumber).toFixed(2)) : parseFloat(Number(finalNumber).toFixed(5));\n const tilde = value > 0 ? \"~ \" : \"\";\n return `${currency.toLowerCase() === \"usd\" || noTilde ? \"\" : tilde}${Number(value)} ${currency.toUpperCase()}`;\n};\nconst addressSlicer = (address, sliceLength = 5) => {\n if (!address) return \"\";\n if (address.length < 11) {\n return address;\n }\n if (typeof address !== \"string\") return \"\";\n return `${address.slice(0, sliceLength)}...${address.slice(-sliceLength)}`;\n};\nconst significantDigits = (number, perc = false, length_ = 2) => {\n let input = !BigNumber.isBigNumber(number) ? new BigNumber(number) : number;\n if (input.isZero()) return input;\n if (perc) {\n input = input.times(new BigNumber(100));\n }\n let depth;\n if (input.gte(new BigNumber(1))) {\n depth = length_;\n } else {\n depth = length_ - 1 + Math.ceil(Math.log10(new BigNumber(\"1\").div(input).toNumber()));\n }\n const shift = new BigNumber(10).pow(new BigNumber(depth));\n const roundedNumber = Math.round(shift.times(input).toNumber()) / shift.toNumber();\n return roundedNumber;\n};\nconst formatDate = inputDate => {\n const monthList = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n const date = new Date(inputDate);\n const day = date.getDate();\n const month = monthList[date.getMonth()];\n const year = date.getFullYear();\n return `${day} ${month} ${year}`;\n};\nconst formatTime = time => {\n return new Date(time).toTimeString().slice(0, 8);\n};\n\n/**\n * Network utilities\n */\nconst transactionMatchesNetwork = (transaction, chainId) => {\n if (typeof transaction.chainId !== \"undefined\") {\n return transaction.chainId === chainId;\n }\n return false;\n};\n\n/**\n * Signing utils\n */\nconst hashMessage = message => {\n const bufferedMessage = Buffer.from(message, \"utf8\");\n const el = hashPersonalMessage(bufferedMessage);\n return Buffer.from(el);\n};\nconst signMessage = async (privateKey, data) => {\n const privKey = Buffer.from(privateKey, \"hex\");\n const message = stripHexPrefix(data);\n const msgSig = ecsign(Buffer.from(message, \"hex\"), privKey);\n const rawMsgSig = concatSig(Buffer.from(bigIntToBytes(msgSig.v)), Buffer.from(msgSig.r), Buffer.from(msgSig.s));\n return rawMsgSig;\n};\n\n/**\n * popup handler utils\n */\nfunction getPopupFeatures({\n width: w,\n height: h\n}) {\n // Fixes dual-screen position Most browsers Firefox\n const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : window.screenX;\n const dualScreenTop = window.screenTop !== undefined ? window.screenTop : window.screenY;\n const width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : window.screen.width;\n const height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : window.screen.height;\n const systemZoom = 1; // No reliable estimate\n\n const left = Math.abs((width - w) / 2 / systemZoom + dualScreenLeft);\n const top = Math.abs((height - h) / 2 / systemZoom + dualScreenTop);\n const features = `titlebar=0,toolbar=0,status=0,location=0,menubar=0,height=${h / systemZoom},width=${w / systemZoom},top=${top},left=${left}`;\n return features;\n}\nconst broadcastChannelOptions = {\n type: \"server\",\n // type: 'localstorage', // (optional) enforce a type, oneOf['native', 'idb', 'localstorage', 'node']\n webWorkerSupport: false // (optional) set this to false if you know that your channel will never be used in a WebWorker (increases performance)\n};\nfunction getCustomDeviceInfo() {\n var _navigator;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((_navigator = navigator) !== null && _navigator !== void 0 && _navigator.brave) {\n return {\n browser: \"Brave\"\n };\n }\n}\nclass UserError extends Error {}\nconst handleRedirectParameters = (hash, queryParameters) => {\n const hashParameters = {};\n const hashUrl = new URL(`${window.location.origin}/?${hash.slice(1)}`);\n hashUrl.searchParams.forEach((value, key) => {\n hashParameters[key] = value;\n });\n let instanceParameters = {};\n let error = \"\";\n if (!queryParameters.windowId) {\n if (Object.keys(hashParameters).length > 0 && hashParameters.state) {\n instanceParameters = JSON.parse(safeatob(decodeURIComponent(decodeURIComponent(hashParameters.state)))) || {};\n error = hashParameters.error_description || hashParameters.error || error;\n } else if (Object.keys(queryParameters).length > 0 && queryParameters.state) {\n instanceParameters = JSON.parse(safeatob(decodeURIComponent(decodeURIComponent(queryParameters.state)))) || {};\n if (queryParameters.error) error = queryParameters.error;\n }\n }\n return {\n error,\n instanceParameters,\n hashParameters\n };\n};\nfunction sleep(ms) {\n return new Promise(resolve => {\n setTimeout(resolve, ms);\n });\n}\nconst isUnauthorizedError = error => {\n return error instanceof Response && error.status === 401;\n};\n\nexport { UserError, addressSlicer, broadcastChannelOptions, concatSig, formatDate, formatSmallNumbers, formatTime, getCustomDeviceInfo, getHeaders, getPopupFeatures, handleRedirectParameters, hashMessage, intToHex, isUnauthorizedError, padWithZeroes, randomId, signMessage, significantDigits, sleep, timeout, transactionMatchesNetwork };\n","import { createAsyncMiddleware, rpcErrors } from '@web3auth/auth';\n\nconst RETRIABLE_ERRORS = [\n// ignore server overload errors\n\"Gateway timeout\", \"ETIMEDOUT\",\n// ignore server sent html error pages\n// or truncated json responses\n\"failed to parse response body\",\n// ignore errors where http req failed to establish\n\"Failed to fetch\"];\nfunction checkForHttpErrors(fetchRes) {\n // check for errors\n switch (fetchRes.status) {\n case 405:\n throw rpcErrors.methodNotFound();\n case 418:\n throw rpcErrors.internal({\n message: `Request is being rate limited.`,\n data: {\n cause: fetchRes\n }\n });\n case 503:\n case 504:\n throw rpcErrors.internal({\n message: `Gateway timeout. The request took too long to process.` + `This can happen when querying over too wide a block range.`,\n data: {\n cause: fetchRes\n }\n });\n }\n}\nfunction timeout(duration) {\n return new Promise(resolve => {\n setTimeout(resolve, duration);\n });\n}\nfunction parseResponse(fetchRes, body) {\n // check for error code\n if (fetchRes.status !== 200) {\n throw rpcErrors.internal({\n message: `Non-200 status code: '${fetchRes.status}'`,\n data: body\n });\n }\n // check for rpc error\n if (body.error) {\n var _body$error;\n throw rpcErrors.internal({\n data: body.error,\n message: (_body$error = body.error) === null || _body$error === void 0 ? void 0 : _body$error.message\n });\n }\n // return successful result\n return body.result;\n}\nfunction createFetchConfigFromReq({\n req,\n rpcTarget,\n originHttpHeaderKey\n}) {\n const parsedUrl = new URL(rpcTarget);\n\n // prepare payload\n // copy only canonical json rpc properties\n const payload = {\n id: req.id,\n jsonrpc: req.jsonrpc,\n method: req.method,\n params: req.params\n };\n\n // extract 'origin' parameter from request\n const originDomain = req.origin;\n\n // serialize request body\n const serializedPayload = JSON.stringify(payload);\n\n // configure fetch params\n const fetchParams = {\n method: \"POST\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\"\n },\n body: serializedPayload\n };\n\n // optional: add request origin as header\n if (originHttpHeaderKey && originDomain) {\n fetchParams.headers[originHttpHeaderKey] = originDomain;\n }\n return {\n fetchUrl: parsedUrl.href,\n fetchParams\n };\n}\nfunction createFetchMiddleware({\n rpcTarget,\n originHttpHeaderKey\n}) {\n return createAsyncMiddleware(async (req, res, _next) => {\n const {\n fetchUrl,\n fetchParams\n } = createFetchConfigFromReq({\n req,\n rpcTarget,\n originHttpHeaderKey\n });\n\n // attempt request multiple times\n const maxAttempts = 5;\n const retryInterval = 1000;\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n try {\n const fetchRes = await fetch(fetchUrl, fetchParams);\n // check for http errrors\n checkForHttpErrors(fetchRes);\n // parse response body\n const fetchBody = await fetchRes.json();\n const result = parseResponse(fetchRes, fetchBody);\n // set result and exit retry loop\n res.result = result;\n return;\n } catch (err) {\n const errMsg = (err.message || err).toString();\n const isRetriable = RETRIABLE_ERRORS.some(phrase => errMsg.includes(phrase));\n // re-throw error if not retriable\n if (!isRetriable) {\n throw err;\n }\n }\n // delay before retrying\n await timeout(retryInterval);\n }\n });\n}\n\nexport { createFetchConfigFromReq, createFetchMiddleware };\n","function omitBy(object, predicate) {\n // Create a new object to store the results\n const result = {};\n\n // Iterate over all own properties of the object\n for (const [key, value] of Object.entries(object)) {\n if (!predicate(value, key)) {\n result[key] = value;\n }\n }\n return result;\n}\nfunction pickBy(object, predicate) {\n // Create a new object to store the results\n const result = {};\n for (const [key, value] of Object.entries(object)) {\n if (predicate(value, key)) {\n result[key] = value;\n }\n }\n return result;\n}\nfunction cloneDeep(object) {\n try {\n return structuredClone(object);\n } catch (error) {\n return JSON.parse(JSON.stringify(object, (_, v) => typeof v === \"bigint\" ? v.toString() : v));\n }\n}\n\nexport { cloneDeep, omitBy, pickBy };\n","import _objectSpread from '@babel/runtime/helpers/objectSpread2';\n\nconst MULTI_CHAIN_ADAPTERS = {\n AUTH: \"auth\",\n WALLET_CONNECT_V2: \"wallet-connect-v2\",\n SFA: \"sfa\"\n};\nconst SOLANA_ADAPTERS = _objectSpread({\n TORUS_SOLANA: \"torus-solana\"\n}, MULTI_CHAIN_ADAPTERS);\nconst EVM_ADAPTERS = _objectSpread({\n TORUS_EVM: \"torus-evm\",\n COINBASE: \"coinbase\"\n}, MULTI_CHAIN_ADAPTERS);\nconst WALLET_ADAPTERS = _objectSpread(_objectSpread({}, EVM_ADAPTERS), SOLANA_ADAPTERS);\nconst ADAPTER_NAMES = {\n [MULTI_CHAIN_ADAPTERS.AUTH]: \"Auth\",\n [MULTI_CHAIN_ADAPTERS.WALLET_CONNECT_V2]: \"Wallet Connect v2\",\n [MULTI_CHAIN_ADAPTERS.SFA]: \"SFA\",\n [SOLANA_ADAPTERS.TORUS_SOLANA]: \"Torus\",\n [EVM_ADAPTERS.TORUS_EVM]: \"Torus\",\n [EVM_ADAPTERS.COINBASE]: \"Coinbase Smart Wallet\"\n};\n\nexport { ADAPTER_NAMES, EVM_ADAPTERS, MULTI_CHAIN_ADAPTERS, SOLANA_ADAPTERS, WALLET_ADAPTERS };\n","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport _objectSpread from '@babel/runtime/helpers/objectSpread2';\nimport { SafeEventEmitter, WEB3AUTH_NETWORK } from '@web3auth/auth';\nexport { UX_MODE, WEB3AUTH_NETWORK } from '@web3auth/auth';\nimport { getChainConfig } from '../chain/config.js';\nimport { CHAIN_NAMESPACES } from '../chain/IChainInterface.js';\nimport { WalletInitializationError, WalletLoginError, WalletOperationsError } from '../errors/index.js';\nimport { WALLET_ADAPTERS } from '../wallet/index.js';\n\nconst ADAPTER_CATEGORY = {\n EXTERNAL: \"external\",\n IN_APP: \"in_app\"\n};\nconst ADAPTER_STATUS = {\n NOT_READY: \"not_ready\",\n READY: \"ready\",\n CONNECTING: \"connecting\",\n CONNECTED: \"connected\",\n DISCONNECTED: \"disconnected\",\n ERRORED: \"errored\"\n};\nconst ADAPTER_EVENTS = _objectSpread(_objectSpread({}, ADAPTER_STATUS), {}, {\n ADAPTER_DATA_UPDATED: \"adapter_data_updated\",\n CACHE_CLEAR: \"cache_clear\"\n});\nclass BaseAdapter extends SafeEventEmitter {\n constructor(options = {}) {\n super();\n _defineProperty(this, \"adapterData\", {});\n _defineProperty(this, \"sessionTime\", 86400);\n _defineProperty(this, \"clientId\", void 0);\n _defineProperty(this, \"web3AuthNetwork\", WEB3AUTH_NETWORK.MAINNET);\n _defineProperty(this, \"useCoreKitKey\", undefined);\n _defineProperty(this, \"rehydrated\", false);\n // should be added in constructor or from setAdapterSettings function\n // before calling init function.\n _defineProperty(this, \"chainConfig\", null);\n _defineProperty(this, \"knownChainConfigs\", {});\n _defineProperty(this, \"adapterNamespace\", void 0);\n _defineProperty(this, \"currentChainNamespace\", void 0);\n _defineProperty(this, \"type\", void 0);\n _defineProperty(this, \"name\", void 0);\n _defineProperty(this, \"status\", void 0);\n this.setAdapterSettings(options);\n }\n get chainConfigProxy() {\n return this.chainConfig ? _objectSpread({}, this.chainConfig) : null;\n }\n get connnected() {\n return this.status === ADAPTER_STATUS.CONNECTED;\n }\n setAdapterSettings(options) {\n if (this.status === ADAPTER_STATUS.READY) return;\n if (options !== null && options !== void 0 && options.sessionTime) {\n this.sessionTime = options.sessionTime;\n }\n if (options !== null && options !== void 0 && options.clientId) {\n this.clientId = options.clientId;\n }\n if (options !== null && options !== void 0 && options.web3AuthNetwork) {\n this.web3AuthNetwork = options.web3AuthNetwork;\n }\n if ((options === null || options === void 0 ? void 0 : options.useCoreKitKey) !== undefined) {\n this.useCoreKitKey = options.useCoreKitKey;\n }\n const customChainConfig = options.chainConfig;\n if (customChainConfig) {\n if (!customChainConfig.chainNamespace) throw WalletInitializationError.notReady(\"ChainNamespace is required while setting chainConfig\");\n this.currentChainNamespace = customChainConfig.chainNamespace;\n // chainId is optional in this function.\n // we go with mainnet chainId by default.\n const defaultChainConfig = getChainConfig(customChainConfig.chainNamespace, customChainConfig.chainId);\n // NOTE: It is being forced casted to CustomChainConfig to handle OTHER Chainnamespace\n // where chainConfig is not required.\n const finalChainConfig = _objectSpread(_objectSpread({}, defaultChainConfig || {}), customChainConfig);\n this.chainConfig = finalChainConfig;\n this.addChainConfig(finalChainConfig);\n }\n }\n checkConnectionRequirements() {\n // we reconnect without killing existing wallet connect session on calling connect again.\n if (this.name === WALLET_ADAPTERS.WALLET_CONNECT_V2 && this.status === ADAPTER_STATUS.CONNECTING) return;else if (this.status === ADAPTER_STATUS.CONNECTING) throw WalletInitializationError.notReady(\"Already connecting\");\n if (this.status === ADAPTER_STATUS.CONNECTED) throw WalletLoginError.connectionError(\"Already connected\");\n if (this.status !== ADAPTER_STATUS.READY) throw WalletLoginError.connectionError(\"Wallet adapter is not ready yet, Please wait for init function to resolve before calling connect/connectTo function\");\n }\n checkInitializationRequirements() {\n if (!this.clientId) throw WalletInitializationError.invalidParams(\"Please initialize Web3Auth with a valid clientId in constructor\");\n if (!this.chainConfig) throw WalletInitializationError.invalidParams(\"rpcTarget is required in chainConfig\");\n if (!this.chainConfig.rpcTarget && this.chainConfig.chainNamespace !== CHAIN_NAMESPACES.OTHER) {\n throw WalletInitializationError.invalidParams(\"rpcTarget is required in chainConfig\");\n }\n if (!this.chainConfig.chainId && this.chainConfig.chainNamespace !== CHAIN_NAMESPACES.OTHER) {\n throw WalletInitializationError.invalidParams(\"chainID is required in chainConfig\");\n }\n if (this.status === ADAPTER_STATUS.NOT_READY) return;\n if (this.status === ADAPTER_STATUS.CONNECTED) throw WalletInitializationError.notReady(\"Already connected\");\n if (this.status === ADAPTER_STATUS.READY) throw WalletInitializationError.notReady(\"Adapter is already initialized\");\n }\n checkDisconnectionRequirements() {\n if (this.status !== ADAPTER_STATUS.CONNECTED) throw WalletLoginError.disconnectionError(\"Not connected with wallet\");\n }\n checkAddChainRequirements(chainConfig, init = false) {\n if (!init && !this.provider) throw WalletLoginError.notConnectedError(\"Not connected with wallet.\");\n if (this.currentChainNamespace !== chainConfig.chainNamespace) {\n throw WalletOperationsError.chainNamespaceNotAllowed(\"This adapter doesn't support this chainNamespace\");\n }\n }\n checkSwitchChainRequirements({\n chainId\n }, init = false) {\n if (!init && !this.provider) throw WalletLoginError.notConnectedError(\"Not connected with wallet.\");\n if (!this.knownChainConfigs[chainId]) throw WalletLoginError.chainConfigNotAdded(\"Invalid chainId\");\n }\n updateAdapterData(data) {\n this.adapterData = data;\n this.emit(ADAPTER_EVENTS.ADAPTER_DATA_UPDATED, {\n adapterName: this.name,\n data\n });\n }\n addChainConfig(chainConfig) {\n const currentConfig = this.knownChainConfigs[chainConfig.chainId];\n this.knownChainConfigs[chainConfig.chainId] = _objectSpread(_objectSpread({}, currentConfig || {}), chainConfig);\n }\n getChainConfig(chainId) {\n return this.knownChainConfigs[chainId] || null;\n }\n}\n\nexport { ADAPTER_CATEGORY, ADAPTER_EVENTS, ADAPTER_STATUS, BaseAdapter };\n","export { cloneDeep } from '@toruslabs/base-controllers';\nimport { SIGNER_MAP } from '@toruslabs/constants';\nimport { get } from '@toruslabs/http-helpers';\nimport './adapter/IAdapter.js';\nimport { WEB3AUTH_NETWORK } from '@web3auth/auth';\n\nfunction storageAvailable(type) {\n let storageExists = false;\n let storageLength = 0;\n let storage;\n try {\n storage = window[type];\n storageExists = true;\n storageLength = storage.length;\n const x = \"__storage_test__\";\n storage.setItem(x, x);\n storage.removeItem(x);\n return true;\n } catch (error) {\n const _error = error;\n return !!(_error && (\n // everything except Firefox\n _error.code === 22 ||\n // Firefox\n _error.code === 1014 ||\n // test name field too, because code might not be present\n // everything except Firefox\n _error.name === \"QuotaExceededError\" ||\n // Firefox\n _error.name === \"NS_ERROR_DOM_QUOTA_REACHED\") &&\n // acknowledge QuotaExceededError only if there's something already stored\n storageExists && storageLength !== 0);\n }\n}\nconst isHexStrict = hex => {\n return (typeof hex === \"string\" || typeof hex === \"number\") && /^(-)?0x[0-9a-f]*$/i.test(hex);\n};\nconst signerHost = web3AuthNetwork => {\n return SIGNER_MAP[web3AuthNetwork !== null && web3AuthNetwork !== void 0 ? web3AuthNetwork : WEB3AUTH_NETWORK.SAPPHIRE_MAINNET];\n};\nconst fetchProjectConfig = async (clientId, web3AuthNetwork, aaProvider) => {\n const url = new URL(`${signerHost(web3AuthNetwork)}/api/configuration`);\n url.searchParams.append(\"project_id\", clientId);\n url.searchParams.append(\"network\", web3AuthNetwork);\n url.searchParams.append(\"whitelist\", \"true\");\n if (aaProvider) url.searchParams.append(\"aa_provider\", aaProvider);\n const res = await get(url.href);\n return res;\n};\nconst fetchWalletRegistry = async url => {\n const res = await get(url || \"https://assets.web3auth.io/v1/wallet-registry.json\");\n return res;\n};\n\n// Normalize wallet name to a standard format, used for external wallets that are auto-detected by MIPD (EIP-6963 and Wallet Standard)\nconst normalizeWalletName = name => {\n let normalizedName = name.toLowerCase();\n // remove decriptive part after | e.g. \"Crypto.com | Defi Wallet\" => \"Crypto.com\"\n normalizedName = normalizedName.split(\"|\")[0];\n\n // replace - with space e.g. \"Trust - Wallet\" => \"Trust Wallet\"\n normalizedName = normalizedName.replace(/-/g, \" \");\n\n // replace multiple spaces with single space\n normalizedName = normalizedName.replace(/\\s+/g, \" \");\n\n // remove trailing \"wallet\" e.g. \"Trust Wallet\" => \"Trust\", \"GateWallet\" => \"Gate\"\n normalizedName = normalizedName.replace(/wallet$/i, \"\").trim();\n\n // replace space with -\n normalizedName = normalizedName.replace(/\\s/g, \"-\");\n return normalizedName;\n};\n\nexport { fetchProjectConfig, fetchWalletRegistry, isHexStrict, normalizeWalletName, signerHost, storageAvailable };\n","import _objectSpread from '@babel/runtime/helpers/objectSpread2';\nimport { CHAIN_NAMESPACES } from '../chain/IChainInterface.js';\n\nconst PLUGIN_NAMESPACES = _objectSpread(_objectSpread({}, CHAIN_NAMESPACES), {}, {\n MULTICHAIN: \"multichain\"\n});\nconst PLUGIN_STATUS = {\n READY: \"ready\",\n CONNECTING: \"connecting\",\n CONNECTED: \"connected\",\n DISCONNECTED: \"disconnected\",\n ERRORED: \"errored\"\n};\nconst PLUGIN_EVENTS = _objectSpread({}, PLUGIN_STATUS);\nconst EVM_PLUGINS = {\n WALLET_SERVICES: \"wallet-services\",\n NFT_CHECKOUT: \"nft-checkout\"\n};\nconst SOLANA_PLUGINS = {\n SOLANA: \"solana\"\n};\nconst WALLET_PLUGINS = _objectSpread(_objectSpread({}, EVM_PLUGINS), SOLANA_PLUGINS);\n\nexport { EVM_PLUGINS, PLUGIN_EVENTS, PLUGIN_NAMESPACES, PLUGIN_STATUS, SOLANA_PLUGINS, WALLET_PLUGINS };\n","import { WEB3AUTH_NETWORK, UX_MODE } from '@web3auth/auth';\n\nconst getAuthDefaultOptions = () => {\n return {\n adapterSettings: {\n network: WEB3AUTH_NETWORK.SAPPHIRE_MAINNET,\n clientId: \"\",\n uxMode: UX_MODE.POPUP\n },\n loginSettings: {},\n privateKeyProvider: undefined\n };\n};\n\nexport { getAuthDefaultOptions };\n","import _objectSpread from '@babel/runtime/helpers/objectSpread2';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport { UX_MODE, Auth, WEB3AUTH_NETWORK, SUPPORTED_KEY_CURVES } from '@web3auth/auth';\nimport { BaseAdapter, WALLET_ADAPTERS, ADAPTER_NAMESPACES, ADAPTER_CATEGORY, ADAPTER_STATUS, CHAIN_NAMESPACES, WalletInitializationError, log, ADAPTER_EVENTS, WalletLoginError, Web3AuthError } from '@web3auth/base';\nimport deepmerge from 'deepmerge';\nimport { getAuthDefaultOptions } from './config.js';\n\nclass AuthAdapter extends BaseAdapter {\n constructor(params = {}) {\n super(params);\n _defineProperty(this, \"name\", WALLET_ADAPTERS.AUTH);\n _defineProperty(this, \"adapterNamespace\", ADAPTER_NAMESPACES.MULTICHAIN);\n _defineProperty(this, \"type\", ADAPTER_CATEGORY.IN_APP);\n _defineProperty(this, \"authInstance\", null);\n _defineProperty(this, \"status\", ADAPTER_STATUS.NOT_READY);\n _defineProperty(this, \"currentChainNamespace\", CHAIN_NAMESPACES.EIP155);\n _defineProperty(this, \"privateKeyProvider\", null);\n _defineProperty(this, \"authOptions\", void 0);\n _defineProperty(this, \"loginSettings\", {\n loginProvider: \"\"\n });\n this.setAdapterSettings(_objectSpread(_objectSpread({}, params.adapterSettings), {}, {\n chainConfig: params.chainConfig,\n clientId: params.clientId || \"\",\n sessionTime: params.sessionTime,\n web3AuthNetwork: params.web3AuthNetwork,\n useCoreKitKey: params.useCoreKitKey,\n privateKeyProvider: params.privateKeyProvider\n }));\n this.loginSettings = params.loginSettings || {\n loginProvider: \"\"\n };\n this.privateKeyProvider = params.privateKeyProvider || null;\n }\n get chainConfigProxy() {\n return this.chainConfig ? _objectSpread({}, this.chainConfig) : null;\n }\n get provider() {\n if (this.status !== ADAPTER_STATUS.NOT_READY && this.privateKeyProvider) {\n return this.privateKeyProvider;\n }\n return null;\n }\n set provider(_) {\n throw new Error(\"Not implemented\");\n }\n async init(options) {\n super.checkInitializationRequirements();\n if (!this.clientId) throw WalletInitializationError.invalidParams(\"clientId is required before auth's initialization\");\n if (!this.authOptions) throw WalletInitializationError.invalidParams(\"authOptions is required before auth's initialization\");\n const isRedirectResult = this.authOptions.uxMode === UX_MODE.REDIRECT;\n this.authOptions = _objectSpread(_objectSpread({}, this.authOptions), {}, {\n replaceUrlOnRedirect: isRedirectResult,\n useCoreKitKey: this.useCoreKitKey\n });\n this.authInstance = new Auth(_objectSpread(_objectSpread({}, this.authOptions), {}, {\n clientId: this.clientId,\n network: this.authOptions.network || this.web3AuthNetwork || WEB3AUTH_NETWORK.SAPPHIRE_MAINNET\n }));\n log.debug(\"initializing auth adapter init\");\n await this.authInstance.init();\n if (!this.chainConfig) throw WalletInitializationError.invalidParams(\"chainConfig is required before initialization\");\n this.status = ADAPTER_STATUS.READY;\n this.emit(ADAPTER_EVENTS.READY, WALLET_ADAPTERS.AUTH);\n try {\n log.debug(\"initializing auth adapter\");\n const finalPrivKey = this._getFinalPrivKey();\n // connect only if it is redirect result or if connect (adapter is cached/already connected in same session) is true\n if (finalPrivKey && (options.autoConnect || isRedirectResult)) {\n this.rehydrated = true;\n await this.connect();\n }\n } catch (error) {\n log.error(\"Failed to connect with cached auth provider\", error);\n this.emit(ADAPTER_EVENTS.ERRORED, error);\n }\n }\n async connect(params = {\n loginProvider: \"\"\n }) {\n super.checkConnectionRequirements();\n this.status = ADAPTER_STATUS.CONNECTING;\n this.emit(ADAPTER_EVENTS.CONNECTING, _objectSpread(_objectSpread({}, params), {}, {\n adapter: WALLET_ADAPTERS.AUTH\n }));\n try {\n await this.connectWithProvider(params);\n return this.provider;\n } catch (error) {\n log.error(\"Failed to connect with auth provider\", error);\n // ready again to be connected\n this.status = ADAPTER_STATUS.READY;\n this.emit(ADAPTER_EVENTS.ERRORED, error);\n if (error !== null && error !== void 0 && error.message.includes(\"user closed popup\")) {\n throw WalletLoginError.popupClosed();\n } else if (error instanceof Web3AuthError) {\n throw error;\n }\n throw WalletLoginError.connectionError(\"Failed to login with auth\", error);\n }\n }\n async enableMFA(params = {\n loginProvider: \"\"\n }) {\n if (this.status !== ADAPTER_STATUS.CONNECTED) throw WalletLoginError.notConnectedError(\"Not connected with wallet\");\n if (!this.authInstance) throw WalletInitializationError.notReady(\"authInstance is not ready\");\n try {\n await this.authInstance.enableMFA(params);\n } catch (error) {\n log.error(\"Failed to enable MFA with auth provider\", error);\n if (error instanceof Web3AuthError) {\n throw error;\n }\n throw WalletLoginError.connectionError(\"Failed to enable MFA with auth\", error);\n }\n }\n async manageMFA(params = {\n loginProvider: \"\"\n }) {\n if (this.status !== ADAPTER_STATUS.CONNECTED) throw WalletLoginError.notConnectedError(\"Not connected with wallet\");\n if (!this.authInstance) throw WalletInitializationError.notReady(\"authInstance is not ready\");\n try {\n await this.authInstance.manageMFA(params);\n } catch (error) {\n log.error(\"Failed to manage MFA with auth provider\", error);\n if (error instanceof Web3AuthError) {\n throw error;\n }\n throw WalletLoginError.connectionError(\"Failed to manage MFA with auth\", error);\n }\n }\n async disconnect(options = {\n cleanup: false\n }) {\n if (this.status !== ADAPTER_STATUS.CONNECTED) throw WalletLoginError.notConnectedError(\"Not connected with wallet\");\n if (!this.authInstance) throw WalletInitializationError.notReady(\"authInstance is not ready\");\n await this.authInstance.logout();\n if (options.cleanup) {\n this.status = ADAPTER_STATUS.NOT_READY;\n this.authInstance = null;\n this.privateKeyProvider = null;\n } else {\n // ready to be connected again\n this.status = ADAPTER_STATUS.READY;\n }\n this.rehydrated = false;\n this.emit(ADAPTER_EVENTS.DISCONNECTED);\n }\n async authenticateUser() {\n if (this.status !== ADAPTER_STATUS.CONNECTED) throw WalletLoginError.notConnectedError(\"Not connected with wallet, Please login/connect first\");\n const userInfo = await this.getUserInfo();\n return {\n idToken: userInfo.idToken\n };\n }\n async getUserInfo() {\n if (this.status !== ADAPTER_STATUS.CONNECTED) throw WalletLoginError.notConnectedError(\"Not connected with wallet\");\n if (!this.authInstance) throw WalletInitializationError.notReady(\"authInstance is not ready\");\n const userInfo = this.authInstance.getUserInfo();\n return userInfo;\n }\n\n // should be called only before initialization.\n setAdapterSettings(adapterSettings) {\n super.setAdapterSettings(adapterSettings);\n const defaultOptions = getAuthDefaultOptions();\n log.info(\"setting adapter settings\", adapterSettings);\n this.authOptions = deepmerge.all([defaultOptions.adapterSettings, this.authOptions || {}, adapterSettings || {}]);\n if (adapterSettings.web3AuthNetwork) {\n this.authOptions.network = adapterSettings.web3AuthNetwork;\n }\n if (adapterSettings.privateKeyProvider) {\n this.privateKeyProvider = adapterSettings.privateKeyProvider;\n }\n }\n async addChain(chainConfig, init = false) {\n var _this$privateKeyProvi;\n super.checkAddChainRequirements(chainConfig, init);\n (_this$privateKeyProvi = this.privateKeyProvider) === null || _this$privateKeyProvi === void 0 || _this$privateKeyProvi.addChain(chainConfig);\n this.addChainConfig(chainConfig);\n }\n async switchChain(params, init = false) {\n var _this$privateKeyProvi2;\n super.checkSwitchChainRequirements(params, init);\n await ((_this$privateKeyProvi2 = this.privateKeyProvider) === null || _this$privateKeyProvi2 === void 0 ? void 0 : _this$privateKeyProvi2.switchChain(params));\n this.setAdapterSettings({\n chainConfig: this.getChainConfig(params.chainId)\n });\n }\n _getFinalPrivKey() {\n if (!this.authInstance) return \"\";\n let finalPrivKey = this.authInstance.privKey;\n // coreKitKey is available only for custom verifiers by default\n if (this.useCoreKitKey) {\n // this is to check if the user has already logged in but coreKitKey is not available.\n // when useCoreKitKey is set to true.\n // This is to ensure that when there is no user session active, we don't throw an exception.\n if (this.authInstance.privKey && !this.authInstance.coreKitKey) {\n throw WalletLoginError.coreKitKeyNotFound();\n }\n finalPrivKey = this.authInstance.coreKitKey;\n }\n return finalPrivKey;\n }\n _getFinalEd25519PrivKey() {\n if (!this.authInstance) return \"\";\n let finalPrivKey = this.authInstance.ed25519PrivKey;\n // coreKitKey is available only for custom verifiers by default\n if (this.useCoreKitKey) {\n // this is to check if the user has already logged in but coreKitKey is not available.\n // when useCoreKitKey is set to true.\n // This is to ensure that when there is no user session active, we don't throw an exception.\n if (this.authInstance.ed25519PrivKey && !this.authInstance.coreKitEd25519Key) {\n throw WalletLoginError.coreKitKeyNotFound();\n }\n finalPrivKey = this.authInstance.coreKitEd25519Key;\n }\n return finalPrivKey;\n }\n async connectWithProvider(params = {\n loginProvider: \"\"\n }) {\n var _params$extraLoginOpt;\n if (!this.privateKeyProvider) throw WalletInitializationError.invalidParams(\"PrivateKey Provider is required before initialization\");\n if (!this.authInstance) throw WalletInitializationError.notReady(\"authInstance is not ready\");\n const keyAvailable = this._getFinalPrivKey();\n // if not logged in then login\n if (!keyAvailable || (_params$extraLoginOpt = params.extraLoginOptions) !== null && _params$extraLoginOpt !== void 0 && _params$extraLoginOpt.id_token) {\n var _params$extraLoginOpt2;\n if (!this.loginSettings.curve) {\n this.loginSettings.curve = this.currentChainNamespace === CHAIN_NAMESPACES.SOLANA ? SUPPORTED_KEY_CURVES.ED25519 : SUPPORTED_KEY_CURVES.SECP256K1;\n }\n if (!params.loginProvider && !this.loginSettings.loginProvider) throw WalletInitializationError.invalidParams(\"loginProvider is required for login\");\n await this.authInstance.login(deepmerge.all([this.loginSettings, params, {\n extraLoginOptions: _objectSpread(_objectSpread({}, params.extraLoginOptions || {}), {}, {\n login_hint: params.login_hint || ((_params$extraLoginOpt2 = params.extraLoginOptions) === null || _params$extraLoginOpt2 === void 0 ? void 0 : _params$extraLoginOpt2.login_hint)\n })\n }]));\n }\n let finalPrivKey = this._getFinalPrivKey();\n if (finalPrivKey) {\n if (this.currentChainNamespace === CHAIN_NAMESPACES.SOLANA) {\n finalPrivKey = this._getFinalEd25519PrivKey();\n }\n await this.privateKeyProvider.setupProvider(finalPrivKey);\n this.status = ADAPTER_STATUS.CONNECTED;\n this.emit(ADAPTER_EVENTS.CONNECTED, {\n adapter: WALLET_ADAPTERS.AUTH,\n reconnected: this.rehydrated,\n provider: this.provider\n });\n }\n }\n}\n\nexport { AuthAdapter };\n","import _objectSpread from '@babel/runtime/helpers/objectSpread2';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport { BaseController, createEventEmitterProxy } from '@toruslabs/base-controllers';\nimport { rpcErrors } from '@web3auth/auth';\nimport { WalletInitializationError, WalletProviderError } from '@web3auth/base';\n\nclass BaseProvider extends BaseController {\n constructor({\n config,\n state\n }) {\n super({\n config,\n state\n });\n // should be Assigned in setupProvider\n _defineProperty(this, \"_providerEngineProxy\", null);\n // set to true when the keyExportEnabled flag is set by code.\n // This is to prevent the flag from being overridden by the dashboard config.\n _defineProperty(this, \"keyExportFlagSetByCode\", false);\n if (!config.chainConfig) throw WalletInitializationError.invalidProviderConfigError(\"Please provide chainConfig\");\n if (!config.chainConfig.chainId) throw WalletInitializationError.invalidProviderConfigError(\"Please provide chainId inside chainConfig\");\n if (!config.chainConfig.rpcTarget) throw WalletInitializationError.invalidProviderConfigError(\"Please provide rpcTarget inside chainConfig\");\n if (typeof config.keyExportEnabled === \"boolean\") this.keyExportFlagSetByCode = true;\n this.defaultState = {\n chainId: \"loading\"\n };\n this.defaultConfig = {\n chainConfig: config.chainConfig,\n networks: {\n [config.chainConfig.chainId]: config.chainConfig\n },\n keyExportEnabled: typeof config.keyExportEnabled === \"boolean\" ? config.keyExportEnabled : true\n };\n super.initialize();\n }\n get currentChainConfig() {\n return this.config.chainConfig;\n }\n get provider() {\n return this._providerEngineProxy;\n }\n get chainId() {\n return this.state.chainId;\n }\n set provider(_) {\n throw new Error(\"Method not implemented.\");\n }\n async request(args) {\n var _this$provider;\n if (!args || typeof args !== \"object\" || Array.isArray(args)) {\n throw rpcErrors.invalidRequest({\n message: WalletProviderError.invalidRequestArgs().message,\n data: _objectSpread(_objectSpread({}, args || {}), {}, {\n cause: WalletProviderError.invalidRequestArgs().message\n })\n });\n }\n const {\n method,\n params\n } = args;\n if (typeof method !== \"string\" || method.length === 0) {\n throw rpcErrors.invalidRequest({\n message: WalletProviderError.invalidRequestMethod().message,\n data: _objectSpread(_objectSpread({}, args || {}), {}, {\n cause: WalletProviderError.invalidRequestMethod().message\n })\n });\n }\n if (params !== undefined && !Array.isArray(params) && (typeof params !== \"object\" || params === null)) {\n throw rpcErrors.invalidRequest({\n message: WalletProviderError.invalidRequestParams().message,\n data: _objectSpread(_objectSpread({}, args || {}), {}, {\n cause: WalletProviderError.invalidRequestParams().message\n })\n });\n }\n return (_this$provider = this.provider) === null || _this$provider === void 0 ? void 0 : _this$provider.request(args);\n }\n sendAsync(req, callback) {\n if (callback) return this.send(req, callback);\n return this.request(req);\n }\n send(req, callback) {\n this.request(req).then(res => callback(null, {\n result: res\n })).catch(err => callback(err, null));\n }\n addChain(chainConfig) {\n if (!chainConfig.chainId) throw rpcErrors.invalidParams(\"chainId is required\");\n if (!chainConfig.rpcTarget) throw rpcErrors.invalidParams(\"chainId is required\");\n this.configure({\n networks: _objectSpread(_objectSpread({}, this.config.networks), {}, {\n [chainConfig.chainId]: chainConfig\n })\n });\n }\n getChainConfig(chainId) {\n var _this$config$networks;\n const chainConfig = (_this$config$networks = this.config.networks) === null || _this$config$networks === void 0 ? void 0 : _this$config$networks[chainId];\n if (!chainConfig) throw rpcErrors.invalidRequest(`Chain ${chainId} is not supported, please add chainConfig for it`);\n return chainConfig;\n }\n updateProviderEngineProxy(provider) {\n if (this._providerEngineProxy) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._providerEngineProxy.setTarget(provider);\n } else {\n this._providerEngineProxy = createEventEmitterProxy(provider);\n }\n }\n setKeyExportFlag(flag) {\n if (!this.keyExportFlagSetByCode) {\n this.configure({\n keyExportEnabled: flag\n });\n }\n }\n getProviderEngineProxy() {\n return this._providerEngineProxy;\n }\n}\n\nexport { BaseProvider };\n","import { createFetchMiddleware } from '@toruslabs/base-controllers';\nimport { mergeMiddleware } from '@web3auth/auth';\n\nfunction createChainIdMiddleware(chainId) {\n return (req, res, next, end) => {\n if (req.method === \"chainId\") {\n res.result = chainId;\n return end();\n }\n return next();\n };\n}\nfunction createProviderConfigMiddleware(providerConfig) {\n return (req, res, next, end) => {\n if (req.method === \"provider_config\") {\n res.result = providerConfig;\n return end();\n }\n return next();\n };\n}\nfunction createJsonRpcClient(providerConfig) {\n const {\n chainId,\n rpcTarget\n } = providerConfig;\n const fetchMiddleware = createFetchMiddleware({\n rpcTarget\n });\n const networkMiddleware = mergeMiddleware([createChainIdMiddleware(chainId), createProviderConfigMiddleware(providerConfig), fetchMiddleware]);\n return {\n networkMiddleware,\n fetchMiddleware\n };\n}\n\nexport { createChainIdMiddleware, createJsonRpcClient, createProviderConfigMiddleware };\n","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport { createEventEmitterProxy } from '@toruslabs/base-controllers';\nimport { JRPCEngine, providerFromEngine, providerErrors } from '@web3auth/auth';\nimport { BaseProvider } from './baseProvider.js';\nimport { createJsonRpcClient } from './jrpcClient.js';\n\nvar _CommonJRPCProvider;\nclass CommonJRPCProvider extends BaseProvider {\n constructor({\n config,\n state\n }) {\n super({\n config,\n state\n });\n }\n async setupProvider() {\n const {\n networkMiddleware\n } = createJsonRpcClient(this.config.chainConfig);\n const engine = new JRPCEngine();\n engine.push(networkMiddleware);\n const provider = providerFromEngine(engine);\n this.updateProviderEngineProxy(provider);\n const newChainId = this.config.chainConfig.chainId;\n if (this.state.chainId !== newChainId) {\n this.emit(\"chainChanged\", newChainId);\n this.emit(\"connect\", {\n chainId: newChainId\n });\n }\n this.update({\n chainId: this.config.chainConfig.chainId\n });\n }\n async switchChain(params) {\n if (!this._providerEngineProxy) throw providerErrors.custom({\n message: \"Provider is not initialized\",\n code: 4902\n });\n const chainConfig = this.getChainConfig(params.chainId);\n this.update({\n chainId: \"loading\"\n });\n this.configure({\n chainConfig\n });\n await this.setupProvider();\n }\n updateProviderEngineProxy(provider) {\n if (this._providerEngineProxy) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._providerEngineProxy.setTarget(provider);\n } else {\n this._providerEngineProxy = createEventEmitterProxy(provider);\n }\n }\n getProviderEngineProxy() {\n return this._providerEngineProxy;\n }\n lookupNetwork() {\n throw new Error(\"Method not implemented.\");\n }\n}\n_CommonJRPCProvider = CommonJRPCProvider;\n_defineProperty(CommonJRPCProvider, \"getProviderInstance\", async params => {\n const providerFactory = new _CommonJRPCProvider({\n config: {\n chainConfig: params.chainConfig\n }\n });\n await providerFactory.setupProvider();\n return providerFactory;\n});\n\nexport { CommonJRPCProvider };\n","import _objectSpread from '@babel/runtime/helpers/objectSpread2';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport { SafeEventEmitter } from '@web3auth/auth';\nimport { LOGIN_PROVIDER } from '@web3auth/auth-adapter';\nimport { ADAPTER_STATUS, WalletInitializationError, log, CHAIN_NAMESPACES, storageAvailable, getChainConfig, fetchProjectConfig, WALLET_ADAPTERS, cloneDeep, ADAPTER_EVENTS, ADAPTER_NAMESPACES, WalletLoginError, PLUGIN_NAMESPACES, PLUGIN_STATUS } from '@web3auth/base';\nimport { CommonJRPCProvider } from '@web3auth/base-provider';\nimport deepmerge from 'deepmerge';\n\nconst ADAPTER_CACHE_KEY = \"Web3Auth-cachedAdapter\";\nclass Web3AuthNoModal extends SafeEventEmitter {\n constructor(options) {\n var _options$chainConfig, _options$chainConfig2, _options$chainConfig3, _options$chainConfig4;\n super();\n _defineProperty(this, \"coreOptions\", void 0);\n _defineProperty(this, \"connectedAdapterName\", null);\n _defineProperty(this, \"status\", ADAPTER_STATUS.NOT_READY);\n _defineProperty(this, \"cachedAdapter\", null);\n _defineProperty(this, \"walletAdapters\", {});\n _defineProperty(this, \"commonJRPCProvider\", null);\n _defineProperty(this, \"plugins\", {});\n _defineProperty(this, \"storage\", \"localStorage\");\n if (!options.clientId) throw WalletInitializationError.invalidParams(\"Please provide a valid clientId in constructor\");\n if (options.enableLogging) log.enableAll();else log.setLevel(\"error\");\n if (!options.privateKeyProvider && !options.chainConfig) {\n throw WalletInitializationError.invalidParams(\"Please provide chainConfig or privateKeyProvider\");\n }\n options.chainConfig = options.chainConfig || options.privateKeyProvider.currentChainConfig;\n if (!((_options$chainConfig = options.chainConfig) !== null && _options$chainConfig !== void 0 && _options$chainConfig.chainNamespace) || !Object.values(CHAIN_NAMESPACES).includes((_options$chainConfig2 = options.chainConfig) === null || _options$chainConfig2 === void 0 ? void 0 : _options$chainConfig2.chainNamespace)) throw WalletInitializationError.invalidParams(\"Please provide a valid chainNamespace in chainConfig\");\n if (options.storageKey === \"session\") this.storage = \"sessionStorage\";\n this.cachedAdapter = storageAvailable(this.storage) ? window[this.storage].getItem(ADAPTER_CACHE_KEY) : null;\n this.coreOptions = _objectSpread(_objectSpread({}, options), {}, {\n chainConfig: _objectSpread(_objectSpread({}, getChainConfig((_options$chainConfig3 = options.chainConfig) === null || _options$chainConfig3 === void 0 ? void 0 : _options$chainConfig3.chainNamespace, (_options$chainConfig4 = options.chainConfig) === null || _options$chainConfig4 === void 0 ? void 0 : _options$chainConfig4.chainId) || {}), options.chainConfig)\n });\n this.subscribeToAdapterEvents = this.subscribeToAdapterEvents.bind(this);\n }\n get connected() {\n return Boolean(this.connectedAdapterName);\n }\n get provider() {\n if (this.status !== ADAPTER_STATUS.NOT_READY && this.commonJRPCProvider) {\n return this.commonJRPCProvider;\n }\n return null;\n }\n set provider(_) {\n throw new Error(\"Not implemented\");\n }\n async init() {\n this.commonJRPCProvider = await CommonJRPCProvider.getProviderInstance({\n chainConfig: this.coreOptions.chainConfig\n });\n let projectConfig;\n try {\n var _this$coreOptions$acc;\n projectConfig = await fetchProjectConfig(this.coreOptions.clientId, this.coreOptions.web3AuthNetwork, (_this$coreOptions$acc = this.coreOptions.accountAbstractionProvider) === null || _this$coreOptions$acc === void 0 ? void 0 : _this$coreOptions$acc.config.smartAccountInit.name);\n } catch (e) {\n log.error(\"Failed to fetch project configurations\", e);\n throw WalletInitializationError.notReady(\"failed to fetch project configurations\", e);\n }\n const initPromises = Object.keys(this.walletAdapters).map(async adapterName => {\n this.subscribeToAdapterEvents(this.walletAdapters[adapterName]);\n // if adapter doesn't have any chain config yet then set it based on provided namespace and chainId.\n // if no chainNamespace or chainId is being provided, it will connect with mainnet.\n if (!this.walletAdapters[adapterName].chainConfigProxy) {\n const providedChainConfig = this.coreOptions.chainConfig;\n if (!providedChainConfig.chainNamespace) throw WalletInitializationError.invalidParams(\"Please provide chainNamespace in chainConfig\");\n this.walletAdapters[adapterName].setAdapterSettings({\n chainConfig: providedChainConfig,\n sessionTime: this.coreOptions.sessionTime,\n clientId: this.coreOptions.clientId,\n web3AuthNetwork: this.coreOptions.web3AuthNetwork,\n useCoreKitKey: this.coreOptions.useCoreKitKey\n });\n } else {\n this.walletAdapters[adapterName].setAdapterSettings({\n sessionTime: this.coreOptions.sessionTime,\n clientId: this.coreOptions.clientId,\n web3AuthNetwork: this.coreOptions.web3AuthNetwork,\n useCoreKitKey: this.coreOptions.useCoreKitKey\n });\n }\n if (adapterName === WALLET_ADAPTERS.AUTH) {\n const authAdapter = this.walletAdapters[adapterName];\n const {\n whitelabel\n } = projectConfig;\n this.coreOptions.uiConfig = deepmerge(cloneDeep(whitelabel || {}), this.coreOptions.uiConfig || {});\n if (!this.coreOptions.uiConfig.mode) this.coreOptions.uiConfig.mode = \"light\";\n const {\n sms_otp_enabled: smsOtpEnabled,\n whitelist,\n key_export_enabled: keyExportEnabled\n } = projectConfig;\n if (smsOtpEnabled !== undefined) {\n authAdapter.setAdapterSettings({\n loginConfig: {\n [LOGIN_PROVIDER.SMS_PASSWORDLESS]: {\n showOnModal: smsOtpEnabled,\n showOnDesktop: smsOtpEnabled,\n showOnMobile: smsOtpEnabled,\n showOnSocialBackupFactor: smsOtpEnabled\n }\n }\n });\n }\n if (whitelist) {\n authAdapter.setAdapterSettings({\n originData: whitelist.signed_urls\n });\n }\n if (typeof keyExportEnabled === \"boolean\") {\n this.coreOptions.privateKeyProvider.setKeyExportFlag(keyExportEnabled);\n // dont know if this is required or not.\n this.commonJRPCProvider.setKeyExportFlag(keyExportEnabled);\n }\n if (this.coreOptions.privateKeyProvider) {\n if (authAdapter.currentChainNamespace !== this.coreOptions.privateKeyProvider.currentChainConfig.chainNamespace) {\n throw WalletInitializationError.incompatibleChainNameSpace(\"private key provider is not compatible with provided chainNamespace for auth adapter\");\n }\n authAdapter.setAdapterSettings({\n privateKeyProvider: this.coreOptions.privateKeyProvider\n });\n }\n authAdapter.setAdapterSettings({\n whiteLabel: this.coreOptions.uiConfig\n });\n if (!authAdapter.privateKeyProvider) {\n throw WalletInitializationError.invalidParams(\"privateKeyProvider is required for auth adapter\");\n }\n } else if (adapterName === WALLET_ADAPTERS.WALLET_CONNECT_V2) {\n const walletConnectAdapter = this.walletAdapters[adapterName];\n const {\n wallet_connect_enabled: walletConnectEnabled,\n wallet_connect_project_id: walletConnectProjectId\n } = projectConfig;\n if (walletConnectEnabled === false) {\n throw WalletInitializationError.invalidParams(\"Please enable wallet connect v2 addon on dashboard\");\n }\n if (!walletConnectProjectId) throw WalletInitializationError.invalidParams(\"Invalid wallet connect project id. Please configure it on the dashboard\");\n walletConnectAdapter.setAdapterSettings({\n adapterSettings: {\n walletConnectInitOptions: {\n projectId: walletConnectProjectId\n }\n }\n });\n }\n return this.walletAdapters[adapterName].init({\n autoConnect: this.cachedAdapter === adapterName\n }).catch(e => log.error(e, adapterName));\n });\n await Promise.all(initPromises);\n if (this.status === ADAPTER_STATUS.NOT_READY) {\n this.status = ADAPTER_STATUS.READY;\n this.emit(ADAPTER_EVENTS.READY);\n }\n }\n getAdapter(adapterName) {\n return this.walletAdapters[adapterName] || null;\n }\n configureAdapter(adapter) {\n this.checkInitRequirements();\n const providedChainConfig = this.coreOptions.chainConfig;\n if (!providedChainConfig.chainNamespace) throw WalletInitializationError.invalidParams(\"Please provide chainNamespace in chainConfig\");\n const adapterAlreadyExists = this.walletAdapters[adapter.name];\n if (adapterAlreadyExists) throw WalletInitializationError.duplicateAdapterError(`Wallet adapter for ${adapter.name} already exists`);\n if (adapter.adapterNamespace !== ADAPTER_NAMESPACES.MULTICHAIN && adapter.adapterNamespace !== providedChainConfig.chainNamespace) throw WalletInitializationError.incompatibleChainNameSpace(`This wallet adapter belongs to ${adapter.adapterNamespace} which is incompatible with currently used namespace: ${providedChainConfig.chainNamespace}`);\n if (adapter.adapterNamespace === ADAPTER_NAMESPACES.MULTICHAIN && adapter.currentChainNamespace && providedChainConfig.chainNamespace !== adapter.currentChainNamespace) {\n // chainConfig checks are already validated in constructor so using typecast is safe here.\n adapter.setAdapterSettings({\n chainConfig: providedChainConfig\n });\n }\n this.walletAdapters[adapter.name] = adapter;\n return this;\n }\n clearCache() {\n if (!storageAvailable(this.storage)) return;\n window[this.storage].removeItem(ADAPTER_CACHE_KEY);\n this.cachedAdapter = null;\n }\n async addChain(chainConfig) {\n if (this.status === ADAPTER_STATUS.CONNECTED && this.connectedAdapterName) return this.walletAdapters[this.connectedAdapterName].addChain(chainConfig);\n if (this.commonJRPCProvider) {\n return this.commonJRPCProvider.addChain(chainConfig);\n }\n throw WalletInitializationError.notReady(`No wallet is ready`);\n }\n async switchChain(params) {\n if (this.status === ADAPTER_STATUS.CONNECTED && this.connectedAdapterName) return this.walletAdapters[this.connectedAdapterName].switchChain(params);\n if (this.commonJRPCProvider) {\n return this.commonJRPCProvider.switchChain(params);\n }\n throw WalletInitializationError.notReady(`No wallet is ready`);\n }\n\n /**\n * Connect to a specific wallet adapter\n * @param walletName - Key of the walletAdapter to use.\n */\n async connectTo(walletName, loginParams) {\n if (!this.walletAdapters[walletName] || !this.commonJRPCProvider) throw WalletInitializationError.notFound(`Please add wallet adapter for ${walletName} wallet, before connecting`);\n return new Promise((resolve, reject) => {\n this.once(ADAPTER_EVENTS.CONNECTED, _ => {\n resolve(this.provider);\n });\n this.once(ADAPTER_EVENTS.ERRORED, err => {\n reject(err);\n });\n this.walletAdapters[walletName].connect(loginParams);\n });\n }\n async logout(options = {\n cleanup: false\n }) {\n if (this.status !== ADAPTER_STATUS.CONNECTED || !this.connectedAdapterName) throw WalletLoginError.notConnectedError(`No wallet is connected`);\n await this.walletAdapters[this.connectedAdapterName].disconnect(options);\n }\n async getUserInfo() {\n log.debug(\"Getting user info\", this.status, this.connectedAdapterName);\n if (this.status !== ADAPTER_STATUS.CONNECTED || !this.connectedAdapterName) throw WalletLoginError.notConnectedError(`No wallet is connected`);\n return this.walletAdapters[this.connectedAdapterName].getUserInfo();\n }\n async enableMFA(loginParams) {\n if (this.status !== ADAPTER_STATUS.CONNECTED || !this.connectedAdapterName) throw WalletLoginError.notConnectedError(`No wallet is connected`);\n if (this.connectedAdapterName !== WALLET_ADAPTERS.AUTH) throw WalletLoginError.unsupportedOperation(`EnableMFA is not supported for this adapter.`);\n return this.walletAdapters[this.connectedAdapterName].enableMFA(loginParams);\n }\n async manageMFA(loginParams) {\n if (this.status !== ADAPTER_STATUS.CONNECTED || !this.connectedAdapterName) throw WalletLoginError.notConnectedError(`No wallet is connected`);\n if (this.connectedAdapterName !== WALLET_ADAPTERS.AUTH) throw WalletLoginError.unsupportedOperation(`ManageMFA is not supported for this adapter.`);\n return this.walletAdapters[this.connectedAdapterName].manageMFA(loginParams);\n }\n async authenticateUser() {\n if (this.status !== ADAPTER_STATUS.CONNECTED || !this.connectedAdapterName) throw WalletLoginError.notConnectedError(`No wallet is connected`);\n return this.walletAdapters[this.connectedAdapterName].authenticateUser();\n }\n addPlugin(plugin) {\n if (this.plugins[plugin.name]) throw WalletInitializationError.duplicateAdapterError(`Plugin ${plugin.name} already exist`);\n if (plugin.pluginNamespace !== PLUGIN_NAMESPACES.MULTICHAIN && plugin.pluginNamespace !== this.coreOptions.chainConfig.chainNamespace) throw WalletInitializationError.incompatibleChainNameSpace(`This plugin belongs to ${plugin.pluginNamespace} namespace which is incompatible with currently used namespace: ${this.coreOptions.chainConfig.chainNamespace}`);\n this.plugins[plugin.name] = plugin;\n if (this.status === ADAPTER_STATUS.CONNECTED && this.connectedAdapterName) {\n // web3auth is already connected. can initialize plugins\n this.connectToPlugins({\n adapter: this.connectedAdapterName\n });\n }\n return this;\n }\n getPlugin(name) {\n return this.plugins[name] || null;\n }\n subscribeToAdapterEvents(walletAdapter) {\n walletAdapter.on(ADAPTER_EVENTS.CONNECTED, async data => {\n if (!this.commonJRPCProvider) throw WalletInitializationError.notFound(`CommonJrpcProvider not found`);\n const {\n provider\n } = data;\n let finalProvider = provider.provider || provider;\n // setup aa provider after adapter is connected and private key provider is setup\n if (this.coreOptions.accountAbstractionProvider && (data.adapter === WALLET_ADAPTERS.AUTH || data.adapter !== WALLET_ADAPTERS.AUTH && this.coreOptions.useAAWithExternalWallet)) {\n await this.coreOptions.accountAbstractionProvider.setupProvider(provider); // Don't change this to finalProvider\n finalProvider = this.coreOptions.accountAbstractionProvider;\n }\n this.commonJRPCProvider.updateProviderEngineProxy(finalProvider);\n this.connectedAdapterName = data.adapter;\n this.status = ADAPTER_STATUS.CONNECTED;\n this.cacheWallet(data.adapter);\n log.debug(\"connected\", this.status, this.connectedAdapterName);\n this.connectToPlugins(data);\n this.emit(ADAPTER_EVENTS.CONNECTED, _objectSpread({}, data));\n });\n walletAdapter.on(ADAPTER_EVENTS.DISCONNECTED, async () => {\n // get back to ready state for rehydrating.\n this.status = ADAPTER_STATUS.READY;\n if (storageAvailable(this.storage)) {\n const cachedAdapter = window[this.storage].getItem(ADAPTER_CACHE_KEY);\n if (this.connectedAdapterName === cachedAdapter) {\n this.clearCache();\n }\n }\n log.debug(\"disconnected\", this.status, this.connectedAdapterName);\n await Promise.all(Object.values(this.plugins).map(plugin => {\n return plugin.disconnect().catch(error => {\n // swallow error if adapter doesn't supports this plugin.\n if (error.code === 5211) {\n return;\n }\n // throw error;\n log.error(error);\n });\n }));\n this.connectedAdapterName = null;\n this.emit(ADAPTER_EVENTS.DISCONNECTED);\n });\n walletAdapter.on(ADAPTER_EVENTS.CONNECTING, data => {\n this.status = ADAPTER_STATUS.CONNECTING;\n this.emit(ADAPTER_EVENTS.CONNECTING, data);\n log.debug(\"connecting\", this.status, this.connectedAdapterName);\n });\n walletAdapter.on(ADAPTER_EVENTS.ERRORED, data => {\n this.status = ADAPTER_STATUS.ERRORED;\n this.clearCache();\n this.emit(ADAPTER_EVENTS.ERRORED, data);\n log.debug(\"errored\", this.status, this.connectedAdapterName);\n });\n walletAdapter.on(ADAPTER_EVENTS.ADAPTER_DATA_UPDATED, data => {\n log.debug(\"adapter data updated\", data);\n this.emit(ADAPTER_EVENTS.ADAPTER_DATA_UPDATED, data);\n });\n walletAdapter.on(ADAPTER_EVENTS.CACHE_CLEAR, data => {\n log.debug(\"adapter cache clear\", data);\n if (storageAvailable(this.storage)) {\n this.clearCache();\n }\n });\n }\n checkInitRequirements() {\n if (this.status === ADAPTER_STATUS.CONNECTING) throw WalletInitializationError.notReady(\"Already pending connection\");\n if (this.status === ADAPTER_STATUS.CONNECTED) throw WalletInitializationError.notReady(\"Already connected\");\n if (this.status === ADAPTER_STATUS.READY) throw WalletInitializationError.notReady(\"Adapter is already initialized\");\n }\n cacheWallet(walletName) {\n if (!storageAvailable(this.storage)) return;\n window[this.storage].setItem(ADAPTER_CACHE_KEY, walletName);\n this.cachedAdapter = walletName;\n }\n connectToPlugins(data) {\n Object.values(this.plugins).map(async plugin => {\n try {\n if (!plugin.SUPPORTED_ADAPTERS.includes(\"all\") && !plugin.SUPPORTED_ADAPTERS.includes(data.adapter)) {\n return;\n }\n if (plugin.status === PLUGIN_STATUS.CONNECTED) return;\n const {\n authInstance\n } = this.walletAdapters[this.connectedAdapterName];\n const {\n options,\n sessionId,\n sessionNamespace\n } = authInstance || {};\n await plugin.initWithWeb3Auth(this, options === null || options === void 0 ? void 0 : options.whiteLabel);\n await plugin.connect({\n sessionId,\n sessionNamespace\n });\n } catch (error) {\n // swallow error if connector adapter doesn't supports this plugin.\n if (error.code === 5211) {\n return;\n }\n log.error(error);\n }\n });\n }\n}\n\nexport { Web3AuthNoModal };\n","import _objectSpread from '@babel/runtime/helpers/objectSpread2';\nimport { createScaffoldMiddleware, createAsyncMiddleware, rpcErrors } from '@web3auth/auth';\n\nfunction createWalletMiddleware({\n getAccounts,\n getPrivateKey,\n getPublicKey,\n processEthSignMessage,\n processPersonalMessage,\n processTransaction,\n processSignTransaction,\n processTypedMessageV4\n}) {\n if (!getAccounts) {\n throw new Error(\"opts.getAccounts is required\");\n }\n\n //\n // utility\n //\n\n /**\n * Validates the keyholder address, and returns a normalized (i.e. lowercase)\n * copy of it.\n *\n * an error\n */\n async function validateAndNormalizeKeyholder(address, req) {\n if (typeof address === \"string\" && address.length > 0) {\n // ensure address is included in provided accounts\n const accounts = await getAccounts(req);\n const normalizedAccounts = accounts.map(_address => _address.toLowerCase());\n const normalizedAddress = address.toLowerCase();\n if (normalizedAccounts.includes(normalizedAddress)) {\n return normalizedAddress;\n }\n }\n throw rpcErrors.invalidParams({\n message: `Invalid parameters: must provide an Ethereum address.`\n });\n }\n\n //\n // account lookups\n //\n\n async function lookupAccounts(req, res) {\n res.result = await getAccounts(req);\n }\n\n //\n // transaction signatures\n //\n\n async function sendTransaction(req, res) {\n if (!processTransaction) {\n throw rpcErrors.methodNotSupported();\n }\n const txParams = req.params[0] || {\n from: \"\"\n };\n txParams.from = await validateAndNormalizeKeyholder(txParams.from, req);\n res.result = await processTransaction(txParams, req);\n }\n async function signTransaction(req, res) {\n if (!processSignTransaction) {\n throw rpcErrors.methodNotSupported();\n }\n const txParams = req.params[0] || {\n from: \"\"\n };\n txParams.from = await validateAndNormalizeKeyholder(txParams.from, req);\n res.result = await processSignTransaction(txParams, req);\n }\n\n //\n // message signatures\n //\n\n async function ethSign(req, res) {\n if (!processEthSignMessage) {\n throw rpcErrors.methodNotSupported();\n }\n let msgParams = req.params;\n const extraParams = req.params[2] || {};\n if (Array.isArray(req.params)) {\n if (!(req.params.length === 2)) throw new Error(`WalletMiddleware - incorrect params for ${req.method} method. expected [address, message]`);\n const params = req.params;\n const address = params[0];\n const message = params[1];\n msgParams = {\n from: address,\n data: message\n };\n }\n msgParams = _objectSpread(_objectSpread({}, extraParams), msgParams);\n res.result = await processEthSignMessage(msgParams, req);\n }\n async function signTypedDataV4(req, res) {\n if (!processTypedMessageV4) {\n throw rpcErrors.methodNotSupported();\n }\n if (!(req !== null && req !== void 0 && req.params)) throw new Error(\"WalletMiddleware - missing params\");\n let msgParams = req.params;\n if (Array.isArray(req.params)) {\n if (!(req.params.length === 2)) throw new Error(`WalletMiddleware - incorrect params for ${req.method} method. expected [address, typedData]`);\n const params = req.params;\n const address = params[0];\n const message = params[1];\n msgParams = {\n from: address,\n data: message\n };\n }\n res.result = await processTypedMessageV4(msgParams, req);\n }\n async function personalSign(req, res) {\n if (!processPersonalMessage) {\n throw rpcErrors.methodNotSupported();\n }\n let msgParams = req.params;\n const extraParams = req.params[2] || {};\n if (Array.isArray(req.params)) {\n if (!(req.params.length >= 2)) throw new Error(`WalletMiddleware - incorrect params for ${req.method} method. expected [message, address]`);\n const params = req.params;\n if (typeof params[0] === \"object\") {\n const {\n challenge,\n address\n } = params[0];\n msgParams = {\n from: address,\n data: challenge\n };\n } else {\n const message = params[0];\n const address = params[1];\n msgParams = {\n from: address,\n data: message\n };\n }\n }\n msgParams = _objectSpread(_objectSpread({}, extraParams), msgParams);\n res.result = await processPersonalMessage(msgParams, req);\n }\n async function fetchPrivateKey(req, res) {\n if (!getPrivateKey) {\n throw rpcErrors.methodNotSupported();\n }\n res.result = getPrivateKey(req);\n }\n async function fetchPublicKey(req, res) {\n if (!getPublicKey) {\n throw rpcErrors.methodNotSupported();\n }\n res.result = getPublicKey(req);\n }\n return createScaffoldMiddleware({\n // account lookups\n eth_accounts: createAsyncMiddleware(lookupAccounts),\n eth_requestAccounts: createAsyncMiddleware(lookupAccounts),\n eth_private_key: createAsyncMiddleware(fetchPrivateKey),\n eth_public_key: createAsyncMiddleware(fetchPublicKey),\n public_key: createAsyncMiddleware(fetchPublicKey),\n private_key: createAsyncMiddleware(fetchPrivateKey),\n // tx signatures\n eth_sendTransaction: createAsyncMiddleware(sendTransaction),\n eth_signTransaction: createAsyncMiddleware(signTransaction),\n // message signatures\n eth_sign: createAsyncMiddleware(ethSign),\n eth_signTypedData_v4: createAsyncMiddleware(signTypedDataV4),\n personal_sign: createAsyncMiddleware(personalSign)\n });\n}\n\nexport { createWalletMiddleware };\n","import { mergeMiddleware, createScaffoldMiddleware, createAsyncMiddleware, rpcErrors } from '@web3auth/auth';\nimport { createWalletMiddleware } from './walletMidddleware.js';\n\nfunction createEthMiddleware(providerHandlers) {\n const {\n getAccounts,\n getPrivateKey,\n getPublicKey,\n processTransaction,\n processSignTransaction,\n processEthSignMessage,\n processTypedMessageV4,\n processPersonalMessage\n } = providerHandlers;\n const ethMiddleware = mergeMiddleware([createScaffoldMiddleware({\n eth_syncing: false\n }), createWalletMiddleware({\n getAccounts,\n getPrivateKey,\n getPublicKey,\n processTransaction,\n processEthSignMessage,\n processSignTransaction,\n processTypedMessageV4,\n processPersonalMessage\n })]);\n return ethMiddleware;\n}\nfunction createChainSwitchMiddleware({\n addChain,\n switchChain\n}) {\n async function addNewChain(req, res) {\n var _req$params;\n const chainParams = (_req$params = req.params) !== null && _req$params !== void 0 && _req$params.length ? req.params[0] : undefined;\n if (!chainParams) throw rpcErrors.invalidParams(\"Missing chain params\");\n if (!chainParams.chainId) throw rpcErrors.invalidParams(\"Missing chainId in chainParams\");\n if (!chainParams.rpcUrls || chainParams.rpcUrls.length === 0) throw rpcErrors.invalidParams(\"Missing rpcUrls in chainParams\");\n if (!chainParams.nativeCurrency) throw rpcErrors.invalidParams(\"Missing nativeCurrency in chainParams\");\n res.result = await addChain(chainParams);\n }\n async function updateChain(req, res) {\n var _req$params2;\n const chainParams = (_req$params2 = req.params) !== null && _req$params2 !== void 0 && _req$params2.length ? req.params[0] : undefined;\n if (!chainParams) throw rpcErrors.invalidParams(\"Missing chainId\");\n res.result = await switchChain(chainParams);\n }\n return createScaffoldMiddleware({\n wallet_addEthereumChain: createAsyncMiddleware(addNewChain),\n wallet_switchEthereumChain: createAsyncMiddleware(updateChain)\n });\n}\n\n// #region account middlewares\nfunction createAccountMiddleware({\n updatePrivatekey\n}) {\n async function updateAccount(req, res) {\n var _req$params3;\n const accountParams = (_req$params3 = req.params) !== null && _req$params3 !== void 0 && _req$params3.length ? req.params[0] : undefined;\n if (!(accountParams !== null && accountParams !== void 0 && accountParams.privateKey)) throw rpcErrors.invalidParams(\"Missing privateKey\");\n res.result = await updatePrivatekey(accountParams);\n }\n return createScaffoldMiddleware({\n wallet_updateAccount: createAsyncMiddleware(updateAccount)\n });\n}\n\n// #endregion account middlewares\n\nexport { createAccountMiddleware, createChainSwitchMiddleware, createEthMiddleware };\n","import { createFetchMiddleware } from '@toruslabs/base-controllers';\nimport { mergeMiddleware } from '@web3auth/auth';\n\nfunction createChainIdMiddleware(chainId) {\n return (req, res, next, end) => {\n if (req.method === \"eth_chainId\") {\n res.result = chainId;\n return end();\n }\n return next();\n };\n}\nfunction createProviderConfigMiddleware(providerConfig) {\n return (req, res, next, end) => {\n if (req.method === \"eth_provider_config\") {\n res.result = providerConfig;\n return end();\n }\n return next();\n };\n}\nfunction createJsonRpcClient(providerConfig) {\n const {\n chainId,\n rpcTarget\n } = providerConfig;\n const fetchMiddleware = createFetchMiddleware({\n rpcTarget\n });\n const networkMiddleware = mergeMiddleware([createChainIdMiddleware(chainId), createProviderConfigMiddleware(providerConfig), fetchMiddleware]);\n return {\n networkMiddleware,\n fetchMiddleware\n };\n}\n\nexport { createChainIdMiddleware, createJsonRpcClient, createProviderConfigMiddleware };\n","/* Do NOT modify this file; see /src.ts/_admin/update-version.ts */\n/**\n * The current version of Ethers.\n */\nexport const version = \"6.13.5\";\n//# sourceMappingURL=_version.js.map","/**\n * Property helper functions.\n *\n * @_subsection api/utils:Properties [about-properties]\n */\nfunction checkType(value, type, name) {\n const types = type.split(\"|\").map(t => t.trim());\n for (let i = 0; i < types.length; i++) {\n switch (type) {\n case \"any\":\n return;\n case \"bigint\":\n case \"boolean\":\n case \"number\":\n case \"string\":\n if (typeof (value) === type) {\n return;\n }\n }\n }\n const error = new Error(`invalid value for type ${type}`);\n error.code = \"INVALID_ARGUMENT\";\n error.argument = `value.${name}`;\n error.value = value;\n throw error;\n}\n/**\n * Resolves to a new object that is a copy of %%value%%, but with all\n * values resolved.\n */\nexport async function resolveProperties(value) {\n const keys = Object.keys(value);\n const results = await Promise.all(keys.map((k) => Promise.resolve(value[k])));\n return results.reduce((accum, v, index) => {\n accum[keys[index]] = v;\n return accum;\n }, {});\n}\n/**\n * Assigns the %%values%% to %%target%% as read-only values.\n *\n * It %%types%% is specified, the values are checked.\n */\nexport function defineProperties(target, values, types) {\n for (let key in values) {\n let value = values[key];\n const type = (types ? types[key] : null);\n if (type) {\n checkType(value, type, key);\n }\n Object.defineProperty(target, key, { enumerable: true, value, writable: false });\n }\n}\n//# sourceMappingURL=properties.js.map","/**\n * All errors in ethers include properties to ensure they are both\n * human-readable (i.e. ``.message``) and machine-readable (i.e. ``.code``).\n *\n * The [[isError]] function can be used to check the error ``code`` and\n * provide a type guard for the properties present on that error interface.\n *\n * @_section: api/utils/errors:Errors [about-errors]\n */\nimport { version } from \"../_version.js\";\nimport { defineProperties } from \"./properties.js\";\nfunction stringify(value) {\n if (value == null) {\n return \"null\";\n }\n if (Array.isArray(value)) {\n return \"[ \" + (value.map(stringify)).join(\", \") + \" ]\";\n }\n if (value instanceof Uint8Array) {\n const HEX = \"0123456789abcdef\";\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n result += HEX[value[i] >> 4];\n result += HEX[value[i] & 0xf];\n }\n return result;\n }\n if (typeof (value) === \"object\" && typeof (value.toJSON) === \"function\") {\n return stringify(value.toJSON());\n }\n switch (typeof (value)) {\n case \"boolean\":\n case \"symbol\":\n return value.toString();\n case \"bigint\":\n return BigInt(value).toString();\n case \"number\":\n return (value).toString();\n case \"string\":\n return JSON.stringify(value);\n case \"object\": {\n const keys = Object.keys(value);\n keys.sort();\n return \"{ \" + keys.map((k) => `${stringify(k)}: ${stringify(value[k])}`).join(\", \") + \" }\";\n }\n }\n return `[ COULD NOT SERIALIZE ]`;\n}\n/**\n * Returns true if the %%error%% matches an error thrown by ethers\n * that matches the error %%code%%.\n *\n * In TypeScript environments, this can be used to check that %%error%%\n * matches an EthersError type, which means the expected properties will\n * be set.\n *\n * @See [ErrorCodes](api:ErrorCode)\n * @example\n * try {\n * // code....\n * } catch (e) {\n * if (isError(e, \"CALL_EXCEPTION\")) {\n * // The Type Guard has validated this object\n * console.log(e.data);\n * }\n * }\n */\nexport function isError(error, code) {\n return (error && error.code === code);\n}\n/**\n * Returns true if %%error%% is a [[CallExceptionError].\n */\nexport function isCallException(error) {\n return isError(error, \"CALL_EXCEPTION\");\n}\n/**\n * Returns a new Error configured to the format ethers emits errors, with\n * the %%message%%, [[api:ErrorCode]] %%code%% and additional properties\n * for the corresponding EthersError.\n *\n * Each error in ethers includes the version of ethers, a\n * machine-readable [[ErrorCode]], and depending on %%code%%, additional\n * required properties. The error message will also include the %%message%%,\n * ethers version, %%code%% and all additional properties, serialized.\n */\nexport function makeError(message, code, info) {\n let shortMessage = message;\n {\n const details = [];\n if (info) {\n if (\"message\" in info || \"code\" in info || \"name\" in info) {\n throw new Error(`value will overwrite populated values: ${stringify(info)}`);\n }\n for (const key in info) {\n if (key === \"shortMessage\") {\n continue;\n }\n const value = (info[key]);\n // try {\n details.push(key + \"=\" + stringify(value));\n // } catch (error: any) {\n // console.log(\"MMM\", error.message);\n // details.push(key + \"=[could not serialize object]\");\n // }\n }\n }\n details.push(`code=${code}`);\n details.push(`version=${version}`);\n if (details.length) {\n message += \" (\" + details.join(\", \") + \")\";\n }\n }\n let error;\n switch (code) {\n case \"INVALID_ARGUMENT\":\n error = new TypeError(message);\n break;\n case \"NUMERIC_FAULT\":\n case \"BUFFER_OVERRUN\":\n error = new RangeError(message);\n break;\n default:\n error = new Error(message);\n }\n defineProperties(error, { code });\n if (info) {\n Object.assign(error, info);\n }\n if (error.shortMessage == null) {\n defineProperties(error, { shortMessage });\n }\n return error;\n}\n/**\n * Throws an EthersError with %%message%%, %%code%% and additional error\n * %%info%% when %%check%% is falsish..\n *\n * @see [[api:makeError]]\n */\nexport function assert(check, message, code, info) {\n if (!check) {\n throw makeError(message, code, info);\n }\n}\n/**\n * A simple helper to simply ensuring provided arguments match expected\n * constraints, throwing if not.\n *\n * In TypeScript environments, the %%check%% has been asserted true, so\n * any further code does not need additional compile-time checks.\n */\nexport function assertArgument(check, message, name, value) {\n assert(check, message, \"INVALID_ARGUMENT\", { argument: name, value: value });\n}\nexport function assertArgumentCount(count, expectedCount, message) {\n if (message == null) {\n message = \"\";\n }\n if (message) {\n message = \": \" + message;\n }\n assert(count >= expectedCount, \"missing argument\" + message, \"MISSING_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n assert(count <= expectedCount, \"too many arguments\" + message, \"UNEXPECTED_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n}\nconst _normalizeForms = [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].reduce((accum, form) => {\n try {\n // General test for normalize\n /* c8 ignore start */\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad\");\n }\n ;\n /* c8 ignore stop */\n if (form === \"NFD\") {\n const check = String.fromCharCode(0xe9).normalize(\"NFD\");\n const expected = String.fromCharCode(0x65, 0x0301);\n /* c8 ignore start */\n if (check !== expected) {\n throw new Error(\"broken\");\n }\n /* c8 ignore stop */\n }\n accum.push(form);\n }\n catch (error) { }\n return accum;\n}, []);\n/**\n * Throws if the normalization %%form%% is not supported.\n */\nexport function assertNormalize(form) {\n assert(_normalizeForms.indexOf(form) >= 0, \"platform missing String.prototype.normalize\", \"UNSUPPORTED_OPERATION\", {\n operation: \"String.prototype.normalize\", info: { form }\n });\n}\n/**\n * Many classes use file-scoped values to guard the constructor,\n * making it effectively private. This facilitates that pattern\n * by ensuring the %%givenGaurd%% matches the file-scoped %%guard%%,\n * throwing if not, indicating the %%className%% if provided.\n */\nexport function assertPrivate(givenGuard, guard, className) {\n if (className == null) {\n className = \"\";\n }\n if (givenGuard !== guard) {\n let method = className, operation = \"new\";\n if (className) {\n method += \".\";\n operation += \" \" + className;\n }\n assert(false, `private constructor; use ${method}from* methods`, \"UNSUPPORTED_OPERATION\", {\n operation\n });\n }\n}\n//# sourceMappingURL=errors.js.map","/**\n * Some data helpers.\n *\n *\n * @_subsection api/utils:Data Helpers [about-data]\n */\nimport { assert, assertArgument } from \"./errors.js\";\nfunction _getBytes(value, name, copy) {\n if (value instanceof Uint8Array) {\n if (copy) {\n return new Uint8Array(value);\n }\n return value;\n }\n if (typeof (value) === \"string\" && value.match(/^0x(?:[0-9a-f][0-9a-f])*$/i)) {\n const result = new Uint8Array((value.length - 2) / 2);\n let offset = 2;\n for (let i = 0; i < result.length; i++) {\n result[i] = parseInt(value.substring(offset, offset + 2), 16);\n offset += 2;\n }\n return result;\n }\n assertArgument(false, \"invalid BytesLike value\", name || \"value\", value);\n}\n/**\n * Get a typed Uint8Array for %%value%%. If already a Uint8Array\n * the original %%value%% is returned; if a copy is required use\n * [[getBytesCopy]].\n *\n * @see: getBytesCopy\n */\nexport function getBytes(value, name) {\n return _getBytes(value, name, false);\n}\n/**\n * Get a typed Uint8Array for %%value%%, creating a copy if necessary\n * to prevent any modifications of the returned value from being\n * reflected elsewhere.\n *\n * @see: getBytes\n */\nexport function getBytesCopy(value, name) {\n return _getBytes(value, name, true);\n}\n/**\n * Returns true if %%value%% is a valid [[HexString]].\n *\n * If %%length%% is ``true`` or a //number//, it also checks that\n * %%value%% is a valid [[DataHexString]] of %%length%% (if a //number//)\n * bytes of data (e.g. ``0x1234`` is 2 bytes).\n */\nexport function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (typeof (length) === \"number\" && value.length !== 2 + 2 * length) {\n return false;\n }\n if (length === true && (value.length % 2) !== 0) {\n return false;\n }\n return true;\n}\n/**\n * Returns true if %%value%% is a valid representation of arbitrary\n * data (i.e. a valid [[DataHexString]] or a Uint8Array).\n */\nexport function isBytesLike(value) {\n return (isHexString(value, true) || (value instanceof Uint8Array));\n}\nconst HexCharacters = \"0123456789abcdef\";\n/**\n * Returns a [[DataHexString]] representation of %%data%%.\n */\nexport function hexlify(data) {\n const bytes = getBytes(data);\n let result = \"0x\";\n for (let i = 0; i < bytes.length; i++) {\n const v = bytes[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n}\n/**\n * Returns a [[DataHexString]] by concatenating all values\n * within %%data%%.\n */\nexport function concat(datas) {\n return \"0x\" + datas.map((d) => hexlify(d).substring(2)).join(\"\");\n}\n/**\n * Returns the length of %%data%%, in bytes.\n */\nexport function dataLength(data) {\n if (isHexString(data, true)) {\n return (data.length - 2) / 2;\n }\n return getBytes(data).length;\n}\n/**\n * Returns a [[DataHexString]] by slicing %%data%% from the %%start%%\n * offset to the %%end%% offset.\n *\n * By default %%start%% is 0 and %%end%% is the length of %%data%%.\n */\nexport function dataSlice(data, start, end) {\n const bytes = getBytes(data);\n if (end != null && end > bytes.length) {\n assert(false, \"cannot slice beyond data bounds\", \"BUFFER_OVERRUN\", {\n buffer: bytes, length: bytes.length, offset: end\n });\n }\n return hexlify(bytes.slice((start == null) ? 0 : start, (end == null) ? bytes.length : end));\n}\n/**\n * Return the [[DataHexString]] result by stripping all **leading**\n ** zero bytes from %%data%%.\n */\nexport function stripZerosLeft(data) {\n let bytes = hexlify(data).substring(2);\n while (bytes.startsWith(\"00\")) {\n bytes = bytes.substring(2);\n }\n return \"0x\" + bytes;\n}\nfunction zeroPad(data, length, left) {\n const bytes = getBytes(data);\n assert(length >= bytes.length, \"padding exceeds data length\", \"BUFFER_OVERRUN\", {\n buffer: new Uint8Array(bytes),\n length: length,\n offset: length + 1\n });\n const result = new Uint8Array(length);\n result.fill(0);\n if (left) {\n result.set(bytes, length - bytes.length);\n }\n else {\n result.set(bytes, 0);\n }\n return hexlify(result);\n}\n/**\n * Return the [[DataHexString]] of %%data%% padded on the **left**\n * to %%length%% bytes.\n *\n * If %%data%% already exceeds %%length%%, a [[BufferOverrunError]] is\n * thrown.\n *\n * This pads data the same as **values** are in Solidity\n * (e.g. ``uint128``).\n */\nexport function zeroPadValue(data, length) {\n return zeroPad(data, length, true);\n}\n/**\n * Return the [[DataHexString]] of %%data%% padded on the **right**\n * to %%length%% bytes.\n *\n * If %%data%% already exceeds %%length%%, a [[BufferOverrunError]] is\n * thrown.\n *\n * This pads data the same as **bytes** are in Solidity\n * (e.g. ``bytes16``).\n */\nexport function zeroPadBytes(data, length) {\n return zeroPad(data, length, false);\n}\n//# sourceMappingURL=data.js.map","/**\n * Some mathematic operations.\n *\n * @_subsection: api/utils:Math Helpers [about-maths]\n */\nimport { hexlify, isBytesLike } from \"./data.js\";\nimport { assert, assertArgument } from \"./errors.js\";\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\n//const BN_Max256 = (BN_1 << BigInt(256)) - BN_1;\n// IEEE 754 support 53-bits of mantissa\nconst maxValue = 0x1fffffffffffff;\n/**\n * Convert %%value%% from a twos-compliment representation of %%width%%\n * bits to its value.\n *\n * If the highest bit is ``1``, the result will be negative.\n */\nexport function fromTwos(_value, _width) {\n const value = getUint(_value, \"value\");\n const width = BigInt(getNumber(_width, \"width\"));\n assert((value >> width) === BN_0, \"overflow\", \"NUMERIC_FAULT\", {\n operation: \"fromTwos\", fault: \"overflow\", value: _value\n });\n // Top bit set; treat as a negative value\n if (value >> (width - BN_1)) {\n const mask = (BN_1 << width) - BN_1;\n return -(((~value) & mask) + BN_1);\n }\n return value;\n}\n/**\n * Convert %%value%% to a twos-compliment representation of\n * %%width%% bits.\n *\n * The result will always be positive.\n */\nexport function toTwos(_value, _width) {\n let value = getBigInt(_value, \"value\");\n const width = BigInt(getNumber(_width, \"width\"));\n const limit = (BN_1 << (width - BN_1));\n if (value < BN_0) {\n value = -value;\n assert(value <= limit, \"too low\", \"NUMERIC_FAULT\", {\n operation: \"toTwos\", fault: \"overflow\", value: _value\n });\n const mask = (BN_1 << width) - BN_1;\n return ((~value) & mask) + BN_1;\n }\n else {\n assert(value < limit, \"too high\", \"NUMERIC_FAULT\", {\n operation: \"toTwos\", fault: \"overflow\", value: _value\n });\n }\n return value;\n}\n/**\n * Mask %%value%% with a bitmask of %%bits%% ones.\n */\nexport function mask(_value, _bits) {\n const value = getUint(_value, \"value\");\n const bits = BigInt(getNumber(_bits, \"bits\"));\n return value & ((BN_1 << bits) - BN_1);\n}\n/**\n * Gets a BigInt from %%value%%. If it is an invalid value for\n * a BigInt, then an ArgumentError will be thrown for %%name%%.\n */\nexport function getBigInt(value, name) {\n switch (typeof (value)) {\n case \"bigint\": return value;\n case \"number\":\n assertArgument(Number.isInteger(value), \"underflow\", name || \"value\", value);\n assertArgument(value >= -maxValue && value <= maxValue, \"overflow\", name || \"value\", value);\n return BigInt(value);\n case \"string\":\n try {\n if (value === \"\") {\n throw new Error(\"empty string\");\n }\n if (value[0] === \"-\" && value[1] !== \"-\") {\n return -BigInt(value.substring(1));\n }\n return BigInt(value);\n }\n catch (e) {\n assertArgument(false, `invalid BigNumberish string: ${e.message}`, name || \"value\", value);\n }\n }\n assertArgument(false, \"invalid BigNumberish value\", name || \"value\", value);\n}\n/**\n * Returns %%value%% as a bigint, validating it is valid as a bigint\n * value and that it is positive.\n */\nexport function getUint(value, name) {\n const result = getBigInt(value, name);\n assert(result >= BN_0, \"unsigned value cannot be negative\", \"NUMERIC_FAULT\", {\n fault: \"overflow\", operation: \"getUint\", value\n });\n return result;\n}\nconst Nibbles = \"0123456789abcdef\";\n/*\n * Converts %%value%% to a BigInt. If %%value%% is a Uint8Array, it\n * is treated as Big Endian data.\n */\nexport function toBigInt(value) {\n if (value instanceof Uint8Array) {\n let result = \"0x0\";\n for (const v of value) {\n result += Nibbles[v >> 4];\n result += Nibbles[v & 0x0f];\n }\n return BigInt(result);\n }\n return getBigInt(value);\n}\n/**\n * Gets a //number// from %%value%%. If it is an invalid value for\n * a //number//, then an ArgumentError will be thrown for %%name%%.\n */\nexport function getNumber(value, name) {\n switch (typeof (value)) {\n case \"bigint\":\n assertArgument(value >= -maxValue && value <= maxValue, \"overflow\", name || \"value\", value);\n return Number(value);\n case \"number\":\n assertArgument(Number.isInteger(value), \"underflow\", name || \"value\", value);\n assertArgument(value >= -maxValue && value <= maxValue, \"overflow\", name || \"value\", value);\n return value;\n case \"string\":\n try {\n if (value === \"\") {\n throw new Error(\"empty string\");\n }\n return getNumber(BigInt(value), name);\n }\n catch (e) {\n assertArgument(false, `invalid numeric string: ${e.message}`, name || \"value\", value);\n }\n }\n assertArgument(false, \"invalid numeric value\", name || \"value\", value);\n}\n/**\n * Converts %%value%% to a number. If %%value%% is a Uint8Array, it\n * is treated as Big Endian data. Throws if the value is not safe.\n */\nexport function toNumber(value) {\n return getNumber(toBigInt(value));\n}\n/**\n * Converts %%value%% to a Big Endian hexstring, optionally padded to\n * %%width%% bytes.\n */\nexport function toBeHex(_value, _width) {\n const value = getUint(_value, \"value\");\n let result = value.toString(16);\n if (_width == null) {\n // Ensure the value is of even length\n if (result.length % 2) {\n result = \"0\" + result;\n }\n }\n else {\n const width = getNumber(_width, \"width\");\n assert(width * 2 >= result.length, `value exceeds width (${width} bytes)`, \"NUMERIC_FAULT\", {\n operation: \"toBeHex\",\n fault: \"overflow\",\n value: _value\n });\n // Pad the value to the required width\n while (result.length < (width * 2)) {\n result = \"0\" + result;\n }\n }\n return \"0x\" + result;\n}\n/**\n * Converts %%value%% to a Big Endian Uint8Array.\n */\nexport function toBeArray(_value) {\n const value = getUint(_value, \"value\");\n if (value === BN_0) {\n return new Uint8Array([]);\n }\n let hex = value.toString(16);\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n const result = new Uint8Array(hex.length / 2);\n for (let i = 0; i < result.length; i++) {\n const offset = i * 2;\n result[i] = parseInt(hex.substring(offset, offset + 2), 16);\n }\n return result;\n}\n/**\n * Returns a [[HexString]] for %%value%% safe to use as a //Quantity//.\n *\n * A //Quantity// does not have and leading 0 values unless the value is\n * the literal value `0x0`. This is most commonly used for JSSON-RPC\n * numeric values.\n */\nexport function toQuantity(value) {\n let result = hexlify(isBytesLike(value) ? value : toBeArray(value)).substring(2);\n while (result.startsWith(\"0\")) {\n result = result.substring(1);\n }\n if (result === \"\") {\n result = \"0\";\n }\n return \"0x\" + result;\n}\n//# sourceMappingURL=maths.js.map","/**\n * Using strings in Ethereum (or any security-basd system) requires\n * additional care. These utilities attempt to mitigate some of the\n * safety issues as well as provide the ability to recover and analyse\n * strings.\n *\n * @_subsection api/utils:Strings and UTF-8 [about-strings]\n */\nimport { getBytes } from \"./data.js\";\nimport { assertArgument, assertNormalize } from \"./errors.js\";\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n assertArgument(false, `invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === \"BAD_PREFIX\" || reason === \"UNEXPECTED_CONTINUE\") {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) {\n break;\n }\n i++;\n }\n return i;\n }\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === \"OVERRUN\") {\n return bytes.length - offset - 1;\n }\n // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === \"OVERLONG\") {\n assertArgument(typeof (badCodepoint) === \"number\", \"invalid bad code point for replacement\", \"badCodepoint\", badCodepoint);\n output.push(badCodepoint);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n/**\n * A handful of popular, built-in UTF-8 error handling strategies.\n *\n * **``\"error\"``** - throws on ANY illegal UTF-8 sequence or\n * non-canonical (overlong) codepoints (this is the default)\n *\n * **``\"ignore\"``** - silently drops any illegal UTF-8 sequence\n * and accepts non-canonical (overlong) codepoints\n *\n * **``\"replace\"``** - replace any illegal UTF-8 sequence with the\n * UTF-8 replacement character (i.e. ``\"\\\\ufffd\"``) and accepts\n * non-canonical (overlong) codepoints\n *\n * @returns: Record<\"error\" | \"ignore\" | \"replace\", Utf8ErrorFunc>\n */\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(_bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n const bytes = getBytes(_bytes, \"bytes\");\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n }\n else {\n if ((c & 0xc0) === 0x80) {\n i += onError(\"UNEXPECTED_CONTINUE\", i - 1, bytes, result);\n }\n else {\n i += onError(\"BAD_PREFIX\", i - 1, bytes, result);\n }\n continue;\n }\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(\"OVERRUN\", i - 1, bytes, result);\n continue;\n }\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(\"MISSING_CONTINUE\", i, bytes, result);\n res = null;\n break;\n }\n ;\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n // See above loop for invalid continuation byte\n if (res === null) {\n continue;\n }\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(\"OUT_OF_RANGE\", i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(\"UTF16_SURROGATE\", i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(\"OVERLONG\", i - 1 - extraLength, bytes, result, res);\n continue;\n }\n result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n/**\n * Returns the UTF-8 byte representation of %%str%%.\n *\n * If %%form%% is specified, the string is normalized.\n */\nexport function toUtf8Bytes(str, form) {\n assertArgument(typeof (str) === \"string\", \"invalid string value\", \"str\", str);\n if (form != null) {\n assertNormalize(form);\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c < 0x80) {\n result.push(c);\n }\n else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n }\n else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n assertArgument(i < str.length && ((c2 & 0xfc00) === 0xdc00), \"invalid surrogate pair\", \"str\", str);\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n }\n else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n return new Uint8Array(result);\n}\n;\n//export \nfunction _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\n/**\n * Returns the string represented by the UTF-8 data %%bytes%%.\n *\n * When %%onError%% function is specified, it is called on UTF-8\n * errors allowing recovery using the [[Utf8ErrorFunc]] API.\n * (default: [error](Utf8ErrorFuncs))\n */\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\n/**\n * Returns the UTF-8 code-points for %%str%%.\n *\n * If %%form%% is specified, the string is normalized.\n */\nexport function toUtf8CodePoints(str, form) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","function number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`Wrong positive integer: ${n}`);\n}\nfunction bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`Expected boolean, not ${b}`);\n}\nfunction bytes(b, ...lengths) {\n if (!(b instanceof Uint8Array))\n throw new Error('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\nfunction hash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\nfunction exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nfunction output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nexport { number, bool, bytes, hash, exists, output };\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n//# sourceMappingURL=_assert.js.map","export const crypto = typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n//# sourceMappingURL=crypto.js.map","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated, we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\nconst u8a = (a) => a instanceof Uint8Array;\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\n// big-endian hardware is rare. Just in case someone still decides to run hashes:\n// early-throw an error because we don't support BE yet.\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!isLE)\n throw new Error('Non little-endian hardware is not supported');\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n if (!u8a(bytes))\n throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const len = hex.length;\n if (len % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + len);\n const array = new Uint8Array(len / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => { };\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n if (!u8a(data))\n throw new Error(`expected Uint8Array, got ${typeof data}`);\n return data;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n const r = new Uint8Array(arrays.reduce((sum, a) => sum + a.length, 0));\n let pad = 0; // walk through each item, ensure they have proper type\n arrays.forEach((a) => {\n if (!u8a(a))\n throw new Error('Uint8Array expected');\n r.set(a, pad);\n pad += a.length;\n });\n return r;\n}\n// For runtime check if class implements interface\nexport class Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\nconst toStr = {}.toString;\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nexport function wrapConstructor(hashCons) {\n const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexport function wrapXOFConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32) {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","import { hash as assertHash, bytes as assertBytes, exists as assertExists } from './_assert.js';\nimport { Hash, toBytes } from './utils.js';\n// HMAC (RFC 2104)\nexport class HMAC extends Hash {\n constructor(hash, _key) {\n super();\n this.finished = false;\n this.destroyed = false;\n assertHash(hash);\n const key = toBytes(_key);\n this.iHash = hash.create();\n if (typeof this.iHash.update !== 'function')\n throw new Error('Expected instance of class which extends utils.Hash');\n this.blockLen = this.iHash.blockLen;\n this.outputLen = this.iHash.outputLen;\n const blockLen = this.blockLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create();\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n pad.fill(0);\n }\n update(buf) {\n assertExists(this);\n this.iHash.update(buf);\n return this;\n }\n digestInto(out) {\n assertExists(this);\n assertBytes(out, this.outputLen);\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest() {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to) {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to || (to = Object.create(Object.getPrototypeOf(this), {}));\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n destroy() {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n */\nexport const hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();\nhmac.create = (hash, key) => new HMAC(hash, key);\n//# sourceMappingURL=hmac.js.map","import { exists, output } from './_assert.js';\nimport { Hash, createView, toBytes } from './utils.js';\n// Polyfill for Safari 14\nfunction setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n// Base SHA2 class (RFC 6234)\nexport class SHA2 extends Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data) {\n exists(this);\n const { view, buffer, blockLen } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n exists(this);\n output(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4)\n throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length)\n throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++)\n oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n}\n//# sourceMappingURL=_sha2.js.map","import { SHA2 } from './_sha2.js';\nimport { rotr, wrapConstructor } from './utils.js';\n// SHA2-256 need to try 2^128 hashes to execute birthday attack.\n// BTC network is doing 2^67 hashes/sec as per early 2023.\n// Choice: a ? b : c\nconst Chi = (a, b, c) => (a & b) ^ (~a & c);\n// Majority function, true if any two inpust is true\nconst Maj = (a, b, c) => (a & b) ^ (a & c) ^ (b & c);\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n// Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n// prettier-ignore\nconst IV = /* @__PURE__ */ new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nclass SHA256 extends SHA2 {\n constructor() {\n super(64, 32, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = IV[0] | 0;\n this.B = IV[1] | 0;\n this.C = IV[2] | 0;\n this.D = IV[3] | 0;\n this.E = IV[4] | 0;\n this.F = IV[5] | 0;\n this.G = IV[6] | 0;\n this.H = IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n// Constants from https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf\nclass SHA224 extends SHA256 {\n constructor() {\n super();\n this.A = 0xc1059ed8 | 0;\n this.B = 0x367cd507 | 0;\n this.C = 0x3070dd17 | 0;\n this.D = 0xf70e5939 | 0;\n this.E = 0xffc00b31 | 0;\n this.F = 0x68581511 | 0;\n this.G = 0x64f98fa7 | 0;\n this.H = 0xbefa4fa4 | 0;\n this.outputLen = 28;\n }\n}\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexport const sha256 = /* @__PURE__ */ wrapConstructor(() => new SHA256());\nexport const sha224 = /* @__PURE__ */ wrapConstructor(() => new SHA224());\n//# sourceMappingURL=sha256.js.map","const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nconst rotr32L = (h, _l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nexport { fromBig, split, toBig, shrSH, shrSL, rotrSH, rotrSL, rotrBH, rotrBL, rotr32H, rotr32L, rotlSH, rotlSL, rotlBH, rotlBL, add, add3L, add3H, add4L, add4H, add5H, add5L, };\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n//# sourceMappingURL=_u64.js.map","import { bytes, exists, number, output } from './_assert.js';\nimport { rotlBH, rotlBL, rotlSH, rotlSL, split } from './_u64.js';\nimport { Hash, u32, toBytes, wrapConstructor, wrapXOFConstructorWithOpts, } from './utils.js';\n// SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size.\n// It's called a sponge function.\n// Various per round constants calculations\nconst [SHA3_PI, SHA3_ROTL, _SHA3_IOTA] = [[], [], []];\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nconst _7n = /* @__PURE__ */ BigInt(7);\nconst _256n = /* @__PURE__ */ BigInt(256);\nconst _0x71n = /* @__PURE__ */ BigInt(0x71);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n)\n t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true);\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));\nconst rotlL = (h, l, s) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));\n// Same as keccakf1600, but allows to skip some rounds\nexport function keccakP(s, rounds = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++)\n B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++)\n B[x] = s[y + x];\n for (let x = 0; x < 10; x++)\n s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n B.fill(0);\n}\nexport class Keccak extends Hash {\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n super();\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n this.pos = 0;\n this.posOut = 0;\n this.finished = false;\n this.destroyed = false;\n // Can be passed from user as dkLen\n number(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n if (0 >= this.blockLen || this.blockLen >= 200)\n throw new Error('Sha3 supports only keccak-f1600 function');\n this.state = new Uint8Array(200);\n this.state32 = u32(this.state);\n }\n keccak() {\n keccakP(this.state32, this.rounds);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data) {\n exists(this);\n const { blockLen, state } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++)\n state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen)\n this.keccak();\n }\n return this;\n }\n finish() {\n if (this.finished)\n return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1)\n this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n writeInto(out) {\n exists(this, false);\n bytes(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len;) {\n if (this.posOut >= blockLen)\n this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out) {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF)\n throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes) {\n number(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out) {\n output(out, this);\n if (this.finished)\n throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n this.state.fill(0);\n }\n _cloneInto(to) {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds));\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\nconst gen = (suffix, blockLen, outputLen) => wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\nexport const sha3_224 = /* @__PURE__ */ gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexport const sha3_256 = /* @__PURE__ */ gen(0x06, 136, 256 / 8);\nexport const sha3_384 = /* @__PURE__ */ gen(0x06, 104, 384 / 8);\nexport const sha3_512 = /* @__PURE__ */ gen(0x06, 72, 512 / 8);\nexport const keccak_224 = /* @__PURE__ */ gen(0x01, 144, 224 / 8);\n/**\n * keccak-256 hash function. Different from SHA3-256.\n * @param message - that would be hashed\n */\nexport const keccak_256 = /* @__PURE__ */ gen(0x01, 136, 256 / 8);\nexport const keccak_384 = /* @__PURE__ */ gen(0x01, 104, 384 / 8);\nexport const keccak_512 = /* @__PURE__ */ gen(0x01, 72, 512 / 8);\nconst genShake = (suffix, blockLen, outputLen) => wrapXOFConstructorWithOpts((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true));\nexport const shake128 = /* @__PURE__ */ genShake(0x1f, 168, 128 / 8);\nexport const shake256 = /* @__PURE__ */ genShake(0x1f, 136, 256 / 8);\n//# sourceMappingURL=sha3.js.map","/**\n * Cryptographic hashing functions\n *\n * @_subsection: api/crypto:Hash Functions [about-crypto-hashing]\n */\nimport { keccak_256 } from \"@noble/hashes/sha3\";\nimport { getBytes, hexlify } from \"../utils/index.js\";\nlet locked = false;\nconst _keccak256 = function (data) {\n return keccak_256(data);\n};\nlet __keccak256 = _keccak256;\n/**\n * Compute the cryptographic KECCAK256 hash of %%data%%.\n *\n * The %%data%% **must** be a data representation, to compute the\n * hash of UTF-8 data use the [[id]] function.\n *\n * @returns DataHexstring\n * @example:\n * keccak256(\"0x\")\n * //_result:\n *\n * keccak256(\"0x1337\")\n * //_result:\n *\n * keccak256(new Uint8Array([ 0x13, 0x37 ]))\n * //_result:\n *\n * // Strings are assumed to be DataHexString, otherwise it will\n * // throw. To hash UTF-8 data, see the note above.\n * keccak256(\"Hello World\")\n * //_error:\n */\nexport function keccak256(_data) {\n const data = getBytes(_data, \"data\");\n return hexlify(__keccak256(data));\n}\nkeccak256._ = _keccak256;\nkeccak256.lock = function () { locked = true; };\nkeccak256.register = function (func) {\n if (locked) {\n throw new TypeError(\"keccak256 is locked\");\n }\n __keccak256 = func;\n};\nObject.freeze(keccak256);\n//# sourceMappingURL=keccak.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// 100 lines of code in the file are duplicated from noble-hashes (utils).\n// This is OK: `abstract` directory does not use noble-hashes.\n// User may opt-in into using different hashing library. This way, noble-hashes\n// won't be included into their bundle.\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst u8a = (a) => a instanceof Uint8Array;\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n if (!u8a(bytes))\n throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\nexport function numberToHexUnpadded(num) {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n}\nexport function hexToNumber(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n // Big Endian\n return BigInt(hex === '' ? '0' : `0x${hex}`);\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const len = hex.length;\n if (len % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + len);\n const array = new Uint8Array(len / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n// BE: Big Endian, LE: Little Endian\nexport function bytesToNumberBE(bytes) {\n return hexToNumber(bytesToHex(bytes));\n}\nexport function bytesToNumberLE(bytes) {\n if (!u8a(bytes))\n throw new Error('Uint8Array expected');\n return hexToNumber(bytesToHex(Uint8Array.from(bytes).reverse()));\n}\nexport function numberToBytesBE(n, len) {\n return hexToBytes(n.toString(16).padStart(len * 2, '0'));\n}\nexport function numberToBytesLE(n, len) {\n return numberToBytesBE(n, len).reverse();\n}\n// Unpadded, rarely used\nexport function numberToVarBytesBE(n) {\n return hexToBytes(numberToHexUnpadded(n));\n}\n/**\n * Takes hex string or Uint8Array, converts to Uint8Array.\n * Validates output length.\n * Will throw error for other types.\n * @param title descriptive title for an error e.g. 'private key'\n * @param hex hex string or Uint8Array\n * @param expectedLength optional, will compare to result array's length\n * @returns\n */\nexport function ensureBytes(title, hex, expectedLength) {\n let res;\n if (typeof hex === 'string') {\n try {\n res = hexToBytes(hex);\n }\n catch (e) {\n throw new Error(`${title} must be valid hex string, got \"${hex}\". Cause: ${e}`);\n }\n }\n else if (u8a(hex)) {\n // Uint8Array.from() instead of hash.slice() because node.js Buffer\n // is instance of Uint8Array, and its slice() creates **mutable** copy\n res = Uint8Array.from(hex);\n }\n else {\n throw new Error(`${title} must be hex string or Uint8Array`);\n }\n const len = res.length;\n if (typeof expectedLength === 'number' && len !== expectedLength)\n throw new Error(`${title} expected ${expectedLength} bytes, got ${len}`);\n return res;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n const r = new Uint8Array(arrays.reduce((sum, a) => sum + a.length, 0));\n let pad = 0; // walk through each item, ensure they have proper type\n arrays.forEach((a) => {\n if (!u8a(a))\n throw new Error('Uint8Array expected');\n r.set(a, pad);\n pad += a.length;\n });\n return r;\n}\nexport function equalBytes(b1, b2) {\n // We don't care about timing attacks here\n if (b1.length !== b2.length)\n return false;\n for (let i = 0; i < b1.length; i++)\n if (b1[i] !== b2[i])\n return false;\n return true;\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n// Bit operations\n/**\n * Calculates amount of bits in a bigint.\n * Same as `n.toString(2).length`\n */\nexport function bitLen(n) {\n let len;\n for (len = 0; n > _0n; n >>= _1n, len += 1)\n ;\n return len;\n}\n/**\n * Gets single bit at position.\n * NOTE: first bit position is 0 (same as arrays)\n * Same as `!!+Array.from(n.toString(2)).reverse()[pos]`\n */\nexport function bitGet(n, pos) {\n return (n >> BigInt(pos)) & _1n;\n}\n/**\n * Sets single bit at position.\n */\nexport const bitSet = (n, pos, value) => {\n return n | ((value ? _1n : _0n) << BigInt(pos));\n};\n/**\n * Calculate mask for N bits. Not using ** operator with bigints because of old engines.\n * Same as BigInt(`0b${Array(i).fill('1').join('')}`)\n */\nexport const bitMask = (n) => (_2n << BigInt(n - 1)) - _1n;\n// DRBG\nconst u8n = (data) => new Uint8Array(data); // creates Uint8Array\nconst u8fr = (arr) => Uint8Array.from(arr); // another shortcut\n/**\n * Minimal HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n * @returns function that will call DRBG until 2nd arg returns something meaningful\n * @example\n * const drbg = createHmacDRBG(32, 32, hmac);\n * drbg(seed, bytesToKey); // bytesToKey must return Key or undefined\n */\nexport function createHmacDrbg(hashLen, qByteLen, hmacFn) {\n if (typeof hashLen !== 'number' || hashLen < 2)\n throw new Error('hashLen must be a number');\n if (typeof qByteLen !== 'number' || qByteLen < 2)\n throw new Error('qByteLen must be a number');\n if (typeof hmacFn !== 'function')\n throw new Error('hmacFn must be a function');\n // Step B, Step C: set hashLen to 8*ceil(hlen/8)\n let v = u8n(hashLen); // Minimal non-full-spec HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n let k = u8n(hashLen); // Steps B and C of RFC6979 3.2: set hashLen, in our case always same\n let i = 0; // Iterations counter, will throw when over 1000\n const reset = () => {\n v.fill(1);\n k.fill(0);\n i = 0;\n };\n const h = (...b) => hmacFn(k, v, ...b); // hmac(k)(v, ...values)\n const reseed = (seed = u8n()) => {\n // HMAC-DRBG reseed() function. Steps D-G\n k = h(u8fr([0x00]), seed); // k = hmac(k || v || 0x00 || seed)\n v = h(); // v = hmac(k || v)\n if (seed.length === 0)\n return;\n k = h(u8fr([0x01]), seed); // k = hmac(k || v || 0x01 || seed)\n v = h(); // v = hmac(k || v)\n };\n const gen = () => {\n // HMAC-DRBG generate() function\n if (i++ >= 1000)\n throw new Error('drbg: tried 1000 values');\n let len = 0;\n const out = [];\n while (len < qByteLen) {\n v = h();\n const sl = v.slice();\n out.push(sl);\n len += v.length;\n }\n return concatBytes(...out);\n };\n const genUntil = (seed, pred) => {\n reset();\n reseed(seed); // Steps D-G\n let res = undefined; // Step H: grind until k is in [1..n-1]\n while (!(res = pred(gen())))\n reseed();\n reset();\n return res;\n };\n return genUntil;\n}\n// Validating curves and fields\nconst validatorFns = {\n bigint: (val) => typeof val === 'bigint',\n function: (val) => typeof val === 'function',\n boolean: (val) => typeof val === 'boolean',\n string: (val) => typeof val === 'string',\n stringOrUint8Array: (val) => typeof val === 'string' || val instanceof Uint8Array,\n isSafeInteger: (val) => Number.isSafeInteger(val),\n array: (val) => Array.isArray(val),\n field: (val, object) => object.Fp.isValid(val),\n hash: (val) => typeof val === 'function' && Number.isSafeInteger(val.outputLen),\n};\n// type Record = { [P in K]: T; }\nexport function validateObject(object, validators, optValidators = {}) {\n const checkField = (fieldName, type, isOptional) => {\n const checkVal = validatorFns[type];\n if (typeof checkVal !== 'function')\n throw new Error(`Invalid validator \"${type}\", expected function`);\n const val = object[fieldName];\n if (isOptional && val === undefined)\n return;\n if (!checkVal(val, object)) {\n throw new Error(`Invalid param ${String(fieldName)}=${val} (${typeof val}), expected ${type}`);\n }\n };\n for (const [fieldName, type] of Object.entries(validators))\n checkField(fieldName, type, false);\n for (const [fieldName, type] of Object.entries(optValidators))\n checkField(fieldName, type, true);\n return object;\n}\n// validate type tests\n// const o: { a: number; b: number; c: number } = { a: 1, b: 5, c: 6 };\n// const z0 = validateObject(o, { a: 'isSafeInteger' }, { c: 'bigint' }); // Ok!\n// // Should fail type-check\n// const z1 = validateObject(o, { a: 'tmp' }, { c: 'zz' });\n// const z2 = validateObject(o, { a: 'isSafeInteger' }, { c: 'zz' });\n// const z3 = validateObject(o, { test: 'boolean', z: 'bug' });\n// const z4 = validateObject(o, { a: 'boolean', z: 'bug' });\n//# sourceMappingURL=utils.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Utilities for modular arithmetics and finite fields\nimport { bitMask, numberToBytesBE, numberToBytesLE, bytesToNumberBE, bytesToNumberLE, ensureBytes, validateObject, } from './utils.js';\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3);\n// prettier-ignore\nconst _4n = BigInt(4), _5n = BigInt(5), _8n = BigInt(8);\n// prettier-ignore\nconst _9n = BigInt(9), _16n = BigInt(16);\n// Calculates a modulo b\nexport function mod(a, b) {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\n/**\n * Efficiently raise num to power and do modular division.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n * @example\n * pow(2n, 6n, 11n) // 64n % 11n == 9n\n */\n// TODO: use field version && remove\nexport function pow(num, power, modulo) {\n if (modulo <= _0n || power < _0n)\n throw new Error('Expected power/modulo > 0');\n if (modulo === _1n)\n return _0n;\n let res = _1n;\n while (power > _0n) {\n if (power & _1n)\n res = (res * num) % modulo;\n num = (num * num) % modulo;\n power >>= _1n;\n }\n return res;\n}\n// Does x ^ (2 ^ power) mod p. pow2(30, 4) == 30 ^ (2 ^ 4)\nexport function pow2(x, power, modulo) {\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= modulo;\n }\n return res;\n}\n// Inverses number over modulo\nexport function invert(number, modulo) {\n if (number === _0n || modulo <= _0n) {\n throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n }\n // Euclidean GCD https://brilliant.org/wiki/extended-euclidean-algorithm/\n // Fermat's little theorem \"CT-like\" version inv(n) = n^(m-2) mod m is 30x slower.\n let a = mod(number, modulo);\n let b = modulo;\n // prettier-ignore\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n // JIT applies optimization if those two lines follow each other\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n // prettier-ignore\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n)\n throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\n/**\n * Tonelli-Shanks square root search algorithm.\n * 1. https://eprint.iacr.org/2012/685.pdf (page 12)\n * 2. Square Roots from 1; 24, 51, 10 to Dan Shanks\n * Will start an infinite loop if field order P is not prime.\n * @param P field order\n * @returns function that takes field Fp (created from P) and number n\n */\nexport function tonelliShanks(P) {\n // Legendre constant: used to calculate Legendre symbol (a | p),\n // which denotes the value of a^((p-1)/2) (mod p).\n // (a | p) ≡ 1 if a is a square (mod p)\n // (a | p) ≡ -1 if a is not a square (mod p)\n // (a | p) ≡ 0 if a ≡ 0 (mod p)\n const legendreC = (P - _1n) / _2n;\n let Q, S, Z;\n // Step 1: By factoring out powers of 2 from p - 1,\n // find q and s such that p - 1 = q*(2^s) with q odd\n for (Q = P - _1n, S = 0; Q % _2n === _0n; Q /= _2n, S++)\n ;\n // Step 2: Select a non-square z such that (z | p) ≡ -1 and set c ≡ zq\n for (Z = _2n; Z < P && pow(Z, legendreC, P) !== P - _1n; Z++)\n ;\n // Fast-path\n if (S === 1) {\n const p1div4 = (P + _1n) / _4n;\n return function tonelliFast(Fp, n) {\n const root = Fp.pow(n, p1div4);\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n return root;\n };\n }\n // Slow-path\n const Q1div2 = (Q + _1n) / _2n;\n return function tonelliSlow(Fp, n) {\n // Step 0: Check that n is indeed a square: (n | p) should not be ≡ -1\n if (Fp.pow(n, legendreC) === Fp.neg(Fp.ONE))\n throw new Error('Cannot find square root');\n let r = S;\n // TODO: will fail at Fp2/etc\n let g = Fp.pow(Fp.mul(Fp.ONE, Z), Q); // will update both x and b\n let x = Fp.pow(n, Q1div2); // first guess at the square root\n let b = Fp.pow(n, Q); // first guess at the fudge factor\n while (!Fp.eql(b, Fp.ONE)) {\n if (Fp.eql(b, Fp.ZERO))\n return Fp.ZERO; // https://en.wikipedia.org/wiki/Tonelli%E2%80%93Shanks_algorithm (4. If t = 0, return r = 0)\n // Find m such b^(2^m)==1\n let m = 1;\n for (let t2 = Fp.sqr(b); m < r; m++) {\n if (Fp.eql(t2, Fp.ONE))\n break;\n t2 = Fp.sqr(t2); // t2 *= t2\n }\n // NOTE: r-m-1 can be bigger than 32, need to convert to bigint before shift, otherwise there will be overflow\n const ge = Fp.pow(g, _1n << BigInt(r - m - 1)); // ge = 2^(r-m-1)\n g = Fp.sqr(ge); // g = ge * ge\n x = Fp.mul(x, ge); // x *= ge\n b = Fp.mul(b, g); // b *= g\n r = m;\n }\n return x;\n };\n}\nexport function FpSqrt(P) {\n // NOTE: different algorithms can give different roots, it is up to user to decide which one they want.\n // For example there is FpSqrtOdd/FpSqrtEven to choice root based on oddness (used for hash-to-curve).\n // P ≡ 3 (mod 4)\n // √n = n^((P+1)/4)\n if (P % _4n === _3n) {\n // Not all roots possible!\n // const ORDER =\n // 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaabn;\n // const NUM = 72057594037927816n;\n const p1div4 = (P + _1n) / _4n;\n return function sqrt3mod4(Fp, n) {\n const root = Fp.pow(n, p1div4);\n // Throw if root**2 != n\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n return root;\n };\n }\n // Atkin algorithm for q ≡ 5 (mod 8), https://eprint.iacr.org/2012/685.pdf (page 10)\n if (P % _8n === _5n) {\n const c1 = (P - _5n) / _8n;\n return function sqrt5mod8(Fp, n) {\n const n2 = Fp.mul(n, _2n);\n const v = Fp.pow(n2, c1);\n const nv = Fp.mul(n, v);\n const i = Fp.mul(Fp.mul(nv, _2n), v);\n const root = Fp.mul(nv, Fp.sub(i, Fp.ONE));\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n return root;\n };\n }\n // P ≡ 9 (mod 16)\n if (P % _16n === _9n) {\n // NOTE: tonelli is too slow for bls-Fp2 calculations even on start\n // Means we cannot use sqrt for constants at all!\n //\n // const c1 = Fp.sqrt(Fp.negate(Fp.ONE)); // 1. c1 = sqrt(-1) in F, i.e., (c1^2) == -1 in F\n // const c2 = Fp.sqrt(c1); // 2. c2 = sqrt(c1) in F, i.e., (c2^2) == c1 in F\n // const c3 = Fp.sqrt(Fp.negate(c1)); // 3. c3 = sqrt(-c1) in F, i.e., (c3^2) == -c1 in F\n // const c4 = (P + _7n) / _16n; // 4. c4 = (q + 7) / 16 # Integer arithmetic\n // sqrt = (x) => {\n // let tv1 = Fp.pow(x, c4); // 1. tv1 = x^c4\n // let tv2 = Fp.mul(c1, tv1); // 2. tv2 = c1 * tv1\n // const tv3 = Fp.mul(c2, tv1); // 3. tv3 = c2 * tv1\n // let tv4 = Fp.mul(c3, tv1); // 4. tv4 = c3 * tv1\n // const e1 = Fp.equals(Fp.square(tv2), x); // 5. e1 = (tv2^2) == x\n // const e2 = Fp.equals(Fp.square(tv3), x); // 6. e2 = (tv3^2) == x\n // tv1 = Fp.cmov(tv1, tv2, e1); // 7. tv1 = CMOV(tv1, tv2, e1) # Select tv2 if (tv2^2) == x\n // tv2 = Fp.cmov(tv4, tv3, e2); // 8. tv2 = CMOV(tv4, tv3, e2) # Select tv3 if (tv3^2) == x\n // const e3 = Fp.equals(Fp.square(tv2), x); // 9. e3 = (tv2^2) == x\n // return Fp.cmov(tv1, tv2, e3); // 10. z = CMOV(tv1, tv2, e3) # Select the sqrt from tv1 and tv2\n // }\n }\n // Other cases: Tonelli-Shanks algorithm\n return tonelliShanks(P);\n}\n// Little-endian check for first LE bit (last BE bit);\nexport const isNegativeLE = (num, modulo) => (mod(num, modulo) & _1n) === _1n;\n// prettier-ignore\nconst FIELD_FIELDS = [\n 'create', 'isValid', 'is0', 'neg', 'inv', 'sqrt', 'sqr',\n 'eql', 'add', 'sub', 'mul', 'pow', 'div',\n 'addN', 'subN', 'mulN', 'sqrN'\n];\nexport function validateField(field) {\n const initial = {\n ORDER: 'bigint',\n MASK: 'bigint',\n BYTES: 'isSafeInteger',\n BITS: 'isSafeInteger',\n };\n const opts = FIELD_FIELDS.reduce((map, val) => {\n map[val] = 'function';\n return map;\n }, initial);\n return validateObject(field, opts);\n}\n// Generic field functions\n/**\n * Same as `pow` but for Fp: non-constant-time.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n */\nexport function FpPow(f, num, power) {\n // Should have same speed as pow for bigints\n // TODO: benchmark!\n if (power < _0n)\n throw new Error('Expected power > 0');\n if (power === _0n)\n return f.ONE;\n if (power === _1n)\n return num;\n let p = f.ONE;\n let d = num;\n while (power > _0n) {\n if (power & _1n)\n p = f.mul(p, d);\n d = f.sqr(d);\n power >>= _1n;\n }\n return p;\n}\n/**\n * Efficiently invert an array of Field elements.\n * `inv(0)` will return `undefined` here: make sure to throw an error.\n */\nexport function FpInvertBatch(f, nums) {\n const tmp = new Array(nums.length);\n // Walk from first to last, multiply them by each other MOD p\n const lastMultiplied = nums.reduce((acc, num, i) => {\n if (f.is0(num))\n return acc;\n tmp[i] = acc;\n return f.mul(acc, num);\n }, f.ONE);\n // Invert last element\n const inverted = f.inv(lastMultiplied);\n // Walk from last to first, multiply them by inverted each other MOD p\n nums.reduceRight((acc, num, i) => {\n if (f.is0(num))\n return acc;\n tmp[i] = f.mul(acc, tmp[i]);\n return f.mul(acc, num);\n }, inverted);\n return tmp;\n}\nexport function FpDiv(f, lhs, rhs) {\n return f.mul(lhs, typeof rhs === 'bigint' ? invert(rhs, f.ORDER) : f.inv(rhs));\n}\n// This function returns True whenever the value x is a square in the field F.\nexport function FpIsSquare(f) {\n const legendreConst = (f.ORDER - _1n) / _2n; // Integer arithmetic\n return (x) => {\n const p = f.pow(x, legendreConst);\n return f.eql(p, f.ZERO) || f.eql(p, f.ONE);\n };\n}\n// CURVE.n lengths\nexport function nLength(n, nBitLength) {\n // Bit size, byte size of CURVE.n\n const _nBitLength = nBitLength !== undefined ? nBitLength : n.toString(2).length;\n const nByteLength = Math.ceil(_nBitLength / 8);\n return { nBitLength: _nBitLength, nByteLength };\n}\n/**\n * Initializes a finite field over prime. **Non-primes are not supported.**\n * Do not init in loop: slow. Very fragile: always run a benchmark on a change.\n * Major performance optimizations:\n * * a) denormalized operations like mulN instead of mul\n * * b) same object shape: never add or remove keys\n * * c) Object.freeze\n * @param ORDER prime positive bigint\n * @param bitLen how many bits the field consumes\n * @param isLE (def: false) if encoding / decoding should be in little-endian\n * @param redef optional faster redefinitions of sqrt and other methods\n */\nexport function Field(ORDER, bitLen, isLE = false, redef = {}) {\n if (ORDER <= _0n)\n throw new Error(`Expected Field ORDER > 0, got ${ORDER}`);\n const { nBitLength: BITS, nByteLength: BYTES } = nLength(ORDER, bitLen);\n if (BYTES > 2048)\n throw new Error('Field lengths over 2048 bytes are not supported');\n const sqrtP = FpSqrt(ORDER);\n const f = Object.freeze({\n ORDER,\n BITS,\n BYTES,\n MASK: bitMask(BITS),\n ZERO: _0n,\n ONE: _1n,\n create: (num) => mod(num, ORDER),\n isValid: (num) => {\n if (typeof num !== 'bigint')\n throw new Error(`Invalid field element: expected bigint, got ${typeof num}`);\n return _0n <= num && num < ORDER; // 0 is valid element, but it's not invertible\n },\n is0: (num) => num === _0n,\n isOdd: (num) => (num & _1n) === _1n,\n neg: (num) => mod(-num, ORDER),\n eql: (lhs, rhs) => lhs === rhs,\n sqr: (num) => mod(num * num, ORDER),\n add: (lhs, rhs) => mod(lhs + rhs, ORDER),\n sub: (lhs, rhs) => mod(lhs - rhs, ORDER),\n mul: (lhs, rhs) => mod(lhs * rhs, ORDER),\n pow: (num, power) => FpPow(f, num, power),\n div: (lhs, rhs) => mod(lhs * invert(rhs, ORDER), ORDER),\n // Same as above, but doesn't normalize\n sqrN: (num) => num * num,\n addN: (lhs, rhs) => lhs + rhs,\n subN: (lhs, rhs) => lhs - rhs,\n mulN: (lhs, rhs) => lhs * rhs,\n inv: (num) => invert(num, ORDER),\n sqrt: redef.sqrt || ((n) => sqrtP(f, n)),\n invertBatch: (lst) => FpInvertBatch(f, lst),\n // TODO: do we really need constant cmov?\n // We don't have const-time bigints anyway, so probably will be not very useful\n cmov: (a, b, c) => (c ? b : a),\n toBytes: (num) => (isLE ? numberToBytesLE(num, BYTES) : numberToBytesBE(num, BYTES)),\n fromBytes: (bytes) => {\n if (bytes.length !== BYTES)\n throw new Error(`Fp.fromBytes: expected ${BYTES}, got ${bytes.length}`);\n return isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n },\n });\n return Object.freeze(f);\n}\nexport function FpSqrtOdd(Fp, elm) {\n if (!Fp.isOdd)\n throw new Error(`Field doesn't have isOdd`);\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? root : Fp.neg(root);\n}\nexport function FpSqrtEven(Fp, elm) {\n if (!Fp.isOdd)\n throw new Error(`Field doesn't have isOdd`);\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? Fp.neg(root) : root;\n}\n/**\n * \"Constant-time\" private key generation utility.\n * Same as mapKeyToField, but accepts less bytes (40 instead of 48 for 32-byte field).\n * Which makes it slightly more biased, less secure.\n * @deprecated use mapKeyToField instead\n */\nexport function hashToPrivateScalar(hash, groupOrder, isLE = false) {\n hash = ensureBytes('privateHash', hash);\n const hashLen = hash.length;\n const minLen = nLength(groupOrder).nByteLength + 8;\n if (minLen < 24 || hashLen < minLen || hashLen > 1024)\n throw new Error(`hashToPrivateScalar: expected ${minLen}-1024 bytes of input, got ${hashLen}`);\n const num = isLE ? bytesToNumberLE(hash) : bytesToNumberBE(hash);\n return mod(num, groupOrder - _1n) + _1n;\n}\n/**\n * Returns total number of bytes consumed by the field element.\n * For example, 32 bytes for usual 256-bit weierstrass curve.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of field\n */\nexport function getFieldBytesLength(fieldOrder) {\n if (typeof fieldOrder !== 'bigint')\n throw new Error('field order must be bigint');\n const bitLength = fieldOrder.toString(2).length;\n return Math.ceil(bitLength / 8);\n}\n/**\n * Returns minimal amount of bytes that can be safely reduced\n * by field order.\n * Should be 2^-128 for 128-bit curve such as P256.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of target hash\n */\nexport function getMinHashLength(fieldOrder) {\n const length = getFieldBytesLength(fieldOrder);\n return length + Math.ceil(length / 2);\n}\n/**\n * \"Constant-time\" private key generation utility.\n * Can take (n + n/2) or more bytes of uniform input e.g. from CSPRNG or KDF\n * and convert them into private scalar, with the modulo bias being negligible.\n * Needs at least 48 bytes of input for 32-byte private key.\n * https://research.kudelskisecurity.com/2020/07/28/the-definitive-guide-to-modulo-bias-and-how-to-avoid-it/\n * FIPS 186-5, A.2 https://csrc.nist.gov/publications/detail/fips/186/5/final\n * RFC 9380, https://www.rfc-editor.org/rfc/rfc9380#section-5\n * @param hash hash output from SHA3 or a similar function\n * @param groupOrder size of subgroup - (e.g. secp256k1.CURVE.n)\n * @param isLE interpret hash bytes as LE num\n * @returns valid private scalar\n */\nexport function mapHashToField(key, fieldOrder, isLE = false) {\n const len = key.length;\n const fieldLen = getFieldBytesLength(fieldOrder);\n const minLen = getMinHashLength(fieldOrder);\n // No small numbers: need to understand bias story. No huge numbers: easier to detect JS timings.\n if (len < 16 || len < minLen || len > 1024)\n throw new Error(`expected ${minLen}-1024 bytes of input, got ${len}`);\n const num = isLE ? bytesToNumberBE(key) : bytesToNumberLE(key);\n // `mod(x, 11)` can sometimes produce 0. `mod(x, 10) + 1` is the same, but no 0\n const reduced = mod(num, fieldOrder - _1n) + _1n;\n return isLE ? numberToBytesLE(reduced, fieldLen) : numberToBytesBE(reduced, fieldLen);\n}\n//# sourceMappingURL=modular.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Abelian group utilities\nimport { validateField, nLength } from './modular.js';\nimport { validateObject } from './utils.js';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\n// Elliptic curve multiplication of Point by scalar. Fragile.\n// Scalars should always be less than curve order: this should be checked inside of a curve itself.\n// Creates precomputation tables for fast multiplication:\n// - private scalar is split by fixed size windows of W bits\n// - every window point is collected from window's table & added to accumulator\n// - since windows are different, same point inside tables won't be accessed more than once per calc\n// - each multiplication is 'Math.ceil(CURVE_ORDER / 𝑊) + 1' point additions (fixed for any scalar)\n// - +1 window is neccessary for wNAF\n// - wNAF reduces table size: 2x less memory + 2x faster generation, but 10% slower multiplication\n// TODO: Research returning 2d JS array of windows, instead of a single window. This would allow\n// windows to be in different memory locations\nexport function wNAF(c, bits) {\n const constTimeNegate = (condition, item) => {\n const neg = item.negate();\n return condition ? neg : item;\n };\n const opts = (W) => {\n const windows = Math.ceil(bits / W) + 1; // +1, because\n const windowSize = 2 ** (W - 1); // -1 because we skip zero\n return { windows, windowSize };\n };\n return {\n constTimeNegate,\n // non-const time multiplication ladder\n unsafeLadder(elm, n) {\n let p = c.ZERO;\n let d = elm;\n while (n > _0n) {\n if (n & _1n)\n p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n },\n /**\n * Creates a wNAF precomputation window. Used for caching.\n * Default window size is set by `utils.precompute()` and is equal to 8.\n * Number of precomputed points depends on the curve size:\n * 2^(𝑊−1) * (Math.ceil(𝑛 / 𝑊) + 1), where:\n * - 𝑊 is the window size\n * - 𝑛 is the bitlength of the curve order.\n * For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224.\n * @returns precomputed point tables flattened to a single array\n */\n precomputeWindow(elm, W) {\n const { windows, windowSize } = opts(W);\n const points = [];\n let p = elm;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n // =1, because we skip zero\n for (let i = 1; i < windowSize; i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n },\n /**\n * Implements ec multiplication using precomputed tables and w-ary non-adjacent form.\n * @param W window size\n * @param precomputes precomputed tables\n * @param n scalar (we don't check here, but should be less than curve order)\n * @returns real and fake (for const-time) points\n */\n wNAF(W, precomputes, n) {\n // TODO: maybe check that scalar is less than group order? wNAF behavious is undefined otherwise\n // But need to carefully remove other checks before wNAF. ORDER == bits here\n const { windows, windowSize } = opts(W);\n let p = c.ZERO;\n let f = c.BASE;\n const mask = BigInt(2 ** W - 1); // Create mask with W ones: 0b1111 for W=4 etc.\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n // Extract W bits.\n let wbits = Number(n & mask);\n // Shift number by W bits.\n n >>= shiftBy;\n // If the bits are bigger than max size, we'll split those.\n // +224 => 256 - 32\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n // This code was first written with assumption that 'f' and 'p' will never be infinity point:\n // since each addition is multiplied by 2 ** W, it cannot cancel each other. However,\n // there is negate now: it is possible that negated element from low value\n // would be the same as high element, which will create carry into next window.\n // It's not obvious how this can fail, but still worth investigating later.\n // Check if we're onto Zero point.\n // Add random point inside current window to f.\n const offset1 = offset;\n const offset2 = offset + Math.abs(wbits) - 1; // -1 because we skip zero\n const cond1 = window % 2 !== 0;\n const cond2 = wbits < 0;\n if (wbits === 0) {\n // The most important part for const-time getPublicKey\n f = f.add(constTimeNegate(cond1, precomputes[offset1]));\n }\n else {\n p = p.add(constTimeNegate(cond2, precomputes[offset2]));\n }\n }\n // JIT-compiler should not eliminate f here, since it will later be used in normalizeZ()\n // Even if the variable is still unused, there are some checks which will\n // throw an exception, so compiler needs to prove they won't happen, which is hard.\n // At this point there is a way to F be infinity-point even if p is not,\n // which makes it less const-time: around 1 bigint multiply.\n return { p, f };\n },\n wNAFCached(P, precomputesMap, n, transform) {\n // @ts-ignore\n const W = P._WINDOW_SIZE || 1;\n // Calculate precomputes on a first run, reuse them after\n let comp = precomputesMap.get(P);\n if (!comp) {\n comp = this.precomputeWindow(P, W);\n if (W !== 1) {\n precomputesMap.set(P, transform(comp));\n }\n }\n return this.wNAF(W, comp, n);\n },\n };\n}\nexport function validateBasic(curve) {\n validateField(curve.Fp);\n validateObject(curve, {\n n: 'bigint',\n h: 'bigint',\n Gx: 'field',\n Gy: 'field',\n }, {\n nBitLength: 'isSafeInteger',\n nByteLength: 'isSafeInteger',\n });\n // Set defaults\n return Object.freeze({\n ...nLength(curve.n, curve.nBitLength),\n ...curve,\n ...{ p: curve.Fp.ORDER },\n });\n}\n//# sourceMappingURL=curve.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Short Weierstrass curve. The formula is: y² = x³ + ax + b\nimport * as mod from './modular.js';\nimport * as ut from './utils.js';\nimport { ensureBytes } from './utils.js';\nimport { wNAF, validateBasic } from './curve.js';\nfunction validatePointOpts(curve) {\n const opts = validateBasic(curve);\n ut.validateObject(opts, {\n a: 'field',\n b: 'field',\n }, {\n allowedPrivateKeyLengths: 'array',\n wrapPrivateKey: 'boolean',\n isTorsionFree: 'function',\n clearCofactor: 'function',\n allowInfinityPoint: 'boolean',\n fromBytes: 'function',\n toBytes: 'function',\n });\n const { endo, Fp, a } = opts;\n if (endo) {\n if (!Fp.eql(a, Fp.ZERO)) {\n throw new Error('Endomorphism can only be defined for Koblitz curves that have a=0');\n }\n if (typeof endo !== 'object' ||\n typeof endo.beta !== 'bigint' ||\n typeof endo.splitScalar !== 'function') {\n throw new Error('Expected endomorphism with beta: bigint and splitScalar: function');\n }\n }\n return Object.freeze({ ...opts });\n}\n// ASN.1 DER encoding utilities\nconst { bytesToNumberBE: b2n, hexToBytes: h2b } = ut;\nexport const DER = {\n // asn.1 DER encoding utils\n Err: class DERErr extends Error {\n constructor(m = '') {\n super(m);\n }\n },\n _parseInt(data) {\n const { Err: E } = DER;\n if (data.length < 2 || data[0] !== 0x02)\n throw new E('Invalid signature integer tag');\n const len = data[1];\n const res = data.subarray(2, len + 2);\n if (!len || res.length !== len)\n throw new E('Invalid signature integer: wrong length');\n // https://crypto.stackexchange.com/a/57734 Leftmost bit of first byte is 'negative' flag,\n // since we always use positive integers here. It must always be empty:\n // - add zero byte if exists\n // - if next byte doesn't have a flag, leading zero is not allowed (minimal encoding)\n if (res[0] & 0b10000000)\n throw new E('Invalid signature integer: negative');\n if (res[0] === 0x00 && !(res[1] & 0b10000000))\n throw new E('Invalid signature integer: unnecessary leading zero');\n return { d: b2n(res), l: data.subarray(len + 2) }; // d is data, l is left\n },\n toSig(hex) {\n // parse DER signature\n const { Err: E } = DER;\n const data = typeof hex === 'string' ? h2b(hex) : hex;\n if (!(data instanceof Uint8Array))\n throw new Error('ui8a expected');\n let l = data.length;\n if (l < 2 || data[0] != 0x30)\n throw new E('Invalid signature tag');\n if (data[1] !== l - 2)\n throw new E('Invalid signature: incorrect length');\n const { d: r, l: sBytes } = DER._parseInt(data.subarray(2));\n const { d: s, l: rBytesLeft } = DER._parseInt(sBytes);\n if (rBytesLeft.length)\n throw new E('Invalid signature: left bytes after parsing');\n return { r, s };\n },\n hexFromSig(sig) {\n // Add leading zero if first byte has negative bit enabled. More details in '_parseInt'\n const slice = (s) => (Number.parseInt(s[0], 16) & 0b1000 ? '00' + s : s);\n const h = (num) => {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n };\n const s = slice(h(sig.s));\n const r = slice(h(sig.r));\n const shl = s.length / 2;\n const rhl = r.length / 2;\n const sl = h(shl);\n const rl = h(rhl);\n return `30${h(rhl + shl + 4)}02${rl}${r}02${sl}${s}`;\n },\n};\n// Be friendly to bad ECMAScript parsers by not using bigint literals\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3), _4n = BigInt(4);\nexport function weierstrassPoints(opts) {\n const CURVE = validatePointOpts(opts);\n const { Fp } = CURVE; // All curves has same field / group length as for now, but they can differ\n const toBytes = CURVE.toBytes ||\n ((_c, point, _isCompressed) => {\n const a = point.toAffine();\n return ut.concatBytes(Uint8Array.from([0x04]), Fp.toBytes(a.x), Fp.toBytes(a.y));\n });\n const fromBytes = CURVE.fromBytes ||\n ((bytes) => {\n // const head = bytes[0];\n const tail = bytes.subarray(1);\n // if (head !== 0x04) throw new Error('Only non-compressed encoding is supported');\n const x = Fp.fromBytes(tail.subarray(0, Fp.BYTES));\n const y = Fp.fromBytes(tail.subarray(Fp.BYTES, 2 * Fp.BYTES));\n return { x, y };\n });\n /**\n * y² = x³ + ax + b: Short weierstrass curve formula\n * @returns y²\n */\n function weierstrassEquation(x) {\n const { a, b } = CURVE;\n const x2 = Fp.sqr(x); // x * x\n const x3 = Fp.mul(x2, x); // x2 * x\n return Fp.add(Fp.add(x3, Fp.mul(x, a)), b); // x3 + a * x + b\n }\n // Validate whether the passed curve params are valid.\n // We check if curve equation works for generator point.\n // `assertValidity()` won't work: `isTorsionFree()` is not available at this point in bls12-381.\n // ProjectivePoint class has not been initialized yet.\n if (!Fp.eql(Fp.sqr(CURVE.Gy), weierstrassEquation(CURVE.Gx)))\n throw new Error('bad generator point: equation left != right');\n // Valid group elements reside in range 1..n-1\n function isWithinCurveOrder(num) {\n return typeof num === 'bigint' && _0n < num && num < CURVE.n;\n }\n function assertGE(num) {\n if (!isWithinCurveOrder(num))\n throw new Error('Expected valid bigint: 0 < bigint < curve.n');\n }\n // Validates if priv key is valid and converts it to bigint.\n // Supports options allowedPrivateKeyLengths and wrapPrivateKey.\n function normPrivateKeyToScalar(key) {\n const { allowedPrivateKeyLengths: lengths, nByteLength, wrapPrivateKey, n } = CURVE;\n if (lengths && typeof key !== 'bigint') {\n if (key instanceof Uint8Array)\n key = ut.bytesToHex(key);\n // Normalize to hex string, pad. E.g. P521 would norm 130-132 char hex to 132-char bytes\n if (typeof key !== 'string' || !lengths.includes(key.length))\n throw new Error('Invalid key');\n key = key.padStart(nByteLength * 2, '0');\n }\n let num;\n try {\n num =\n typeof key === 'bigint'\n ? key\n : ut.bytesToNumberBE(ensureBytes('private key', key, nByteLength));\n }\n catch (error) {\n throw new Error(`private key must be ${nByteLength} bytes, hex or bigint, not ${typeof key}`);\n }\n if (wrapPrivateKey)\n num = mod.mod(num, n); // disabled by default, enabled for BLS\n assertGE(num); // num in range [1..N-1]\n return num;\n }\n const pointPrecomputes = new Map();\n function assertPrjPoint(other) {\n if (!(other instanceof Point))\n throw new Error('ProjectivePoint expected');\n }\n /**\n * Projective Point works in 3d / projective (homogeneous) coordinates: (x, y, z) ∋ (x=x/z, y=y/z)\n * Default Point works in 2d / affine coordinates: (x, y)\n * We're doing calculations in projective, because its operations don't require costly inversion.\n */\n class Point {\n constructor(px, py, pz) {\n this.px = px;\n this.py = py;\n this.pz = pz;\n if (px == null || !Fp.isValid(px))\n throw new Error('x required');\n if (py == null || !Fp.isValid(py))\n throw new Error('y required');\n if (pz == null || !Fp.isValid(pz))\n throw new Error('z required');\n }\n // Does not validate if the point is on-curve.\n // Use fromHex instead, or call assertValidity() later.\n static fromAffine(p) {\n const { x, y } = p || {};\n if (!p || !Fp.isValid(x) || !Fp.isValid(y))\n throw new Error('invalid affine point');\n if (p instanceof Point)\n throw new Error('projective point not allowed');\n const is0 = (i) => Fp.eql(i, Fp.ZERO);\n // fromAffine(x:0, y:0) would produce (x:0, y:0, z:1), but we need (x:0, y:1, z:0)\n if (is0(x) && is0(y))\n return Point.ZERO;\n return new Point(x, y, Fp.ONE);\n }\n get x() {\n return this.toAffine().x;\n }\n get y() {\n return this.toAffine().y;\n }\n /**\n * Takes a bunch of Projective Points but executes only one\n * inversion on all of them. Inversion is very slow operation,\n * so this improves performance massively.\n * Optimization: converts a list of projective points to a list of identical points with Z=1.\n */\n static normalizeZ(points) {\n const toInv = Fp.invertBatch(points.map((p) => p.pz));\n return points.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);\n }\n /**\n * Converts hash string or Uint8Array to Point.\n * @param hex short/long ECDSA hex\n */\n static fromHex(hex) {\n const P = Point.fromAffine(fromBytes(ensureBytes('pointHex', hex)));\n P.assertValidity();\n return P;\n }\n // Multiplies generator point by privateKey.\n static fromPrivateKey(privateKey) {\n return Point.BASE.multiply(normPrivateKeyToScalar(privateKey));\n }\n // \"Private method\", don't use it directly\n _setWindowSize(windowSize) {\n this._WINDOW_SIZE = windowSize;\n pointPrecomputes.delete(this);\n }\n // A point on curve is valid if it conforms to equation.\n assertValidity() {\n if (this.is0()) {\n // (0, 1, 0) aka ZERO is invalid in most contexts.\n // In BLS, ZERO can be serialized, so we allow it.\n // (0, 0, 0) is wrong representation of ZERO and is always invalid.\n if (CURVE.allowInfinityPoint && !Fp.is0(this.py))\n return;\n throw new Error('bad point: ZERO');\n }\n // Some 3rd-party test vectors require different wording between here & `fromCompressedHex`\n const { x, y } = this.toAffine();\n // Check if x, y are valid field elements\n if (!Fp.isValid(x) || !Fp.isValid(y))\n throw new Error('bad point: x or y not FE');\n const left = Fp.sqr(y); // y²\n const right = weierstrassEquation(x); // x³ + ax + b\n if (!Fp.eql(left, right))\n throw new Error('bad point: equation left != right');\n if (!this.isTorsionFree())\n throw new Error('bad point: not in prime-order subgroup');\n }\n hasEvenY() {\n const { y } = this.toAffine();\n if (Fp.isOdd)\n return !Fp.isOdd(y);\n throw new Error(\"Field doesn't support isOdd\");\n }\n /**\n * Compare one point to another.\n */\n equals(other) {\n assertPrjPoint(other);\n const { px: X1, py: Y1, pz: Z1 } = this;\n const { px: X2, py: Y2, pz: Z2 } = other;\n const U1 = Fp.eql(Fp.mul(X1, Z2), Fp.mul(X2, Z1));\n const U2 = Fp.eql(Fp.mul(Y1, Z2), Fp.mul(Y2, Z1));\n return U1 && U2;\n }\n /**\n * Flips point to one corresponding to (x, -y) in Affine coordinates.\n */\n negate() {\n return new Point(this.px, Fp.neg(this.py), this.pz);\n }\n // Renes-Costello-Batina exception-free doubling formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 3\n // Cost: 8M + 3S + 3*a + 2*b3 + 15add.\n double() {\n const { a, b } = CURVE;\n const b3 = Fp.mul(b, _3n);\n const { px: X1, py: Y1, pz: Z1 } = this;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n let t0 = Fp.mul(X1, X1); // step 1\n let t1 = Fp.mul(Y1, Y1);\n let t2 = Fp.mul(Z1, Z1);\n let t3 = Fp.mul(X1, Y1);\n t3 = Fp.add(t3, t3); // step 5\n Z3 = Fp.mul(X1, Z1);\n Z3 = Fp.add(Z3, Z3);\n X3 = Fp.mul(a, Z3);\n Y3 = Fp.mul(b3, t2);\n Y3 = Fp.add(X3, Y3); // step 10\n X3 = Fp.sub(t1, Y3);\n Y3 = Fp.add(t1, Y3);\n Y3 = Fp.mul(X3, Y3);\n X3 = Fp.mul(t3, X3);\n Z3 = Fp.mul(b3, Z3); // step 15\n t2 = Fp.mul(a, t2);\n t3 = Fp.sub(t0, t2);\n t3 = Fp.mul(a, t3);\n t3 = Fp.add(t3, Z3);\n Z3 = Fp.add(t0, t0); // step 20\n t0 = Fp.add(Z3, t0);\n t0 = Fp.add(t0, t2);\n t0 = Fp.mul(t0, t3);\n Y3 = Fp.add(Y3, t0);\n t2 = Fp.mul(Y1, Z1); // step 25\n t2 = Fp.add(t2, t2);\n t0 = Fp.mul(t2, t3);\n X3 = Fp.sub(X3, t0);\n Z3 = Fp.mul(t2, t1);\n Z3 = Fp.add(Z3, Z3); // step 30\n Z3 = Fp.add(Z3, Z3);\n return new Point(X3, Y3, Z3);\n }\n // Renes-Costello-Batina exception-free addition formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 1\n // Cost: 12M + 0S + 3*a + 3*b3 + 23add.\n add(other) {\n assertPrjPoint(other);\n const { px: X1, py: Y1, pz: Z1 } = this;\n const { px: X2, py: Y2, pz: Z2 } = other;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n const a = CURVE.a;\n const b3 = Fp.mul(CURVE.b, _3n);\n let t0 = Fp.mul(X1, X2); // step 1\n let t1 = Fp.mul(Y1, Y2);\n let t2 = Fp.mul(Z1, Z2);\n let t3 = Fp.add(X1, Y1);\n let t4 = Fp.add(X2, Y2); // step 5\n t3 = Fp.mul(t3, t4);\n t4 = Fp.add(t0, t1);\n t3 = Fp.sub(t3, t4);\n t4 = Fp.add(X1, Z1);\n let t5 = Fp.add(X2, Z2); // step 10\n t4 = Fp.mul(t4, t5);\n t5 = Fp.add(t0, t2);\n t4 = Fp.sub(t4, t5);\n t5 = Fp.add(Y1, Z1);\n X3 = Fp.add(Y2, Z2); // step 15\n t5 = Fp.mul(t5, X3);\n X3 = Fp.add(t1, t2);\n t5 = Fp.sub(t5, X3);\n Z3 = Fp.mul(a, t4);\n X3 = Fp.mul(b3, t2); // step 20\n Z3 = Fp.add(X3, Z3);\n X3 = Fp.sub(t1, Z3);\n Z3 = Fp.add(t1, Z3);\n Y3 = Fp.mul(X3, Z3);\n t1 = Fp.add(t0, t0); // step 25\n t1 = Fp.add(t1, t0);\n t2 = Fp.mul(a, t2);\n t4 = Fp.mul(b3, t4);\n t1 = Fp.add(t1, t2);\n t2 = Fp.sub(t0, t2); // step 30\n t2 = Fp.mul(a, t2);\n t4 = Fp.add(t4, t2);\n t0 = Fp.mul(t1, t4);\n Y3 = Fp.add(Y3, t0);\n t0 = Fp.mul(t5, t4); // step 35\n X3 = Fp.mul(t3, X3);\n X3 = Fp.sub(X3, t0);\n t0 = Fp.mul(t3, t1);\n Z3 = Fp.mul(t5, Z3);\n Z3 = Fp.add(Z3, t0); // step 40\n return new Point(X3, Y3, Z3);\n }\n subtract(other) {\n return this.add(other.negate());\n }\n is0() {\n return this.equals(Point.ZERO);\n }\n wNAF(n) {\n return wnaf.wNAFCached(this, pointPrecomputes, n, (comp) => {\n const toInv = Fp.invertBatch(comp.map((p) => p.pz));\n return comp.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);\n });\n }\n /**\n * Non-constant-time multiplication. Uses double-and-add algorithm.\n * It's faster, but should only be used when you don't care about\n * an exposed private key e.g. sig verification, which works over *public* keys.\n */\n multiplyUnsafe(n) {\n const I = Point.ZERO;\n if (n === _0n)\n return I;\n assertGE(n); // Will throw on 0\n if (n === _1n)\n return this;\n const { endo } = CURVE;\n if (!endo)\n return wnaf.unsafeLadder(this, n);\n // Apply endomorphism\n let { k1neg, k1, k2neg, k2 } = endo.splitScalar(n);\n let k1p = I;\n let k2p = I;\n let d = this;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n)\n k1p = k1p.add(d);\n if (k2 & _1n)\n k2p = k2p.add(d);\n d = d.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n return k1p.add(k2p);\n }\n /**\n * Constant time multiplication.\n * Uses wNAF method. Windowed method may be 10% faster,\n * but takes 2x longer to generate and consumes 2x memory.\n * Uses precomputes when available.\n * Uses endomorphism for Koblitz curves.\n * @param scalar by which the point would be multiplied\n * @returns New point\n */\n multiply(scalar) {\n assertGE(scalar);\n let n = scalar;\n let point, fake; // Fake point is used to const-time mult\n const { endo } = CURVE;\n if (endo) {\n const { k1neg, k1, k2neg, k2 } = endo.splitScalar(n);\n let { p: k1p, f: f1p } = this.wNAF(k1);\n let { p: k2p, f: f2p } = this.wNAF(k2);\n k1p = wnaf.constTimeNegate(k1neg, k1p);\n k2p = wnaf.constTimeNegate(k2neg, k2p);\n k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n point = k1p.add(k2p);\n fake = f1p.add(f2p);\n }\n else {\n const { p, f } = this.wNAF(n);\n point = p;\n fake = f;\n }\n // Normalize `z` for both points, but return only real one\n return Point.normalizeZ([point, fake])[0];\n }\n /**\n * Efficiently calculate `aP + bQ`. Unsafe, can expose private key, if used incorrectly.\n * Not using Strauss-Shamir trick: precomputation tables are faster.\n * The trick could be useful if both P and Q are not G (not in our case).\n * @returns non-zero affine point\n */\n multiplyAndAddUnsafe(Q, a, b) {\n const G = Point.BASE; // No Strauss-Shamir trick: we have 10% faster G precomputes\n const mul = (P, a // Select faster multiply() method\n ) => (a === _0n || a === _1n || !P.equals(G) ? P.multiplyUnsafe(a) : P.multiply(a));\n const sum = mul(this, a).add(mul(Q, b));\n return sum.is0() ? undefined : sum;\n }\n // Converts Projective point to affine (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n // (x, y, z) ∋ (x=x/z, y=y/z)\n toAffine(iz) {\n const { px: x, py: y, pz: z } = this;\n const is0 = this.is0();\n // If invZ was 0, we return zero point. However we still want to execute\n // all operations, so we replace invZ with a random number, 1.\n if (iz == null)\n iz = is0 ? Fp.ONE : Fp.inv(z);\n const ax = Fp.mul(x, iz);\n const ay = Fp.mul(y, iz);\n const zz = Fp.mul(z, iz);\n if (is0)\n return { x: Fp.ZERO, y: Fp.ZERO };\n if (!Fp.eql(zz, Fp.ONE))\n throw new Error('invZ was invalid');\n return { x: ax, y: ay };\n }\n isTorsionFree() {\n const { h: cofactor, isTorsionFree } = CURVE;\n if (cofactor === _1n)\n return true; // No subgroups, always torsion-free\n if (isTorsionFree)\n return isTorsionFree(Point, this);\n throw new Error('isTorsionFree() has not been declared for the elliptic curve');\n }\n clearCofactor() {\n const { h: cofactor, clearCofactor } = CURVE;\n if (cofactor === _1n)\n return this; // Fast-path\n if (clearCofactor)\n return clearCofactor(Point, this);\n return this.multiplyUnsafe(CURVE.h);\n }\n toRawBytes(isCompressed = true) {\n this.assertValidity();\n return toBytes(Point, this, isCompressed);\n }\n toHex(isCompressed = true) {\n return ut.bytesToHex(this.toRawBytes(isCompressed));\n }\n }\n Point.BASE = new Point(CURVE.Gx, CURVE.Gy, Fp.ONE);\n Point.ZERO = new Point(Fp.ZERO, Fp.ONE, Fp.ZERO);\n const _bits = CURVE.nBitLength;\n const wnaf = wNAF(Point, CURVE.endo ? Math.ceil(_bits / 2) : _bits);\n // Validate if generator point is on curve\n return {\n CURVE,\n ProjectivePoint: Point,\n normPrivateKeyToScalar,\n weierstrassEquation,\n isWithinCurveOrder,\n };\n}\nfunction validateOpts(curve) {\n const opts = validateBasic(curve);\n ut.validateObject(opts, {\n hash: 'hash',\n hmac: 'function',\n randomBytes: 'function',\n }, {\n bits2int: 'function',\n bits2int_modN: 'function',\n lowS: 'boolean',\n });\n return Object.freeze({ lowS: true, ...opts });\n}\nexport function weierstrass(curveDef) {\n const CURVE = validateOpts(curveDef);\n const { Fp, n: CURVE_ORDER } = CURVE;\n const compressedLen = Fp.BYTES + 1; // e.g. 33 for 32\n const uncompressedLen = 2 * Fp.BYTES + 1; // e.g. 65 for 32\n function isValidFieldElement(num) {\n return _0n < num && num < Fp.ORDER; // 0 is banned since it's not invertible FE\n }\n function modN(a) {\n return mod.mod(a, CURVE_ORDER);\n }\n function invN(a) {\n return mod.invert(a, CURVE_ORDER);\n }\n const { ProjectivePoint: Point, normPrivateKeyToScalar, weierstrassEquation, isWithinCurveOrder, } = weierstrassPoints({\n ...CURVE,\n toBytes(_c, point, isCompressed) {\n const a = point.toAffine();\n const x = Fp.toBytes(a.x);\n const cat = ut.concatBytes;\n if (isCompressed) {\n return cat(Uint8Array.from([point.hasEvenY() ? 0x02 : 0x03]), x);\n }\n else {\n return cat(Uint8Array.from([0x04]), x, Fp.toBytes(a.y));\n }\n },\n fromBytes(bytes) {\n const len = bytes.length;\n const head = bytes[0];\n const tail = bytes.subarray(1);\n // this.assertValidity() is done inside of fromHex\n if (len === compressedLen && (head === 0x02 || head === 0x03)) {\n const x = ut.bytesToNumberBE(tail);\n if (!isValidFieldElement(x))\n throw new Error('Point is not on curve');\n const y2 = weierstrassEquation(x); // y² = x³ + ax + b\n let y = Fp.sqrt(y2); // y = y² ^ (p+1)/4\n const isYOdd = (y & _1n) === _1n;\n // ECDSA\n const isHeadOdd = (head & 1) === 1;\n if (isHeadOdd !== isYOdd)\n y = Fp.neg(y);\n return { x, y };\n }\n else if (len === uncompressedLen && head === 0x04) {\n const x = Fp.fromBytes(tail.subarray(0, Fp.BYTES));\n const y = Fp.fromBytes(tail.subarray(Fp.BYTES, 2 * Fp.BYTES));\n return { x, y };\n }\n else {\n throw new Error(`Point of length ${len} was invalid. Expected ${compressedLen} compressed bytes or ${uncompressedLen} uncompressed bytes`);\n }\n },\n });\n const numToNByteStr = (num) => ut.bytesToHex(ut.numberToBytesBE(num, CURVE.nByteLength));\n function isBiggerThanHalfOrder(number) {\n const HALF = CURVE_ORDER >> _1n;\n return number > HALF;\n }\n function normalizeS(s) {\n return isBiggerThanHalfOrder(s) ? modN(-s) : s;\n }\n // slice bytes num\n const slcNum = (b, from, to) => ut.bytesToNumberBE(b.slice(from, to));\n /**\n * ECDSA signature with its (r, s) properties. Supports DER & compact representations.\n */\n class Signature {\n constructor(r, s, recovery) {\n this.r = r;\n this.s = s;\n this.recovery = recovery;\n this.assertValidity();\n }\n // pair (bytes of r, bytes of s)\n static fromCompact(hex) {\n const l = CURVE.nByteLength;\n hex = ensureBytes('compactSignature', hex, l * 2);\n return new Signature(slcNum(hex, 0, l), slcNum(hex, l, 2 * l));\n }\n // DER encoded ECDSA signature\n // https://bitcoin.stackexchange.com/questions/57644/what-are-the-parts-of-a-bitcoin-transaction-input-script\n static fromDER(hex) {\n const { r, s } = DER.toSig(ensureBytes('DER', hex));\n return new Signature(r, s);\n }\n assertValidity() {\n // can use assertGE here\n if (!isWithinCurveOrder(this.r))\n throw new Error('r must be 0 < r < CURVE.n');\n if (!isWithinCurveOrder(this.s))\n throw new Error('s must be 0 < s < CURVE.n');\n }\n addRecoveryBit(recovery) {\n return new Signature(this.r, this.s, recovery);\n }\n recoverPublicKey(msgHash) {\n const { r, s, recovery: rec } = this;\n const h = bits2int_modN(ensureBytes('msgHash', msgHash)); // Truncate hash\n if (rec == null || ![0, 1, 2, 3].includes(rec))\n throw new Error('recovery id invalid');\n const radj = rec === 2 || rec === 3 ? r + CURVE.n : r;\n if (radj >= Fp.ORDER)\n throw new Error('recovery id 2 or 3 invalid');\n const prefix = (rec & 1) === 0 ? '02' : '03';\n const R = Point.fromHex(prefix + numToNByteStr(radj));\n const ir = invN(radj); // r^-1\n const u1 = modN(-h * ir); // -hr^-1\n const u2 = modN(s * ir); // sr^-1\n const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2); // (sr^-1)R-(hr^-1)G = -(hr^-1)G + (sr^-1)\n if (!Q)\n throw new Error('point at infinify'); // unsafe is fine: no priv data leaked\n Q.assertValidity();\n return Q;\n }\n // Signatures should be low-s, to prevent malleability.\n hasHighS() {\n return isBiggerThanHalfOrder(this.s);\n }\n normalizeS() {\n return this.hasHighS() ? new Signature(this.r, modN(-this.s), this.recovery) : this;\n }\n // DER-encoded\n toDERRawBytes() {\n return ut.hexToBytes(this.toDERHex());\n }\n toDERHex() {\n return DER.hexFromSig({ r: this.r, s: this.s });\n }\n // padded bytes of r, then padded bytes of s\n toCompactRawBytes() {\n return ut.hexToBytes(this.toCompactHex());\n }\n toCompactHex() {\n return numToNByteStr(this.r) + numToNByteStr(this.s);\n }\n }\n const utils = {\n isValidPrivateKey(privateKey) {\n try {\n normPrivateKeyToScalar(privateKey);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n normPrivateKeyToScalar: normPrivateKeyToScalar,\n /**\n * Produces cryptographically secure private key from random of size\n * (groupLen + ceil(groupLen / 2)) with modulo bias being negligible.\n */\n randomPrivateKey: () => {\n const length = mod.getMinHashLength(CURVE.n);\n return mod.mapHashToField(CURVE.randomBytes(length), CURVE.n);\n },\n /**\n * Creates precompute table for an arbitrary EC point. Makes point \"cached\".\n * Allows to massively speed-up `point.multiply(scalar)`.\n * @returns cached point\n * @example\n * const fast = utils.precompute(8, ProjectivePoint.fromHex(someonesPubKey));\n * fast.multiply(privKey); // much faster ECDH now\n */\n precompute(windowSize = 8, point = Point.BASE) {\n point._setWindowSize(windowSize);\n point.multiply(BigInt(3)); // 3 is arbitrary, just need any number here\n return point;\n },\n };\n /**\n * Computes public key for a private key. Checks for validity of the private key.\n * @param privateKey private key\n * @param isCompressed whether to return compact (default), or full key\n * @returns Public key, full when isCompressed=false; short when isCompressed=true\n */\n function getPublicKey(privateKey, isCompressed = true) {\n return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n }\n /**\n * Quick and dirty check for item being public key. Does not validate hex, or being on-curve.\n */\n function isProbPub(item) {\n const arr = item instanceof Uint8Array;\n const str = typeof item === 'string';\n const len = (arr || str) && item.length;\n if (arr)\n return len === compressedLen || len === uncompressedLen;\n if (str)\n return len === 2 * compressedLen || len === 2 * uncompressedLen;\n if (item instanceof Point)\n return true;\n return false;\n }\n /**\n * ECDH (Elliptic Curve Diffie Hellman).\n * Computes shared public key from private key and public key.\n * Checks: 1) private key validity 2) shared key is on-curve.\n * Does NOT hash the result.\n * @param privateA private key\n * @param publicB different public key\n * @param isCompressed whether to return compact (default), or full key\n * @returns shared public key\n */\n function getSharedSecret(privateA, publicB, isCompressed = true) {\n if (isProbPub(privateA))\n throw new Error('first arg must be private key');\n if (!isProbPub(publicB))\n throw new Error('second arg must be public key');\n const b = Point.fromHex(publicB); // check for being on-curve\n return b.multiply(normPrivateKeyToScalar(privateA)).toRawBytes(isCompressed);\n }\n // RFC6979: ensure ECDSA msg is X bytes and < N. RFC suggests optional truncating via bits2octets.\n // FIPS 186-4 4.6 suggests the leftmost min(nBitLen, outLen) bits, which matches bits2int.\n // bits2int can produce res>N, we can do mod(res, N) since the bitLen is the same.\n // int2octets can't be used; pads small msgs with 0: unacceptatble for trunc as per RFC vectors\n const bits2int = CURVE.bits2int ||\n function (bytes) {\n // For curves with nBitLength % 8 !== 0: bits2octets(bits2octets(m)) !== bits2octets(m)\n // for some cases, since bytes.length * 8 is not actual bitLength.\n const num = ut.bytesToNumberBE(bytes); // check for == u8 done here\n const delta = bytes.length * 8 - CURVE.nBitLength; // truncate to nBitLength leftmost bits\n return delta > 0 ? num >> BigInt(delta) : num;\n };\n const bits2int_modN = CURVE.bits2int_modN ||\n function (bytes) {\n return modN(bits2int(bytes)); // can't use bytesToNumberBE here\n };\n // NOTE: pads output with zero as per spec\n const ORDER_MASK = ut.bitMask(CURVE.nBitLength);\n /**\n * Converts to bytes. Checks if num in `[0..ORDER_MASK-1]` e.g.: `[0..2^256-1]`.\n */\n function int2octets(num) {\n if (typeof num !== 'bigint')\n throw new Error('bigint expected');\n if (!(_0n <= num && num < ORDER_MASK))\n throw new Error(`bigint expected < 2^${CURVE.nBitLength}`);\n // works with order, can have different size than numToField!\n return ut.numberToBytesBE(num, CURVE.nByteLength);\n }\n // Steps A, D of RFC6979 3.2\n // Creates RFC6979 seed; converts msg/privKey to numbers.\n // Used only in sign, not in verify.\n // NOTE: we cannot assume here that msgHash has same amount of bytes as curve order, this will be wrong at least for P521.\n // Also it can be bigger for P224 + SHA256\n function prepSig(msgHash, privateKey, opts = defaultSigOpts) {\n if (['recovered', 'canonical'].some((k) => k in opts))\n throw new Error('sign() legacy options not supported');\n const { hash, randomBytes } = CURVE;\n let { lowS, prehash, extraEntropy: ent } = opts; // generates low-s sigs by default\n if (lowS == null)\n lowS = true; // RFC6979 3.2: we skip step A, because we already provide hash\n msgHash = ensureBytes('msgHash', msgHash);\n if (prehash)\n msgHash = ensureBytes('prehashed msgHash', hash(msgHash));\n // We can't later call bits2octets, since nested bits2int is broken for curves\n // with nBitLength % 8 !== 0. Because of that, we unwrap it here as int2octets call.\n // const bits2octets = (bits) => int2octets(bits2int_modN(bits))\n const h1int = bits2int_modN(msgHash);\n const d = normPrivateKeyToScalar(privateKey); // validate private key, convert to bigint\n const seedArgs = [int2octets(d), int2octets(h1int)];\n // extraEntropy. RFC6979 3.6: additional k' (optional).\n if (ent != null) {\n // K = HMAC_K(V || 0x00 || int2octets(x) || bits2octets(h1) || k')\n const e = ent === true ? randomBytes(Fp.BYTES) : ent; // generate random bytes OR pass as-is\n seedArgs.push(ensureBytes('extraEntropy', e)); // check for being bytes\n }\n const seed = ut.concatBytes(...seedArgs); // Step D of RFC6979 3.2\n const m = h1int; // NOTE: no need to call bits2int second time here, it is inside truncateHash!\n // Converts signature params into point w r/s, checks result for validity.\n function k2sig(kBytes) {\n // RFC 6979 Section 3.2, step 3: k = bits2int(T)\n const k = bits2int(kBytes); // Cannot use fields methods, since it is group element\n if (!isWithinCurveOrder(k))\n return; // Important: all mod() calls here must be done over N\n const ik = invN(k); // k^-1 mod n\n const q = Point.BASE.multiply(k).toAffine(); // q = Gk\n const r = modN(q.x); // r = q.x mod n\n if (r === _0n)\n return;\n // Can use scalar blinding b^-1(bm + bdr) where b ∈ [1,q−1] according to\n // https://tches.iacr.org/index.php/TCHES/article/view/7337/6509. We've decided against it:\n // a) dependency on CSPRNG b) 15% slowdown c) doesn't really help since bigints are not CT\n const s = modN(ik * modN(m + r * d)); // Not using blinding here\n if (s === _0n)\n return;\n let recovery = (q.x === r ? 0 : 2) | Number(q.y & _1n); // recovery bit (2 or 3, when q.x > n)\n let normS = s;\n if (lowS && isBiggerThanHalfOrder(s)) {\n normS = normalizeS(s); // if lowS was passed, ensure s is always\n recovery ^= 1; // // in the bottom half of N\n }\n return new Signature(r, normS, recovery); // use normS, not s\n }\n return { seed, k2sig };\n }\n const defaultSigOpts = { lowS: CURVE.lowS, prehash: false };\n const defaultVerOpts = { lowS: CURVE.lowS, prehash: false };\n /**\n * Signs message hash with a private key.\n * ```\n * sign(m, d, k) where\n * (x, y) = G × k\n * r = x mod n\n * s = (m + dr)/k mod n\n * ```\n * @param msgHash NOT message. msg needs to be hashed to `msgHash`, or use `prehash`.\n * @param privKey private key\n * @param opts lowS for non-malleable sigs. extraEntropy for mixing randomness into k. prehash will hash first arg.\n * @returns signature with recovery param\n */\n function sign(msgHash, privKey, opts = defaultSigOpts) {\n const { seed, k2sig } = prepSig(msgHash, privKey, opts); // Steps A, D of RFC6979 3.2.\n const C = CURVE;\n const drbg = ut.createHmacDrbg(C.hash.outputLen, C.nByteLength, C.hmac);\n return drbg(seed, k2sig); // Steps B, C, D, E, F, G\n }\n // Enable precomputes. Slows down first publicKey computation by 20ms.\n Point.BASE._setWindowSize(8);\n // utils.precompute(8, ProjectivePoint.BASE)\n /**\n * Verifies a signature against message hash and public key.\n * Rejects lowS signatures by default: to override,\n * specify option `{lowS: false}`. Implements section 4.1.4 from https://www.secg.org/sec1-v2.pdf:\n *\n * ```\n * verify(r, s, h, P) where\n * U1 = hs^-1 mod n\n * U2 = rs^-1 mod n\n * R = U1⋅G - U2⋅P\n * mod(R.x, n) == r\n * ```\n */\n function verify(signature, msgHash, publicKey, opts = defaultVerOpts) {\n const sg = signature;\n msgHash = ensureBytes('msgHash', msgHash);\n publicKey = ensureBytes('publicKey', publicKey);\n if ('strict' in opts)\n throw new Error('options.strict was renamed to lowS');\n const { lowS, prehash } = opts;\n let _sig = undefined;\n let P;\n try {\n if (typeof sg === 'string' || sg instanceof Uint8Array) {\n // Signature can be represented in 2 ways: compact (2*nByteLength) & DER (variable-length).\n // Since DER can also be 2*nByteLength bytes, we check for it first.\n try {\n _sig = Signature.fromDER(sg);\n }\n catch (derError) {\n if (!(derError instanceof DER.Err))\n throw derError;\n _sig = Signature.fromCompact(sg);\n }\n }\n else if (typeof sg === 'object' && typeof sg.r === 'bigint' && typeof sg.s === 'bigint') {\n const { r, s } = sg;\n _sig = new Signature(r, s);\n }\n else {\n throw new Error('PARSE');\n }\n P = Point.fromHex(publicKey);\n }\n catch (error) {\n if (error.message === 'PARSE')\n throw new Error(`signature must be Signature instance, Uint8Array or hex string`);\n return false;\n }\n if (lowS && _sig.hasHighS())\n return false;\n if (prehash)\n msgHash = CURVE.hash(msgHash);\n const { r, s } = _sig;\n const h = bits2int_modN(msgHash); // Cannot use fields methods, since it is group element\n const is = invN(s); // s^-1\n const u1 = modN(h * is); // u1 = hs^-1 mod n\n const u2 = modN(r * is); // u2 = rs^-1 mod n\n const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2)?.toAffine(); // R = u1⋅G + u2⋅P\n if (!R)\n return false;\n const v = modN(R.x);\n return v === r;\n }\n return {\n CURVE,\n getPublicKey,\n getSharedSecret,\n sign,\n verify,\n ProjectivePoint: Point,\n Signature,\n utils,\n };\n}\n/**\n * Implementation of the Shallue and van de Woestijne method for any weierstrass curve.\n * TODO: check if there is a way to merge this with uvRatio in Edwards; move to modular.\n * b = True and y = sqrt(u / v) if (u / v) is square in F, and\n * b = False and y = sqrt(Z * (u / v)) otherwise.\n * @param Fp\n * @param Z\n * @returns\n */\nexport function SWUFpSqrtRatio(Fp, Z) {\n // Generic implementation\n const q = Fp.ORDER;\n let l = _0n;\n for (let o = q - _1n; o % _2n === _0n; o /= _2n)\n l += _1n;\n const c1 = l; // 1. c1, the largest integer such that 2^c1 divides q - 1.\n // We need 2n ** c1 and 2n ** (c1-1). We can't use **; but we can use <<.\n // 2n ** c1 == 2n << (c1-1)\n const _2n_pow_c1_1 = _2n << (c1 - _1n - _1n);\n const _2n_pow_c1 = _2n_pow_c1_1 * _2n;\n const c2 = (q - _1n) / _2n_pow_c1; // 2. c2 = (q - 1) / (2^c1) # Integer arithmetic\n const c3 = (c2 - _1n) / _2n; // 3. c3 = (c2 - 1) / 2 # Integer arithmetic\n const c4 = _2n_pow_c1 - _1n; // 4. c4 = 2^c1 - 1 # Integer arithmetic\n const c5 = _2n_pow_c1_1; // 5. c5 = 2^(c1 - 1) # Integer arithmetic\n const c6 = Fp.pow(Z, c2); // 6. c6 = Z^c2\n const c7 = Fp.pow(Z, (c2 + _1n) / _2n); // 7. c7 = Z^((c2 + 1) / 2)\n let sqrtRatio = (u, v) => {\n let tv1 = c6; // 1. tv1 = c6\n let tv2 = Fp.pow(v, c4); // 2. tv2 = v^c4\n let tv3 = Fp.sqr(tv2); // 3. tv3 = tv2^2\n tv3 = Fp.mul(tv3, v); // 4. tv3 = tv3 * v\n let tv5 = Fp.mul(u, tv3); // 5. tv5 = u * tv3\n tv5 = Fp.pow(tv5, c3); // 6. tv5 = tv5^c3\n tv5 = Fp.mul(tv5, tv2); // 7. tv5 = tv5 * tv2\n tv2 = Fp.mul(tv5, v); // 8. tv2 = tv5 * v\n tv3 = Fp.mul(tv5, u); // 9. tv3 = tv5 * u\n let tv4 = Fp.mul(tv3, tv2); // 10. tv4 = tv3 * tv2\n tv5 = Fp.pow(tv4, c5); // 11. tv5 = tv4^c5\n let isQR = Fp.eql(tv5, Fp.ONE); // 12. isQR = tv5 == 1\n tv2 = Fp.mul(tv3, c7); // 13. tv2 = tv3 * c7\n tv5 = Fp.mul(tv4, tv1); // 14. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, isQR); // 15. tv3 = CMOV(tv2, tv3, isQR)\n tv4 = Fp.cmov(tv5, tv4, isQR); // 16. tv4 = CMOV(tv5, tv4, isQR)\n // 17. for i in (c1, c1 - 1, ..., 2):\n for (let i = c1; i > _1n; i--) {\n let tv5 = i - _2n; // 18. tv5 = i - 2\n tv5 = _2n << (tv5 - _1n); // 19. tv5 = 2^tv5\n let tvv5 = Fp.pow(tv4, tv5); // 20. tv5 = tv4^tv5\n const e1 = Fp.eql(tvv5, Fp.ONE); // 21. e1 = tv5 == 1\n tv2 = Fp.mul(tv3, tv1); // 22. tv2 = tv3 * tv1\n tv1 = Fp.mul(tv1, tv1); // 23. tv1 = tv1 * tv1\n tvv5 = Fp.mul(tv4, tv1); // 24. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, e1); // 25. tv3 = CMOV(tv2, tv3, e1)\n tv4 = Fp.cmov(tvv5, tv4, e1); // 26. tv4 = CMOV(tv5, tv4, e1)\n }\n return { isValid: isQR, value: tv3 };\n };\n if (Fp.ORDER % _4n === _3n) {\n // sqrt_ratio_3mod4(u, v)\n const c1 = (Fp.ORDER - _3n) / _4n; // 1. c1 = (q - 3) / 4 # Integer arithmetic\n const c2 = Fp.sqrt(Fp.neg(Z)); // 2. c2 = sqrt(-Z)\n sqrtRatio = (u, v) => {\n let tv1 = Fp.sqr(v); // 1. tv1 = v^2\n const tv2 = Fp.mul(u, v); // 2. tv2 = u * v\n tv1 = Fp.mul(tv1, tv2); // 3. tv1 = tv1 * tv2\n let y1 = Fp.pow(tv1, c1); // 4. y1 = tv1^c1\n y1 = Fp.mul(y1, tv2); // 5. y1 = y1 * tv2\n const y2 = Fp.mul(y1, c2); // 6. y2 = y1 * c2\n const tv3 = Fp.mul(Fp.sqr(y1), v); // 7. tv3 = y1^2; 8. tv3 = tv3 * v\n const isQR = Fp.eql(tv3, u); // 9. isQR = tv3 == u\n let y = Fp.cmov(y2, y1, isQR); // 10. y = CMOV(y2, y1, isQR)\n return { isValid: isQR, value: y }; // 11. return (isQR, y) isQR ? y : y*c2\n };\n }\n // No curves uses that\n // if (Fp.ORDER % _8n === _5n) // sqrt_ratio_5mod8\n return sqrtRatio;\n}\n/**\n * Simplified Shallue-van de Woestijne-Ulas Method\n * https://www.rfc-editor.org/rfc/rfc9380#section-6.6.2\n */\nexport function mapToCurveSimpleSWU(Fp, opts) {\n mod.validateField(Fp);\n if (!Fp.isValid(opts.A) || !Fp.isValid(opts.B) || !Fp.isValid(opts.Z))\n throw new Error('mapToCurveSimpleSWU: invalid opts');\n const sqrtRatio = SWUFpSqrtRatio(Fp, opts.Z);\n if (!Fp.isOdd)\n throw new Error('Fp.isOdd is not implemented!');\n // Input: u, an element of F.\n // Output: (x, y), a point on E.\n return (u) => {\n // prettier-ignore\n let tv1, tv2, tv3, tv4, tv5, tv6, x, y;\n tv1 = Fp.sqr(u); // 1. tv1 = u^2\n tv1 = Fp.mul(tv1, opts.Z); // 2. tv1 = Z * tv1\n tv2 = Fp.sqr(tv1); // 3. tv2 = tv1^2\n tv2 = Fp.add(tv2, tv1); // 4. tv2 = tv2 + tv1\n tv3 = Fp.add(tv2, Fp.ONE); // 5. tv3 = tv2 + 1\n tv3 = Fp.mul(tv3, opts.B); // 6. tv3 = B * tv3\n tv4 = Fp.cmov(opts.Z, Fp.neg(tv2), !Fp.eql(tv2, Fp.ZERO)); // 7. tv4 = CMOV(Z, -tv2, tv2 != 0)\n tv4 = Fp.mul(tv4, opts.A); // 8. tv4 = A * tv4\n tv2 = Fp.sqr(tv3); // 9. tv2 = tv3^2\n tv6 = Fp.sqr(tv4); // 10. tv6 = tv4^2\n tv5 = Fp.mul(tv6, opts.A); // 11. tv5 = A * tv6\n tv2 = Fp.add(tv2, tv5); // 12. tv2 = tv2 + tv5\n tv2 = Fp.mul(tv2, tv3); // 13. tv2 = tv2 * tv3\n tv6 = Fp.mul(tv6, tv4); // 14. tv6 = tv6 * tv4\n tv5 = Fp.mul(tv6, opts.B); // 15. tv5 = B * tv6\n tv2 = Fp.add(tv2, tv5); // 16. tv2 = tv2 + tv5\n x = Fp.mul(tv1, tv3); // 17. x = tv1 * tv3\n const { isValid, value } = sqrtRatio(tv2, tv6); // 18. (is_gx1_square, y1) = sqrt_ratio(tv2, tv6)\n y = Fp.mul(tv1, u); // 19. y = tv1 * u -> Z * u^3 * y1\n y = Fp.mul(y, value); // 20. y = y * y1\n x = Fp.cmov(x, tv3, isValid); // 21. x = CMOV(x, tv3, is_gx1_square)\n y = Fp.cmov(y, value, isValid); // 22. y = CMOV(y, y1, is_gx1_square)\n const e1 = Fp.isOdd(u) === Fp.isOdd(y); // 23. e1 = sgn0(u) == sgn0(y)\n y = Fp.cmov(Fp.neg(y), y, e1); // 24. y = CMOV(-y, y, e1)\n x = Fp.div(x, tv4); // 25. x = x / tv4\n return { x, y };\n };\n}\n//# sourceMappingURL=weierstrass.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { hmac } from '@noble/hashes/hmac';\nimport { concatBytes, randomBytes } from '@noble/hashes/utils';\nimport { weierstrass } from './abstract/weierstrass.js';\n// connects noble-curves to noble-hashes\nexport function getHash(hash) {\n return {\n hash,\n hmac: (key, ...msgs) => hmac(hash, key, concatBytes(...msgs)),\n randomBytes,\n };\n}\nexport function createCurve(curveDef, defHash) {\n const create = (hash) => weierstrass({ ...curveDef, ...getHash(hash) });\n return Object.freeze({ ...create(defHash), create });\n}\n//# sourceMappingURL=_shortw_utils.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha256 } from '@noble/hashes/sha256';\nimport { randomBytes } from '@noble/hashes/utils';\nimport { Field, mod, pow2 } from './abstract/modular.js';\nimport { mapToCurveSimpleSWU } from './abstract/weierstrass.js';\nimport { bytesToNumberBE, concatBytes, ensureBytes, numberToBytesBE } from './abstract/utils.js';\nimport { createHasher, isogenyMap } from './abstract/hash-to-curve.js';\nimport { createCurve } from './_shortw_utils.js';\nconst secp256k1P = BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f');\nconst secp256k1N = BigInt('0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141');\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst divNearest = (a, b) => (a + b / _2n) / b;\n/**\n * √n = n^((p+1)/4) for fields p = 3 mod 4. We unwrap the loop and multiply bit-by-bit.\n * (P+1n/4n).toString(2) would produce bits [223x 1, 0, 22x 1, 4x 0, 11, 00]\n */\nfunction sqrtMod(y) {\n const P = secp256k1P;\n // prettier-ignore\n const _3n = BigInt(3), _6n = BigInt(6), _11n = BigInt(11), _22n = BigInt(22);\n // prettier-ignore\n const _23n = BigInt(23), _44n = BigInt(44), _88n = BigInt(88);\n const b2 = (y * y * y) % P; // x^3, 11\n const b3 = (b2 * b2 * y) % P; // x^7\n const b6 = (pow2(b3, _3n, P) * b3) % P;\n const b9 = (pow2(b6, _3n, P) * b3) % P;\n const b11 = (pow2(b9, _2n, P) * b2) % P;\n const b22 = (pow2(b11, _11n, P) * b11) % P;\n const b44 = (pow2(b22, _22n, P) * b22) % P;\n const b88 = (pow2(b44, _44n, P) * b44) % P;\n const b176 = (pow2(b88, _88n, P) * b88) % P;\n const b220 = (pow2(b176, _44n, P) * b44) % P;\n const b223 = (pow2(b220, _3n, P) * b3) % P;\n const t1 = (pow2(b223, _23n, P) * b22) % P;\n const t2 = (pow2(t1, _6n, P) * b2) % P;\n const root = pow2(t2, _2n, P);\n if (!Fp.eql(Fp.sqr(root), y))\n throw new Error('Cannot find square root');\n return root;\n}\nconst Fp = Field(secp256k1P, undefined, undefined, { sqrt: sqrtMod });\nexport const secp256k1 = createCurve({\n a: BigInt(0),\n b: BigInt(7),\n Fp,\n n: secp256k1N,\n // Base point (x, y) aka generator point\n Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),\n Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),\n h: BigInt(1),\n lowS: true,\n /**\n * secp256k1 belongs to Koblitz curves: it has efficiently computable endomorphism.\n * Endomorphism uses 2x less RAM, speeds up precomputation by 2x and ECDH / key recovery by 20%.\n * For precomputed wNAF it trades off 1/2 init time & 1/3 ram for 20% perf hit.\n * Explanation: https://gist.github.com/paulmillr/eb670806793e84df628a7c434a873066\n */\n endo: {\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n splitScalar: (k) => {\n const n = secp256k1N;\n const a1 = BigInt('0x3086d221a7d46bcde86c90e49284eb15');\n const b1 = -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3');\n const a2 = BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8');\n const b2 = a1;\n const POW_2_128 = BigInt('0x100000000000000000000000000000000'); // (2n**128n).toString(16)\n const c1 = divNearest(b2 * k, n);\n const c2 = divNearest(-b1 * k, n);\n let k1 = mod(k - c1 * a1 - c2 * a2, n);\n let k2 = mod(-c1 * b1 - c2 * b2, n);\n const k1neg = k1 > POW_2_128;\n const k2neg = k2 > POW_2_128;\n if (k1neg)\n k1 = n - k1;\n if (k2neg)\n k2 = n - k2;\n if (k1 > POW_2_128 || k2 > POW_2_128) {\n throw new Error('splitScalar: Endomorphism failed, k=' + k);\n }\n return { k1neg, k1, k2neg, k2 };\n },\n },\n}, sha256);\n// Schnorr signatures are superior to ECDSA from above. Below is Schnorr-specific BIP0340 code.\n// https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki\nconst _0n = BigInt(0);\nconst fe = (x) => typeof x === 'bigint' && _0n < x && x < secp256k1P;\nconst ge = (x) => typeof x === 'bigint' && _0n < x && x < secp256k1N;\n/** An object mapping tags to their tagged hash prefix of [SHA256(tag) | SHA256(tag)] */\nconst TAGGED_HASH_PREFIXES = {};\nfunction taggedHash(tag, ...messages) {\n let tagP = TAGGED_HASH_PREFIXES[tag];\n if (tagP === undefined) {\n const tagH = sha256(Uint8Array.from(tag, (c) => c.charCodeAt(0)));\n tagP = concatBytes(tagH, tagH);\n TAGGED_HASH_PREFIXES[tag] = tagP;\n }\n return sha256(concatBytes(tagP, ...messages));\n}\n// ECDSA compact points are 33-byte. Schnorr is 32: we strip first byte 0x02 or 0x03\nconst pointToBytes = (point) => point.toRawBytes(true).slice(1);\nconst numTo32b = (n) => numberToBytesBE(n, 32);\nconst modP = (x) => mod(x, secp256k1P);\nconst modN = (x) => mod(x, secp256k1N);\nconst Point = secp256k1.ProjectivePoint;\nconst GmulAdd = (Q, a, b) => Point.BASE.multiplyAndAddUnsafe(Q, a, b);\n// Calculate point, scalar and bytes\nfunction schnorrGetExtPubKey(priv) {\n let d_ = secp256k1.utils.normPrivateKeyToScalar(priv); // same method executed in fromPrivateKey\n let p = Point.fromPrivateKey(d_); // P = d'⋅G; 0 < d' < n check is done inside\n const scalar = p.hasEvenY() ? d_ : modN(-d_);\n return { scalar: scalar, bytes: pointToBytes(p) };\n}\n/**\n * lift_x from BIP340. Convert 32-byte x coordinate to elliptic curve point.\n * @returns valid point checked for being on-curve\n */\nfunction lift_x(x) {\n if (!fe(x))\n throw new Error('bad x: need 0 < x < p'); // Fail if x ≥ p.\n const xx = modP(x * x);\n const c = modP(xx * x + BigInt(7)); // Let c = x³ + 7 mod p.\n let y = sqrtMod(c); // Let y = c^(p+1)/4 mod p.\n if (y % _2n !== _0n)\n y = modP(-y); // Return the unique point P such that x(P) = x and\n const p = new Point(x, y, _1n); // y(P) = y if y mod 2 = 0 or y(P) = p-y otherwise.\n p.assertValidity();\n return p;\n}\n/**\n * Create tagged hash, convert it to bigint, reduce modulo-n.\n */\nfunction challenge(...args) {\n return modN(bytesToNumberBE(taggedHash('BIP0340/challenge', ...args)));\n}\n/**\n * Schnorr public key is just `x` coordinate of Point as per BIP340.\n */\nfunction schnorrGetPublicKey(privateKey) {\n return schnorrGetExtPubKey(privateKey).bytes; // d'=int(sk). Fail if d'=0 or d'≥n. Ret bytes(d'⋅G)\n}\n/**\n * Creates Schnorr signature as per BIP340. Verifies itself before returning anything.\n * auxRand is optional and is not the sole source of k generation: bad CSPRNG won't be dangerous.\n */\nfunction schnorrSign(message, privateKey, auxRand = randomBytes(32)) {\n const m = ensureBytes('message', message);\n const { bytes: px, scalar: d } = schnorrGetExtPubKey(privateKey); // checks for isWithinCurveOrder\n const a = ensureBytes('auxRand', auxRand, 32); // Auxiliary random data a: a 32-byte array\n const t = numTo32b(d ^ bytesToNumberBE(taggedHash('BIP0340/aux', a))); // Let t be the byte-wise xor of bytes(d) and hash/aux(a)\n const rand = taggedHash('BIP0340/nonce', t, px, m); // Let rand = hash/nonce(t || bytes(P) || m)\n const k_ = modN(bytesToNumberBE(rand)); // Let k' = int(rand) mod n\n if (k_ === _0n)\n throw new Error('sign failed: k is zero'); // Fail if k' = 0.\n const { bytes: rx, scalar: k } = schnorrGetExtPubKey(k_); // Let R = k'⋅G.\n const e = challenge(rx, px, m); // Let e = int(hash/challenge(bytes(R) || bytes(P) || m)) mod n.\n const sig = new Uint8Array(64); // Let sig = bytes(R) || bytes((k + ed) mod n).\n sig.set(rx, 0);\n sig.set(numTo32b(modN(k + e * d)), 32);\n // If Verify(bytes(P), m, sig) (see below) returns failure, abort\n if (!schnorrVerify(sig, m, px))\n throw new Error('sign: Invalid signature produced');\n return sig;\n}\n/**\n * Verifies Schnorr signature.\n * Will swallow errors & return false except for initial type validation of arguments.\n */\nfunction schnorrVerify(signature, message, publicKey) {\n const sig = ensureBytes('signature', signature, 64);\n const m = ensureBytes('message', message);\n const pub = ensureBytes('publicKey', publicKey, 32);\n try {\n const P = lift_x(bytesToNumberBE(pub)); // P = lift_x(int(pk)); fail if that fails\n const r = bytesToNumberBE(sig.subarray(0, 32)); // Let r = int(sig[0:32]); fail if r ≥ p.\n if (!fe(r))\n return false;\n const s = bytesToNumberBE(sig.subarray(32, 64)); // Let s = int(sig[32:64]); fail if s ≥ n.\n if (!ge(s))\n return false;\n const e = challenge(numTo32b(r), pointToBytes(P), m); // int(challenge(bytes(r)||bytes(P)||m))%n\n const R = GmulAdd(P, s, modN(-e)); // R = s⋅G - e⋅P\n if (!R || !R.hasEvenY() || R.toAffine().x !== r)\n return false; // -eP == (n-e)P\n return true; // Fail if is_infinite(R) / not has_even_y(R) / x(R) ≠ r.\n }\n catch (error) {\n return false;\n }\n}\nexport const schnorr = /* @__PURE__ */ (() => ({\n getPublicKey: schnorrGetPublicKey,\n sign: schnorrSign,\n verify: schnorrVerify,\n utils: {\n randomPrivateKey: secp256k1.utils.randomPrivateKey,\n lift_x,\n pointToBytes,\n numberToBytesBE,\n bytesToNumberBE,\n taggedHash,\n mod,\n },\n}))();\nconst isoMap = /* @__PURE__ */ (() => isogenyMap(Fp, [\n // xNum\n [\n '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa8c7',\n '0x7d3d4c80bc321d5b9f315cea7fd44c5d595d2fc0bf63b92dfff1044f17c6581',\n '0x534c328d23f234e6e2a413deca25caece4506144037c40314ecbd0b53d9dd262',\n '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa88c',\n ],\n // xDen\n [\n '0xd35771193d94918a9ca34ccbb7b640dd86cd409542f8487d9fe6b745781eb49b',\n '0xedadc6f64383dc1df7c4b2d51b54225406d36b641f5e41bbc52a56612a8c6d14',\n '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n ],\n // yNum\n [\n '0x4bda12f684bda12f684bda12f684bda12f684bda12f684bda12f684b8e38e23c',\n '0xc75e0c32d5cb7c0fa9d0a54b12a0a6d5647ab046d686da6fdffc90fc201d71a3',\n '0x29a6194691f91a73715209ef6512e576722830a201be2018a765e85a9ecee931',\n '0x2f684bda12f684bda12f684bda12f684bda12f684bda12f684bda12f38e38d84',\n ],\n // yDen\n [\n '0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffff93b',\n '0x7a06534bb8bdb49fd5e9e6632722c2989467c1bfc8e8d978dfb425d2685c2573',\n '0x6484aa716545ca2cf3a70c3fa8fe337e0a3d21162f0d6299a7bf8192bfd2a76f',\n '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n ],\n].map((i) => i.map((j) => BigInt(j)))))();\nconst mapSWU = /* @__PURE__ */ (() => mapToCurveSimpleSWU(Fp, {\n A: BigInt('0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533'),\n B: BigInt('1771'),\n Z: Fp.create(BigInt('-11')),\n}))();\nconst htf = /* @__PURE__ */ (() => createHasher(secp256k1.ProjectivePoint, (scalars) => {\n const { x, y } = mapSWU(Fp.create(scalars[0]));\n return isoMap(x, y);\n}, {\n DST: 'secp256k1_XMD:SHA-256_SSWU_RO_',\n encodeDST: 'secp256k1_XMD:SHA-256_SSWU_NU_',\n p: Fp.ORDER,\n m: 1,\n k: 128,\n expand: 'xmd',\n hash: sha256,\n}))();\nexport const hashToCurve = /* @__PURE__ */ (() => htf.hashToCurve)();\nexport const encodeToCurve = /* @__PURE__ */ (() => htf.encodeToCurve)();\n//# sourceMappingURL=secp256k1.js.map","/**\n * A constant for the zero hash.\n *\n * (**i.e.** ``\"0x0000000000000000000000000000000000000000000000000000000000000000\"``)\n */\nexport const ZeroHash = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\n//# sourceMappingURL=hashes.js.map","// NFKC (composed) // (decomposed)\n/**\n * A constant for the ether symbol (normalized using NFKC).\n *\n * (**i.e.** ``\"\\\\u039e\"``)\n */\nexport const EtherSymbol = \"\\u039e\"; // \"\\uD835\\uDF63\";\n/**\n * A constant for the [[link-eip-191]] personal message prefix.\n *\n * (**i.e.** ``\"\\\\x19Ethereum Signed Message:\\\\n\"``)\n */\nexport const MessagePrefix = \"\\x19Ethereum Signed Message:\\n\";\n//# sourceMappingURL=strings.js.map","import { ZeroHash } from \"../constants/index.js\";\nimport { concat, dataLength, getBigInt, getBytes, getNumber, hexlify, toBeArray, isHexString, zeroPadValue, assertArgument, assertPrivate } from \"../utils/index.js\";\n// Constants\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\nconst BN_2 = BigInt(2);\nconst BN_27 = BigInt(27);\nconst BN_28 = BigInt(28);\nconst BN_35 = BigInt(35);\nconst _guard = {};\nfunction toUint256(value) {\n return zeroPadValue(toBeArray(value), 32);\n}\n/**\n * A Signature @TODO\n *\n *\n * @_docloc: api/crypto:Signing\n */\nexport class Signature {\n #r;\n #s;\n #v;\n #networkV;\n /**\n * The ``r`` value for a signautre.\n *\n * This represents the ``x`` coordinate of a \"reference\" or\n * challenge point, from which the ``y`` can be computed.\n */\n get r() { return this.#r; }\n set r(value) {\n assertArgument(dataLength(value) === 32, \"invalid r\", \"value\", value);\n this.#r = hexlify(value);\n }\n /**\n * The ``s`` value for a signature.\n */\n get s() { return this.#s; }\n set s(_value) {\n assertArgument(dataLength(_value) === 32, \"invalid s\", \"value\", _value);\n const value = hexlify(_value);\n assertArgument(parseInt(value.substring(0, 3)) < 8, \"non-canonical s\", \"value\", value);\n this.#s = value;\n }\n /**\n * The ``v`` value for a signature.\n *\n * Since a given ``x`` value for ``r`` has two possible values for\n * its correspondin ``y``, the ``v`` indicates which of the two ``y``\n * values to use.\n *\n * It is normalized to the values ``27`` or ``28`` for legacy\n * purposes.\n */\n get v() { return this.#v; }\n set v(value) {\n const v = getNumber(value, \"value\");\n assertArgument(v === 27 || v === 28, \"invalid v\", \"v\", value);\n this.#v = v;\n }\n /**\n * The EIP-155 ``v`` for legacy transactions. For non-legacy\n * transactions, this value is ``null``.\n */\n get networkV() { return this.#networkV; }\n /**\n * The chain ID for EIP-155 legacy transactions. For non-legacy\n * transactions, this value is ``null``.\n */\n get legacyChainId() {\n const v = this.networkV;\n if (v == null) {\n return null;\n }\n return Signature.getChainId(v);\n }\n /**\n * The ``yParity`` for the signature.\n *\n * See ``v`` for more details on how this value is used.\n */\n get yParity() {\n return (this.v === 27) ? 0 : 1;\n }\n /**\n * The [[link-eip-2098]] compact representation of the ``yParity``\n * and ``s`` compacted into a single ``bytes32``.\n */\n get yParityAndS() {\n // The EIP-2098 compact representation\n const yParityAndS = getBytes(this.s);\n if (this.yParity) {\n yParityAndS[0] |= 0x80;\n }\n return hexlify(yParityAndS);\n }\n /**\n * The [[link-eip-2098]] compact representation.\n */\n get compactSerialized() {\n return concat([this.r, this.yParityAndS]);\n }\n /**\n * The serialized representation.\n */\n get serialized() {\n return concat([this.r, this.s, (this.yParity ? \"0x1c\" : \"0x1b\")]);\n }\n /**\n * @private\n */\n constructor(guard, r, s, v) {\n assertPrivate(guard, _guard, \"Signature\");\n this.#r = r;\n this.#s = s;\n this.#v = v;\n this.#networkV = null;\n }\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return `Signature { r: \"${this.r}\", s: \"${this.s}\", yParity: ${this.yParity}, networkV: ${this.networkV} }`;\n }\n /**\n * Returns a new identical [[Signature]].\n */\n clone() {\n const clone = new Signature(_guard, this.r, this.s, this.v);\n if (this.networkV) {\n clone.#networkV = this.networkV;\n }\n return clone;\n }\n /**\n * Returns a representation that is compatible with ``JSON.stringify``.\n */\n toJSON() {\n const networkV = this.networkV;\n return {\n _type: \"signature\",\n networkV: ((networkV != null) ? networkV.toString() : null),\n r: this.r, s: this.s, v: this.v,\n };\n }\n /**\n * Compute the chain ID from the ``v`` in a legacy EIP-155 transactions.\n *\n * @example:\n * Signature.getChainId(45)\n * //_result:\n *\n * Signature.getChainId(46)\n * //_result:\n */\n static getChainId(v) {\n const bv = getBigInt(v, \"v\");\n // The v is not an EIP-155 v, so it is the unspecified chain ID\n if ((bv == BN_27) || (bv == BN_28)) {\n return BN_0;\n }\n // Bad value for an EIP-155 v\n assertArgument(bv >= BN_35, \"invalid EIP-155 v\", \"v\", v);\n return (bv - BN_35) / BN_2;\n }\n /**\n * Compute the ``v`` for a chain ID for a legacy EIP-155 transactions.\n *\n * Legacy transactions which use [[link-eip-155]] hijack the ``v``\n * property to include the chain ID.\n *\n * @example:\n * Signature.getChainIdV(5, 27)\n * //_result:\n *\n * Signature.getChainIdV(5, 28)\n * //_result:\n *\n */\n static getChainIdV(chainId, v) {\n return (getBigInt(chainId) * BN_2) + BigInt(35 + v - 27);\n }\n /**\n * Compute the normalized legacy transaction ``v`` from a ``yParirty``,\n * a legacy transaction ``v`` or a legacy [[link-eip-155]] transaction.\n *\n * @example:\n * // The values 0 and 1 imply v is actually yParity\n * Signature.getNormalizedV(0)\n * //_result:\n *\n * // Legacy non-EIP-1559 transaction (i.e. 27 or 28)\n * Signature.getNormalizedV(27)\n * //_result:\n *\n * // Legacy EIP-155 transaction (i.e. >= 35)\n * Signature.getNormalizedV(46)\n * //_result:\n *\n * // Invalid values throw\n * Signature.getNormalizedV(5)\n * //_error:\n */\n static getNormalizedV(v) {\n const bv = getBigInt(v);\n if (bv === BN_0 || bv === BN_27) {\n return 27;\n }\n if (bv === BN_1 || bv === BN_28) {\n return 28;\n }\n assertArgument(bv >= BN_35, \"invalid v\", \"v\", v);\n // Otherwise, EIP-155 v means odd is 27 and even is 28\n return (bv & BN_1) ? 27 : 28;\n }\n /**\n * Creates a new [[Signature]].\n *\n * If no %%sig%% is provided, a new [[Signature]] is created\n * with default values.\n *\n * If %%sig%% is a string, it is parsed.\n */\n static from(sig) {\n function assertError(check, message) {\n assertArgument(check, message, \"signature\", sig);\n }\n ;\n if (sig == null) {\n return new Signature(_guard, ZeroHash, ZeroHash, 27);\n }\n if (typeof (sig) === \"string\") {\n const bytes = getBytes(sig, \"signature\");\n if (bytes.length === 64) {\n const r = hexlify(bytes.slice(0, 32));\n const s = bytes.slice(32, 64);\n const v = (s[0] & 0x80) ? 28 : 27;\n s[0] &= 0x7f;\n return new Signature(_guard, r, hexlify(s), v);\n }\n if (bytes.length === 65) {\n const r = hexlify(bytes.slice(0, 32));\n const s = bytes.slice(32, 64);\n assertError((s[0] & 0x80) === 0, \"non-canonical s\");\n const v = Signature.getNormalizedV(bytes[64]);\n return new Signature(_guard, r, hexlify(s), v);\n }\n assertError(false, \"invalid raw signature length\");\n }\n if (sig instanceof Signature) {\n return sig.clone();\n }\n // Get r\n const _r = sig.r;\n assertError(_r != null, \"missing r\");\n const r = toUint256(_r);\n // Get s; by any means necessary (we check consistency below)\n const s = (function (s, yParityAndS) {\n if (s != null) {\n return toUint256(s);\n }\n if (yParityAndS != null) {\n assertError(isHexString(yParityAndS, 32), \"invalid yParityAndS\");\n const bytes = getBytes(yParityAndS);\n bytes[0] &= 0x7f;\n return hexlify(bytes);\n }\n assertError(false, \"missing s\");\n })(sig.s, sig.yParityAndS);\n assertError((getBytes(s)[0] & 0x80) == 0, \"non-canonical s\");\n // Get v; by any means necessary (we check consistency below)\n const { networkV, v } = (function (_v, yParityAndS, yParity) {\n if (_v != null) {\n const v = getBigInt(_v);\n return {\n networkV: ((v >= BN_35) ? v : undefined),\n v: Signature.getNormalizedV(v)\n };\n }\n if (yParityAndS != null) {\n assertError(isHexString(yParityAndS, 32), \"invalid yParityAndS\");\n return { v: ((getBytes(yParityAndS)[0] & 0x80) ? 28 : 27) };\n }\n if (yParity != null) {\n switch (getNumber(yParity, \"sig.yParity\")) {\n case 0: return { v: 27 };\n case 1: return { v: 28 };\n }\n assertError(false, \"invalid yParity\");\n }\n assertError(false, \"missing v\");\n })(sig.v, sig.yParityAndS, sig.yParity);\n const result = new Signature(_guard, r, s, v);\n if (networkV) {\n result.#networkV = networkV;\n }\n // If multiple of v, yParity, yParityAndS we given, check they match\n assertError(sig.yParity == null || getNumber(sig.yParity, \"sig.yParity\") === result.yParity, \"yParity mismatch\");\n assertError(sig.yParityAndS == null || sig.yParityAndS === result.yParityAndS, \"yParityAndS mismatch\");\n return result;\n }\n}\n//# sourceMappingURL=signature.js.map","/**\n * Add details about signing here.\n *\n * @_subsection: api/crypto:Signing [about-signing]\n */\nimport { secp256k1 } from \"@noble/curves/secp256k1\";\nimport { concat, dataLength, getBytes, getBytesCopy, hexlify, toBeHex, assertArgument } from \"../utils/index.js\";\nimport { Signature } from \"./signature.js\";\n/**\n * A **SigningKey** provides high-level access to the elliptic curve\n * cryptography (ECC) operations and key management.\n */\nexport class SigningKey {\n #privateKey;\n /**\n * Creates a new **SigningKey** for %%privateKey%%.\n */\n constructor(privateKey) {\n assertArgument(dataLength(privateKey) === 32, \"invalid private key\", \"privateKey\", \"[REDACTED]\");\n this.#privateKey = hexlify(privateKey);\n }\n /**\n * The private key.\n */\n get privateKey() { return this.#privateKey; }\n /**\n * The uncompressed public key.\n *\n * This will always begin with the prefix ``0x04`` and be 132\n * characters long (the ``0x`` prefix and 130 hexadecimal nibbles).\n */\n get publicKey() { return SigningKey.computePublicKey(this.#privateKey); }\n /**\n * The compressed public key.\n *\n * This will always begin with either the prefix ``0x02`` or ``0x03``\n * and be 68 characters long (the ``0x`` prefix and 33 hexadecimal\n * nibbles)\n */\n get compressedPublicKey() { return SigningKey.computePublicKey(this.#privateKey, true); }\n /**\n * Return the signature of the signed %%digest%%.\n */\n sign(digest) {\n assertArgument(dataLength(digest) === 32, \"invalid digest length\", \"digest\", digest);\n const sig = secp256k1.sign(getBytesCopy(digest), getBytesCopy(this.#privateKey), {\n lowS: true\n });\n return Signature.from({\n r: toBeHex(sig.r, 32),\n s: toBeHex(sig.s, 32),\n v: (sig.recovery ? 0x1c : 0x1b)\n });\n }\n /**\n * Returns the [[link-wiki-ecdh]] shared secret between this\n * private key and the %%other%% key.\n *\n * The %%other%% key may be any type of key, a raw public key,\n * a compressed/uncompressed pubic key or aprivate key.\n *\n * Best practice is usually to use a cryptographic hash on the\n * returned value before using it as a symetric secret.\n *\n * @example:\n * sign1 = new SigningKey(id(\"some-secret-1\"))\n * sign2 = new SigningKey(id(\"some-secret-2\"))\n *\n * // Notice that privA.computeSharedSecret(pubB)...\n * sign1.computeSharedSecret(sign2.publicKey)\n * //_result:\n *\n * // ...is equal to privB.computeSharedSecret(pubA).\n * sign2.computeSharedSecret(sign1.publicKey)\n * //_result:\n */\n computeSharedSecret(other) {\n const pubKey = SigningKey.computePublicKey(other);\n return hexlify(secp256k1.getSharedSecret(getBytesCopy(this.#privateKey), getBytes(pubKey), false));\n }\n /**\n * Compute the public key for %%key%%, optionally %%compressed%%.\n *\n * The %%key%% may be any type of key, a raw public key, a\n * compressed/uncompressed public key or private key.\n *\n * @example:\n * sign = new SigningKey(id(\"some-secret\"));\n *\n * // Compute the uncompressed public key for a private key\n * SigningKey.computePublicKey(sign.privateKey)\n * //_result:\n *\n * // Compute the compressed public key for a private key\n * SigningKey.computePublicKey(sign.privateKey, true)\n * //_result:\n *\n * // Compute the uncompressed public key\n * SigningKey.computePublicKey(sign.publicKey, false);\n * //_result:\n *\n * // Compute the Compressed a public key\n * SigningKey.computePublicKey(sign.publicKey, true);\n * //_result:\n */\n static computePublicKey(key, compressed) {\n let bytes = getBytes(key, \"key\");\n // private key\n if (bytes.length === 32) {\n const pubKey = secp256k1.getPublicKey(bytes, !!compressed);\n return hexlify(pubKey);\n }\n // raw public key; use uncompressed key with 0x04 prefix\n if (bytes.length === 64) {\n const pub = new Uint8Array(65);\n pub[0] = 0x04;\n pub.set(bytes, 1);\n bytes = pub;\n }\n const point = secp256k1.ProjectivePoint.fromHex(bytes);\n return hexlify(point.toRawBytes(compressed));\n }\n /**\n * Returns the public key for the private key which produced the\n * %%signature%% for the given %%digest%%.\n *\n * @example:\n * key = new SigningKey(id(\"some-secret\"))\n * digest = id(\"hello world\")\n * sig = key.sign(digest)\n *\n * // Notice the signer public key...\n * key.publicKey\n * //_result:\n *\n * // ...is equal to the recovered public key\n * SigningKey.recoverPublicKey(digest, sig)\n * //_result:\n *\n */\n static recoverPublicKey(digest, signature) {\n assertArgument(dataLength(digest) === 32, \"invalid digest length\", \"digest\", digest);\n const sig = Signature.from(signature);\n let secpSig = secp256k1.Signature.fromCompact(getBytesCopy(concat([sig.r, sig.s])));\n secpSig = secpSig.addRecoveryBit(sig.yParity);\n const pubKey = secpSig.recoverPublicKey(getBytesCopy(digest));\n assertArgument(pubKey != null, \"invalid signautre for digest\", \"signature\", signature);\n return \"0x\" + pubKey.toHex(false);\n }\n /**\n * Returns the point resulting from adding the ellipic curve points\n * %%p0%% and %%p1%%.\n *\n * This is not a common function most developers should require, but\n * can be useful for certain privacy-specific techniques.\n *\n * For example, it is used by [[HDNodeWallet]] to compute child\n * addresses from parent public keys and chain codes.\n */\n static addPoints(p0, p1, compressed) {\n const pub0 = secp256k1.ProjectivePoint.fromHex(SigningKey.computePublicKey(p0).substring(2));\n const pub1 = secp256k1.ProjectivePoint.fromHex(SigningKey.computePublicKey(p1).substring(2));\n return \"0x\" + pub0.add(pub1).toHex(!!compressed);\n }\n}\n//# sourceMappingURL=signing-key.js.map","import { keccak256 } from \"../crypto/index.js\";\nimport { getBytes, assertArgument } from \"../utils/index.js\";\nconst BN_0 = BigInt(0);\nconst BN_36 = BigInt(36);\nfunction getChecksumAddress(address) {\n // if (!isHexString(address, 20)) {\n // logger.throwArgumentError(\"invalid address\", \"address\", address);\n // }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = getBytes(keccak256(expanded));\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n return \"0x\" + chars.join(\"\");\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\n// i.e. Math.floor(Math.log10(Number.MAX_SAFE_INTEGER));\nconst safeDigits = 15;\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits) {\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nconst Base36 = (function () {\n ;\n const result = {};\n for (let i = 0; i < 36; i++) {\n const key = \"0123456789abcdefghijklmnopqrstuvwxyz\"[i];\n result[key] = BigInt(i);\n }\n return result;\n})();\nfunction fromBase36(value) {\n value = value.toLowerCase();\n let result = BN_0;\n for (let i = 0; i < value.length; i++) {\n result = result * BN_36 + Base36[value[i]];\n }\n return result;\n}\n/**\n * Returns a normalized and checksumed address for %%address%%.\n * This accepts non-checksum addresses, checksum addresses and\n * [[getIcapAddress]] formats.\n *\n * The checksum in Ethereum uses the capitalization (upper-case\n * vs lower-case) of the characters within an address to encode\n * its checksum, which offers, on average, a checksum of 15-bits.\n *\n * If %%address%% contains both upper-case and lower-case, it is\n * assumed to already be a checksum address and its checksum is\n * validated, and if the address fails its expected checksum an\n * error is thrown.\n *\n * If you wish the checksum of %%address%% to be ignore, it should\n * be converted to lower-case (i.e. ``.toLowercase()``) before\n * being passed in. This should be a very rare situation though,\n * that you wish to bypass the safegaurds in place to protect\n * against an address that has been incorrectly copied from another\n * source.\n *\n * @example:\n * // Adds the checksum (via upper-casing specific letters)\n * getAddress(\"0x8ba1f109551bd432803012645ac136ddd64dba72\")\n * //_result:\n *\n * // Converts ICAP address and adds checksum\n * getAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36\");\n * //_result:\n *\n * // Throws an error if an address contains mixed case,\n * // but the checksum fails\n * getAddress(\"0x8Ba1f109551bD432803012645Ac136ddd64DBA72\")\n * //_error:\n */\nexport function getAddress(address) {\n assertArgument(typeof (address) === \"string\", \"invalid address\", \"address\", address);\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (!address.startsWith(\"0x\")) {\n address = \"0x\" + address;\n }\n const result = getChecksumAddress(address);\n // It is a checksummed address with a bad checksum\n assertArgument(!address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) || result === address, \"bad address checksum\", \"address\", address);\n return result;\n }\n // Maybe ICAP? (we only support direct mode)\n if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n // It is an ICAP address with a bad checksum\n assertArgument(address.substring(2, 4) === ibanChecksum(address), \"bad icap checksum\", \"address\", address);\n let result = fromBase36(address.substring(4)).toString(16);\n while (result.length < 40) {\n result = \"0\" + result;\n }\n return getChecksumAddress(\"0x\" + result);\n }\n assertArgument(false, \"invalid address\", \"address\", address);\n}\n/**\n * The [ICAP Address format](link-icap) format is an early checksum\n * format which attempts to be compatible with the banking\n * industry [IBAN format](link-wiki-iban) for bank accounts.\n *\n * It is no longer common or a recommended format.\n *\n * @example:\n * getIcapAddress(\"0x8ba1f109551bd432803012645ac136ddd64dba72\");\n * //_result:\n *\n * getIcapAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36\");\n * //_result:\n *\n * // Throws an error if the ICAP checksum is wrong\n * getIcapAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK37\");\n * //_error:\n */\nexport function getIcapAddress(address) {\n //let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n let base36 = BigInt(getAddress(address)).toString(36).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n//# sourceMappingURL=address.js.map","import { keccak256 } from \"../crypto/index.js\";\nimport { toUtf8Bytes } from \"../utils/index.js\";\n/**\n * A simple hashing function which operates on UTF-8 strings to\n * compute an 32-byte identifier.\n *\n * This simply computes the [UTF-8 bytes](toUtf8Bytes) and computes\n * the [[keccak256]].\n *\n * @example:\n * id(\"hello world\")\n * //_result:\n */\nexport function id(value) {\n return keccak256(toUtf8Bytes(value));\n}\n//# sourceMappingURL=id.js.map","import { getAddress } from \"../address/index.js\";\nimport { keccak256, SigningKey } from \"../crypto/index.js\";\n/**\n * Returns the address for the %%key%%.\n *\n * The key may be any standard form of public key or a private key.\n */\nexport function computeAddress(key) {\n let pubkey;\n if (typeof (key) === \"string\") {\n pubkey = SigningKey.computePublicKey(key, false);\n }\n else {\n pubkey = key.publicKey;\n }\n return getAddress(keccak256(\"0x\" + pubkey.substring(4)).substring(26));\n}\n/**\n * Returns the recovered address for the private key that was\n * used to sign %%digest%% that resulted in %%signature%%.\n */\nexport function recoverAddress(digest, signature) {\n return computeAddress(SigningKey.recoverPublicKey(digest, signature));\n}\n//# sourceMappingURL=address.js.map","import { keccak256 } from \"../crypto/index.js\";\nimport { MessagePrefix } from \"../constants/index.js\";\nimport { recoverAddress } from \"../transaction/index.js\";\nimport { concat, toUtf8Bytes } from \"../utils/index.js\";\n/**\n * Computes the [[link-eip-191]] personal-sign message digest to sign.\n *\n * This prefixes the message with [[MessagePrefix]] and the decimal length\n * of %%message%% and computes the [[keccak256]] digest.\n *\n * If %%message%% is a string, it is converted to its UTF-8 bytes\n * first. To compute the digest of a [[DataHexString]], it must be converted\n * to [bytes](getBytes).\n *\n * @example:\n * hashMessage(\"Hello World\")\n * //_result:\n *\n * // Hashes the SIX (6) string characters, i.e.\n * // [ \"0\", \"x\", \"4\", \"2\", \"4\", \"3\" ]\n * hashMessage(\"0x4243\")\n * //_result:\n *\n * // Hashes the TWO (2) bytes [ 0x42, 0x43 ]...\n * hashMessage(getBytes(\"0x4243\"))\n * //_result:\n *\n * // ...which is equal to using data\n * hashMessage(new Uint8Array([ 0x42, 0x43 ]))\n * //_result:\n *\n */\nexport function hashMessage(message) {\n if (typeof (message) === \"string\") {\n message = toUtf8Bytes(message);\n }\n return keccak256(concat([\n toUtf8Bytes(MessagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n/**\n * Return the address of the private key that produced\n * the signature %%sig%% during signing for %%message%%.\n */\nexport function verifyMessage(message, sig) {\n const digest = hashMessage(message);\n return recoverAddress(digest, sig);\n}\n//# sourceMappingURL=message.js.map","//import { TypedDataDomain, TypedDataField } from \"@ethersproject/providerabstract-signer\";\nimport { getAddress } from \"../address/index.js\";\nimport { keccak256 } from \"../crypto/index.js\";\nimport { recoverAddress } from \"../transaction/index.js\";\nimport { concat, defineProperties, getBigInt, getBytes, hexlify, isHexString, mask, toBeHex, toQuantity, toTwos, zeroPadValue, assertArgument } from \"../utils/index.js\";\nimport { id } from \"./id.js\";\nconst padding = new Uint8Array(32);\npadding.fill(0);\nconst BN__1 = BigInt(-1);\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\nconst BN_MAX_UINT256 = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n;\n;\nfunction hexPadRight(value) {\n const bytes = getBytes(value);\n const padOffset = bytes.length % 32;\n if (padOffset) {\n return concat([bytes, padding.slice(padOffset)]);\n }\n return hexlify(bytes);\n}\nconst hexTrue = toBeHex(BN_1, 32);\nconst hexFalse = toBeHex(BN_0, 32);\nconst domainFieldTypes = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\nconst domainFieldNames = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\nfunction checkString(key) {\n return function (value) {\n assertArgument(typeof (value) === \"string\", `invalid domain value for ${JSON.stringify(key)}`, `domain.${key}`, value);\n return value;\n };\n}\nconst domainChecks = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function (_value) {\n const value = getBigInt(_value, \"domain.chainId\");\n assertArgument(value >= 0, \"invalid chain ID\", \"domain.chainId\", _value);\n if (Number.isSafeInteger(value)) {\n return Number(value);\n }\n return toQuantity(value);\n },\n verifyingContract: function (value) {\n try {\n return getAddress(value).toLowerCase();\n }\n catch (error) { }\n assertArgument(false, `invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function (value) {\n const bytes = getBytes(value, \"domain.salt\");\n assertArgument(bytes.length === 32, `invalid domain value \"salt\"`, \"domain.salt\", value);\n return hexlify(bytes);\n }\n};\nfunction getBaseEncoder(type) {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d+)$/);\n if (match) {\n const signed = (match[1] === \"\");\n const width = parseInt(match[2]);\n assertArgument(width % 8 === 0 && width !== 0 && width <= 256 && match[2] === String(width), \"invalid numeric width\", \"type\", type);\n const boundsUpper = mask(BN_MAX_UINT256, signed ? (width - 1) : width);\n const boundsLower = signed ? ((boundsUpper + BN_1) * BN__1) : BN_0;\n return function (_value) {\n const value = getBigInt(_value, \"value\");\n assertArgument(value >= boundsLower && value <= boundsUpper, `value out-of-bounds for ${type}`, \"value\", value);\n return toBeHex(signed ? toTwos(value, 256) : value, 32);\n };\n }\n }\n // bytesXX\n {\n const match = type.match(/^bytes(\\d+)$/);\n if (match) {\n const width = parseInt(match[1]);\n assertArgument(width !== 0 && width <= 32 && match[1] === String(width), \"invalid bytes width\", \"type\", type);\n return function (value) {\n const bytes = getBytes(value);\n assertArgument(bytes.length === width, `invalid length for ${type}`, \"value\", value);\n return hexPadRight(value);\n };\n }\n }\n switch (type) {\n case \"address\": return function (value) {\n return zeroPadValue(getAddress(value), 32);\n };\n case \"bool\": return function (value) {\n return ((!value) ? hexFalse : hexTrue);\n };\n case \"bytes\": return function (value) {\n return keccak256(value);\n };\n case \"string\": return function (value) {\n return id(value);\n };\n }\n return null;\n}\nfunction encodeType(name, fields) {\n return `${name}(${fields.map(({ name, type }) => (type + \" \" + name)).join(\",\")})`;\n}\n// foo[][3] => { base: \"foo\", index: \"[][3]\", array: {\n// base: \"foo\", prefix: \"foo[]\", count: 3 } }\nfunction splitArray(type) {\n const match = type.match(/^([^\\x5b]*)((\\x5b\\d*\\x5d)*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n return {\n base: match[1],\n index: (match[2] + match[4]),\n array: {\n base: match[1],\n prefix: (match[1] + match[2]),\n count: (match[5] ? parseInt(match[5]) : -1),\n }\n };\n }\n return { base: type };\n}\n/**\n * A **TypedDataEncode** prepares and encodes [[link-eip-712]] payloads\n * for signed typed data.\n *\n * This is useful for those that wish to compute various components of a\n * typed data hash, primary types, or sub-components, but generally the\n * higher level [[Signer-signTypedData]] is more useful.\n */\nexport class TypedDataEncoder {\n /**\n * The primary type for the structured [[types]].\n *\n * This is derived automatically from the [[types]], since no\n * recursion is possible, once the DAG for the types is consturcted\n * internally, the primary type must be the only remaining type with\n * no parent nodes.\n */\n primaryType;\n #types;\n /**\n * The types.\n */\n get types() {\n return JSON.parse(this.#types);\n }\n #fullTypes;\n #encoderCache;\n /**\n * Create a new **TypedDataEncoder** for %%types%%.\n *\n * This performs all necessary checking that types are valid and\n * do not violate the [[link-eip-712]] structural constraints as\n * well as computes the [[primaryType]].\n */\n constructor(_types) {\n this.#fullTypes = new Map();\n this.#encoderCache = new Map();\n // Link struct types to their direct child structs\n const links = new Map();\n // Link structs to structs which contain them as a child\n const parents = new Map();\n // Link all subtypes within a given struct\n const subtypes = new Map();\n const types = {};\n Object.keys(_types).forEach((type) => {\n types[type] = _types[type].map(({ name, type }) => {\n // Normalize the base type (unless name conflict)\n let { base, index } = splitArray(type);\n if (base === \"int\" && !_types[\"int\"]) {\n base = \"int256\";\n }\n if (base === \"uint\" && !_types[\"uint\"]) {\n base = \"uint256\";\n }\n return { name, type: (base + (index || \"\")) };\n });\n links.set(type, new Set());\n parents.set(type, []);\n subtypes.set(type, new Set());\n });\n this.#types = JSON.stringify(types);\n for (const name in types) {\n const uniqueNames = new Set();\n for (const field of types[name]) {\n // Check each field has a unique name\n assertArgument(!uniqueNames.has(field.name), `duplicate variable name ${JSON.stringify(field.name)} in ${JSON.stringify(name)}`, \"types\", _types);\n uniqueNames.add(field.name);\n // Get the base type (drop any array specifiers)\n const baseType = splitArray(field.type).base;\n assertArgument(baseType !== name, `circular type reference to ${JSON.stringify(baseType)}`, \"types\", _types);\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) {\n continue;\n }\n assertArgument(parents.has(baseType), `unknown type ${JSON.stringify(baseType)}`, \"types\", _types);\n // Add linkage\n parents.get(baseType).push(name);\n links.get(name).add(baseType);\n }\n }\n // Deduce the primary type\n const primaryTypes = Array.from(parents.keys()).filter((n) => (parents.get(n).length === 0));\n assertArgument(primaryTypes.length !== 0, \"missing primary type\", \"types\", _types);\n assertArgument(primaryTypes.length === 1, `ambiguous primary types or unused types: ${primaryTypes.map((t) => (JSON.stringify(t))).join(\", \")}`, \"types\", _types);\n defineProperties(this, { primaryType: primaryTypes[0] });\n // Check for circular type references\n function checkCircular(type, found) {\n assertArgument(!found.has(type), `circular type reference to ${JSON.stringify(type)}`, \"types\", _types);\n found.add(type);\n for (const child of links.get(type)) {\n if (!parents.has(child)) {\n continue;\n }\n // Recursively check children\n checkCircular(child, found);\n // Mark all ancestors as having this decendant\n for (const subtype of found) {\n subtypes.get(subtype).add(child);\n }\n }\n found.delete(type);\n }\n checkCircular(this.primaryType, new Set());\n // Compute each fully describe type\n for (const [name, set] of subtypes) {\n const st = Array.from(set);\n st.sort();\n this.#fullTypes.set(name, encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\"));\n }\n }\n /**\n * Returnthe encoder for the specific %%type%%.\n */\n getEncoder(type) {\n let encoder = this.#encoderCache.get(type);\n if (!encoder) {\n encoder = this.#getEncoder(type);\n this.#encoderCache.set(type, encoder);\n }\n return encoder;\n }\n #getEncoder(type) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return encoder;\n }\n }\n // Array\n const array = splitArray(type).array;\n if (array) {\n const subtype = array.prefix;\n const subEncoder = this.getEncoder(subtype);\n return (value) => {\n assertArgument(array.count === -1 || array.count === value.length, `array length mismatch; expected length ${array.count}`, \"value\", value);\n let result = value.map(subEncoder);\n if (this.#fullTypes.has(subtype)) {\n result = result.map(keccak256);\n }\n return keccak256(concat(result));\n };\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(this.#fullTypes.get(type));\n return (value) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (this.#fullTypes.has(type)) {\n return keccak256(result);\n }\n return result;\n });\n values.unshift(encodedType);\n return concat(values);\n };\n }\n assertArgument(false, `unknown type: ${type}`, \"type\", type);\n }\n /**\n * Return the full type for %%name%%.\n */\n encodeType(name) {\n const result = this.#fullTypes.get(name);\n assertArgument(result, `unknown type: ${JSON.stringify(name)}`, \"name\", name);\n return result;\n }\n /**\n * Return the encoded %%value%% for the %%type%%.\n */\n encodeData(type, value) {\n return this.getEncoder(type)(value);\n }\n /**\n * Returns the hash of %%value%% for the type of %%name%%.\n */\n hashStruct(name, value) {\n return keccak256(this.encodeData(name, value));\n }\n /**\n * Return the fulled encoded %%value%% for the [[types]].\n */\n encode(value) {\n return this.encodeData(this.primaryType, value);\n }\n /**\n * Return the hash of the fully encoded %%value%% for the [[types]].\n */\n hash(value) {\n return this.hashStruct(this.primaryType, value);\n }\n /**\n * @_ignore:\n */\n _visit(type, value, callback) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return callback(type, value);\n }\n }\n // Array\n const array = splitArray(type).array;\n if (array) {\n assertArgument(array.count === -1 || array.count === value.length, `array length mismatch; expected length ${array.count}`, \"value\", value);\n return value.map((v) => this._visit(array.prefix, v, callback));\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n return fields.reduce((accum, { name, type }) => {\n accum[name] = this._visit(type, value[name], callback);\n return accum;\n }, {});\n }\n assertArgument(false, `unknown type: ${type}`, \"type\", type);\n }\n /**\n * Call %%calback%% for each value in %%value%%, passing the type and\n * component within %%value%%.\n *\n * This is useful for replacing addresses or other transformation that\n * may be desired on each component, based on its type.\n */\n visit(value, callback) {\n return this._visit(this.primaryType, value, callback);\n }\n /**\n * Create a new **TypedDataEncoder** for %%types%%.\n */\n static from(types) {\n return new TypedDataEncoder(types);\n }\n /**\n * Return the primary type for %%types%%.\n */\n static getPrimaryType(types) {\n return TypedDataEncoder.from(types).primaryType;\n }\n /**\n * Return the hashed struct for %%value%% using %%types%% and %%name%%.\n */\n static hashStruct(name, types, value) {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n /**\n * Return the domain hash for %%domain%%.\n */\n static hashDomain(domain) {\n const domainFields = [];\n for (const name in domain) {\n if (domain[name] == null) {\n continue;\n }\n const type = domainFieldTypes[name];\n assertArgument(type, `invalid typed-data domain key: ${JSON.stringify(name)}`, \"domain\", domain);\n domainFields.push({ name, type });\n }\n domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n /**\n * Return the fully encoded [[link-eip-712]] %%value%% for %%types%% with %%domain%%.\n */\n static encode(domain, types, value) {\n return concat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n /**\n * Return the hash of the fully encoded [[link-eip-712]] %%value%% for %%types%% with %%domain%%.\n */\n static hash(domain, types, value) {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n // Replaces all address types with ENS names with their looked up address\n /**\n * Resolves to the value from resolving all addresses in %%value%% for\n * %%types%% and the %%domain%%.\n */\n static async resolveNames(domain, types, value, resolveName) {\n // Make a copy to isolate it from the object passed in\n domain = Object.assign({}, domain);\n // Allow passing null to ignore value\n for (const key in domain) {\n if (domain[key] == null) {\n delete domain[key];\n }\n }\n // Look up all ENS names\n const ensCache = {};\n // Do we need to look up the domain's verifyingContract?\n if (domain.verifyingContract && !isHexString(domain.verifyingContract, 20)) {\n ensCache[domain.verifyingContract] = \"0x\";\n }\n // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n // Get a list of all the addresses\n encoder.visit(value, (type, value) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = await resolveName(name);\n }\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n // Replace all ENS names with their address\n value = encoder.visit(value, (type, value) => {\n if (type === \"address\" && ensCache[value]) {\n return ensCache[value];\n }\n return value;\n });\n return { domain, value };\n }\n /**\n * Returns the JSON-encoded payload expected by nodes which implement\n * the JSON-RPC [[link-eip-712]] method.\n */\n static getPayload(domain, types, value) {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n // Derive the EIP712Domain Struct reference type\n const domainValues = {};\n const domainTypes = [];\n domainFieldNames.forEach((name) => {\n const value = domain[name];\n if (value == null) {\n return;\n }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n const encoder = TypedDataEncoder.from(types);\n // Get the normalized types\n types = encoder.types;\n const typesWithDomain = Object.assign({}, types);\n assertArgument(typesWithDomain.EIP712Domain == null, \"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n typesWithDomain.EIP712Domain = domainTypes;\n // Validate the data structures and types\n encoder.encode(value);\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type, value) => {\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(getBytes(value));\n }\n // uint or int\n if (type.match(/^u?int/)) {\n return getBigInt(value).toString();\n }\n switch (type) {\n case \"address\":\n return value.toLowerCase();\n case \"bool\":\n return !!value;\n case \"string\":\n assertArgument(typeof (value) === \"string\", \"invalid string\", \"value\", value);\n return value;\n }\n assertArgument(false, \"unsupported type\", \"type\", type);\n })\n };\n }\n}\n/**\n * Compute the address used to sign the typed data for the %%signature%%.\n */\nexport function verifyTypedData(domain, types, value, signature) {\n return recoverAddress(TypedDataEncoder.hash(domain, types, value), signature);\n}\n//# sourceMappingURL=typed-data.js.map","import { stripHexPrefix } from '@ethereumjs/util';\nimport { BigNumber } from 'bignumber.js';\n\n// Big Number Constants\nconst BIG_NUMBER_WEI_MULTIPLIER = new BigNumber(\"1e18\");\nconst BIG_NUMBER_GWEI_MULTIPLIER = new BigNumber(\"1e9\");\nconst BIG_NUMBER_ETH_MULTIPLIER = new BigNumber(\"1\");\n\n// Setter Maps\nconst toBigNumber = {\n hex: n => typeof n === \"string\" ? new BigNumber(stripHexPrefix(n), 16) : new BigNumber(n, 16),\n dec: n => new BigNumber(n, 10)\n};\nconst toNormalizedDenomination = {\n WEI: bigNumber => bigNumber.div(BIG_NUMBER_WEI_MULTIPLIER),\n GWEI: bigNumber => bigNumber.div(BIG_NUMBER_GWEI_MULTIPLIER),\n ETH: bigNumber => bigNumber.div(BIG_NUMBER_ETH_MULTIPLIER)\n};\nconst toSpecifiedDenomination = {\n WEI: bigNumber => bigNumber.times(BIG_NUMBER_WEI_MULTIPLIER).dp(0, BigNumber.ROUND_HALF_UP),\n GWEI: bigNumber => bigNumber.times(BIG_NUMBER_GWEI_MULTIPLIER).dp(9, BigNumber.ROUND_HALF_UP),\n ETH: bigNumber => bigNumber.times(BIG_NUMBER_ETH_MULTIPLIER).dp(9, BigNumber.ROUND_HALF_UP)\n};\nconst baseChange = {\n hex: n => n.toString(16),\n dec: n => new BigNumber(n).toString(10)\n};\nconst converter = params => {\n const {\n value,\n fromNumericBase,\n fromDenomination,\n toNumericBase,\n toDenomination,\n numberOfDecimals\n } = params;\n let convertedValue = toBigNumber[fromNumericBase](value);\n if (fromDenomination) {\n convertedValue = toNormalizedDenomination[fromDenomination](convertedValue);\n }\n if (toDenomination) {\n convertedValue = toSpecifiedDenomination[toDenomination](convertedValue);\n }\n if (numberOfDecimals) {\n convertedValue = convertedValue.dp(numberOfDecimals, BigNumber.ROUND_HALF_DOWN);\n }\n if (toNumericBase) {\n convertedValue = baseChange[toNumericBase](convertedValue);\n }\n return convertedValue;\n};\nconst conversionUtil = (value, {\n fromNumericBase = \"hex\",\n toNumericBase,\n fromDenomination,\n toDenomination,\n numberOfDecimals\n}) => {\n return converter({\n fromNumericBase,\n toNumericBase,\n fromDenomination,\n toDenomination,\n numberOfDecimals,\n value: value || \"0\"\n });\n};\nfunction decGWEIToHexWEI(decGWEI) {\n return conversionUtil(decGWEI, {\n fromNumericBase: \"dec\",\n toNumericBase: \"hex\",\n fromDenomination: \"GWEI\",\n toDenomination: \"WEI\"\n });\n}\nfunction hexWEIToDecGWEI(decGWEI) {\n return conversionUtil(decGWEI, {\n fromNumericBase: \"hex\",\n toNumericBase: \"dec\",\n fromDenomination: \"WEI\",\n toDenomination: \"GWEI\"\n });\n}\n\nexport { conversionUtil, decGWEIToHexWEI, hexWEIToDecGWEI };\n","import _objectSpread from '@babel/runtime/helpers/objectSpread2';\nimport { isValidAddress } from '@ethereumjs/util';\nimport { get } from '@toruslabs/http-helpers';\nimport { decGWEIToHexWEI, hexWEIToDecGWEI } from '../../converter.js';\n\nfunction normalizeGWEIDecimalNumbers(n) {\n const numberAsWEIHex = decGWEIToHexWEI(n);\n const numberAsGWEI = hexWEIToDecGWEI(numberAsWEIHex).toString();\n return numberAsGWEI;\n}\nasync function fetchEip1159GasEstimates(url) {\n const estimates = await get(url);\n const normalizedEstimates = _objectSpread(_objectSpread({}, estimates), {}, {\n estimatedBaseFee: normalizeGWEIDecimalNumbers(estimates.estimatedBaseFee),\n low: _objectSpread(_objectSpread({}, estimates.low), {}, {\n suggestedMaxPriorityFeePerGas: normalizeGWEIDecimalNumbers(estimates.low.suggestedMaxPriorityFeePerGas),\n suggestedMaxFeePerGas: normalizeGWEIDecimalNumbers(estimates.low.suggestedMaxFeePerGas)\n }),\n medium: _objectSpread(_objectSpread({}, estimates.medium), {}, {\n suggestedMaxPriorityFeePerGas: normalizeGWEIDecimalNumbers(estimates.medium.suggestedMaxPriorityFeePerGas),\n suggestedMaxFeePerGas: normalizeGWEIDecimalNumbers(estimates.medium.suggestedMaxFeePerGas)\n }),\n high: _objectSpread(_objectSpread({}, estimates.high), {}, {\n suggestedMaxPriorityFeePerGas: normalizeGWEIDecimalNumbers(estimates.high.suggestedMaxPriorityFeePerGas),\n suggestedMaxFeePerGas: normalizeGWEIDecimalNumbers(estimates.high.suggestedMaxFeePerGas)\n })\n });\n return normalizedEstimates;\n}\n\n/**\n * Hit the legacy MetaSwaps gasPrices estimate api and return the low, medium\n * high values from that API.\n */\nasync function fetchLegacyGasPriceEstimates(url) {\n const result = await get(url, {\n referrer: url,\n referrerPolicy: \"no-referrer-when-downgrade\",\n method: \"GET\",\n mode: \"cors\"\n });\n return {\n low: result.SafeGasPrice,\n medium: result.ProposeGasPrice,\n high: result.FastGasPrice\n };\n}\nfunction validateAddress(address, propertyName) {\n if (!address || typeof address !== \"string\" || !isValidAddress(address)) {\n throw new Error(`Invalid \"${propertyName}\" address: ${address} must be a valid string.`);\n }\n}\nasync function validateTypedSignMessageDataV4(messageData, currentChainId) {\n validateAddress(messageData.from, \"from\");\n if (!messageData.data || Array.isArray(messageData.data) || typeof messageData.data !== \"object\" && typeof messageData.data !== \"string\") {\n throw new Error(`Invalid message \"data\": Must be a valid string or object.`);\n }\n let data;\n if (typeof messageData.data === \"object\") {\n data = messageData.data;\n } else {\n try {\n data = JSON.parse(messageData.data);\n } catch (e) {\n throw new Error(\"Data must be passed as a valid JSON string.\");\n }\n }\n if (!currentChainId) {\n throw new Error(\"Current chainId cannot be null or undefined.\");\n }\n let {\n chainId\n } = data.domain;\n if (chainId) {\n if (typeof chainId === \"string\") {\n chainId = parseInt(chainId, chainId.startsWith(\"0x\") ? 16 : 10);\n }\n const activeChainId = parseInt(currentChainId, 16);\n if (Number.isNaN(activeChainId)) {\n throw new Error(`Cannot sign messages for chainId \"${chainId}\", because Web3Auth is switching networks.`);\n }\n if (chainId !== activeChainId) {\n throw new Error(`Provided chainId \"${chainId}\" must match the active chainId \"${activeChainId}\"`);\n }\n }\n}\n\nexport { fetchEip1159GasEstimates, fetchLegacyGasPriceEstimates, normalizeGWEIDecimalNumbers, validateAddress, validateTypedSignMessageDataV4 };\n","import _objectSpread from '@babel/runtime/helpers/objectSpread2';\nimport { privateToAddress, stripHexPrefix, addHexPrefix, isHexString } from '@ethereumjs/util';\nimport { signMessage } from '@toruslabs/base-controllers';\nimport { getPublicCompressed } from '@toruslabs/eccrypto';\nimport { providerErrors } from '@web3auth/auth';\nimport { log } from '@web3auth/base';\nimport { SigningKey, hashMessage, TypedDataEncoder } from 'ethers';\nimport { validateTypedSignMessageDataV4 } from './TransactionFormatter/utils.js';\n\nasync function signTx(txParams, privKey, txFormatter) {\n const finalTxParams = await txFormatter.formatTransaction(txParams);\n const {\n Transaction\n } = await import('ethers');\n const ethTx = Transaction.from(_objectSpread(_objectSpread({}, finalTxParams), {}, {\n from: undefined // from is already calculated inside Transaction.from and is not allowed to be passed in\n }));\n const signKey = new SigningKey(addHexPrefix(privKey));\n ethTx.signature = signKey.sign(ethTx.unsignedHash);\n return ethTx.serialized;\n}\nfunction getProviderHandlers({\n txFormatter,\n privKey,\n keyExportEnabled,\n getProviderEngineProxy\n}) {\n return {\n getAccounts: async _ => [`0x${Buffer.from(privateToAddress(Buffer.from(privKey, \"hex\"))).toString(\"hex\")}`],\n getPublicKey: async _ => {\n const publicKey = getPublicCompressed(Buffer.from(stripHexPrefix(privKey), \"hex\"));\n return `0x${Buffer.from(publicKey).toString(\"hex\")}`;\n },\n getPrivateKey: async _ => {\n if (!keyExportEnabled) throw providerErrors.custom({\n message: \"Private key export is disabled\",\n code: 4902\n });\n return privKey;\n },\n processTransaction: async (txParams, _) => {\n const providerEngineProxy = getProviderEngineProxy();\n if (!providerEngineProxy) throw providerErrors.custom({\n message: \"Provider is not initialized\",\n code: 4902\n });\n if (txParams.input && !txParams.data) txParams.data = addHexPrefix(txParams.input);\n const serializedTx = await signTx(txParams, privKey, txFormatter);\n const txHash = await providerEngineProxy.request({\n method: \"eth_sendRawTransaction\",\n params: [serializedTx]\n });\n return txHash;\n },\n processSignTransaction: async (txParams, _) => {\n const providerEngineProxy = getProviderEngineProxy();\n if (!providerEngineProxy) throw providerErrors.custom({\n message: \"Provider is not initialized\",\n code: 4902\n });\n if (txParams.input && !txParams.data) txParams.data = addHexPrefix(txParams.input);\n const serializedTx = await signTx(txParams, privKey, txFormatter);\n return serializedTx;\n },\n processEthSignMessage: async (msgParams, _) => {\n const rawMessageSig = signMessage(privKey, msgParams.data);\n return rawMessageSig;\n },\n processPersonalMessage: async (msgParams, _) => {\n const privKeyBuffer = Buffer.from(privKey, \"hex\");\n const ethersKey = new SigningKey(privKeyBuffer);\n const {\n data\n } = msgParams;\n // we need to check if the data is hex or not\n // For historical reasons, you must submit the message to sign in hex-encoded UTF-8.\n // https://docs.metamask.io/wallet/how-to/sign-data/#use-personal_sign\n const message = isHexString(data) ? Buffer.from(stripHexPrefix(data), \"hex\") : Buffer.from(data);\n const signature = ethersKey.sign(hashMessage(message));\n return signature.serialized;\n },\n processTypedMessageV4: async (msgParams, _) => {\n log.debug(\"processTypedMessageV4\", msgParams);\n const privKeyBuffer = Buffer.from(privKey, \"hex\");\n const providerEngineProxy = getProviderEngineProxy();\n if (!providerEngineProxy) throw providerErrors.custom({\n message: \"Provider is not initialized\",\n code: 4902\n });\n const chainId = await providerEngineProxy.request({\n method: \"eth_chainId\"\n });\n await validateTypedSignMessageDataV4(msgParams, chainId);\n const data = typeof msgParams.data === \"string\" ? JSON.parse(msgParams.data) : msgParams.data;\n const ethersPrivateKey = new SigningKey(privKeyBuffer);\n if (data.types.EIP712Domain) delete data.types.EIP712Domain;\n const signature = ethersPrivateKey.sign(TypedDataEncoder.hash(data.domain, data.types, data.message)).serialized;\n return signature;\n }\n };\n}\n\nexport { getProviderHandlers };\n","import { addHexPrefix, stripHexPrefix } from '@ethereumjs/util';\nimport { BigNumber } from 'bignumber.js';\nimport BN from 'bn.js';\n\nfunction bnLessThan(a, b) {\n if (a === null || a === undefined || b === null || b === undefined) {\n return null;\n }\n return new BigNumber(a, 10).lt(b, 10);\n}\nfunction bnToHex(inputBn) {\n return addHexPrefix(inputBn.toString(16));\n}\nfunction hexToBn(inputHex) {\n if (BN.isBN(inputHex)) return inputHex;\n return new BN(stripHexPrefix(inputHex), 16);\n}\nfunction BnMultiplyByFraction(targetBN, numerator, denominator) {\n const numberBN = new BN(numerator);\n const denomBN = new BN(denominator);\n return targetBN.mul(numberBN).div(denomBN);\n}\n\nexport { BnMultiplyByFraction, bnLessThan, bnToHex, hexToBn };\n","const LegacyGasAPIEndpoint = \"https://gas-api.metaswap.codefi.network/networks//gasPrices\";\nconst EIP1559APIEndpoint = \"https://gas-api.metaswap.codefi.network/networks//suggestedGasFees\";\nconst TRANSACTION_ENVELOPE_TYPES = {\n LEGACY: \"0x0\",\n ACCESS_LIST: \"0x1\",\n FEE_MARKET: \"0x2\"\n};\nconst TRANSACTION_TYPES = {\n SENT_ETHER: \"sentEther\",\n CONTRACT_INTERACTION: \"contractInteraction\",\n DEPLOY_CONTRACT: \"contractDeployment\",\n STANDARD_TRANSACTION: \"transaction\"\n};\nconst GAS_ESTIMATE_TYPES = {\n FEE_MARKET: \"fee-market\",\n LEGACY: \"legacy\",\n ETH_GASPRICE: \"eth_gasPrice\",\n NONE: \"none\"\n};\n\nexport { EIP1559APIEndpoint, GAS_ESTIMATE_TYPES, LegacyGasAPIEndpoint, TRANSACTION_ENVELOPE_TYPES, TRANSACTION_TYPES };\n","import _objectSpread from '@babel/runtime/helpers/objectSpread2';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport { addHexPrefix, stripHexPrefix } from '@ethereumjs/util';\nimport { log } from '@web3auth/base';\nimport { BigNumber } from 'bignumber.js';\nimport { hexWEIToDecGWEI, decGWEIToHexWEI } from '../../converter.js';\nimport { bnLessThan, hexToBn, BnMultiplyByFraction, bnToHex } from '../../utils.js';\nimport { TRANSACTION_ENVELOPE_TYPES, EIP1559APIEndpoint, GAS_ESTIMATE_TYPES, LegacyGasAPIEndpoint, TRANSACTION_TYPES } from './constants.js';\nimport { fetchEip1159GasEstimates, fetchLegacyGasPriceEstimates } from './utils.js';\n\nclass TransactionFormatter {\n constructor({\n getProviderEngineProxy\n }) {\n // https://0x.org/docs/introduction/0x-cheat-sheet#swap-api-endpoints\n _defineProperty(this, \"API_SUPPORTED_CHAINIDS\", new Set([\"0x1\", \"0x5\", \"0x13881\", \"0xa4b1\", \"0xa86a\", \"0x2105\", \"0x38\", \"0xfa\", \"0xa\", \"0x89\"]));\n _defineProperty(this, \"chainConfig\", null);\n _defineProperty(this, \"getProviderEngineProxy\", void 0);\n _defineProperty(this, \"isEIP1559Compatible\", false);\n this.getProviderEngineProxy = getProviderEngineProxy;\n }\n get providerProxy() {\n return this.getProviderEngineProxy();\n }\n async init() {\n this.chainConfig = await this.providerProxy.request({\n method: \"eth_provider_config\"\n });\n this.isEIP1559Compatible = await this.getEIP1559Compatibility();\n }\n async formatTransaction(txParams) {\n if (!this.chainConfig) throw new Error(\"Chain config not initialized\");\n const clonedTxParams = _objectSpread({}, txParams);\n if (clonedTxParams.nonce === undefined) clonedTxParams.nonce = await this.providerProxy.request({\n method: \"eth_getTransactionCount\",\n params: [txParams.from, \"latest\"]\n });\n if (!this.isEIP1559Compatible && clonedTxParams.gasPrice) {\n if (clonedTxParams.maxFeePerGas) delete clonedTxParams.maxFeePerGas;\n if (clonedTxParams.maxPriorityFeePerGas) delete clonedTxParams.maxPriorityFeePerGas;\n // if user provides gas Limit, we should use it instead\n // if gas is not provided explicitly, estimate it.\n if (!clonedTxParams.gasLimit) {\n if (!clonedTxParams.gas) {\n const defaultGasLimit = await this.getDefaultGasLimit(clonedTxParams);\n if (defaultGasLimit) {\n clonedTxParams.gasLimit = defaultGasLimit;\n }\n } else {\n clonedTxParams.gasLimit = addHexPrefix(clonedTxParams.gas);\n }\n }\n return clonedTxParams;\n }\n if (!clonedTxParams.gasLimit) {\n if (!clonedTxParams.gas) {\n const defaultGasLimit = await this.getDefaultGasLimit(clonedTxParams);\n if (defaultGasLimit) {\n clonedTxParams.gasLimit = defaultGasLimit;\n }\n } else {\n clonedTxParams.gasLimit = addHexPrefix(clonedTxParams.gas);\n }\n }\n const {\n gasPrice: defaultGasPrice,\n maxFeePerGas: defaultMaxFeePerGas,\n maxPriorityFeePerGas: defaultMaxPriorityFeePerGas\n } = await this.getDefaultGasFees(clonedTxParams);\n if (this.isEIP1559Compatible) {\n // If the dapp has suggested a gas price, but no maxFeePerGas or maxPriorityFeePerGas\n // then we set maxFeePerGas and maxPriorityFeePerGas to the suggested gasPrice.\n if (clonedTxParams.gasPrice && !clonedTxParams.maxFeePerGas && !clonedTxParams.maxPriorityFeePerGas) {\n clonedTxParams.maxFeePerGas = clonedTxParams.gasPrice;\n clonedTxParams.maxPriorityFeePerGas = bnLessThan(typeof defaultMaxPriorityFeePerGas === \"string\" ? stripHexPrefix(defaultMaxPriorityFeePerGas) : defaultMaxPriorityFeePerGas, typeof clonedTxParams.gasPrice === \"string\" ? stripHexPrefix(clonedTxParams.gasPrice) : clonedTxParams.gasPrice.toString()) ? addHexPrefix(defaultMaxPriorityFeePerGas) : addHexPrefix(clonedTxParams.gasPrice.toString());\n } else {\n if (defaultMaxFeePerGas && !clonedTxParams.maxFeePerGas) {\n // If the dapp has not set the gasPrice or the maxFeePerGas, then we set maxFeePerGas\n // with the one returned by the gasFeeController, if that is available.\n clonedTxParams.maxFeePerGas = addHexPrefix(defaultMaxFeePerGas);\n }\n if (defaultMaxPriorityFeePerGas && !clonedTxParams.maxPriorityFeePerGas) {\n // If the dapp has not set the gasPrice or the maxPriorityFeePerGas, then we set maxPriorityFeePerGas\n // with the one returned by the gasFeeController, if that is available.\n clonedTxParams.maxPriorityFeePerGas = addHexPrefix(defaultMaxPriorityFeePerGas);\n }\n if (defaultGasPrice && !clonedTxParams.maxFeePerGas) {\n // If the dapp has not set the gasPrice or the maxFeePerGas, and no maxFeePerGas is available\n // then we set maxFeePerGas to the defaultGasPrice, assuming it is\n // available.\n clonedTxParams.maxFeePerGas = addHexPrefix(defaultGasPrice);\n }\n if (clonedTxParams.maxFeePerGas && !clonedTxParams.maxPriorityFeePerGas) {\n // If the dapp has not set the gasPrice or the maxPriorityFeePerGas, and no maxPriorityFeePerGas is\n // available then we set maxPriorityFeePerGas to\n // clonedTxParams.maxFeePerGas, which will either be the gasPrice from the controller, the maxFeePerGas\n // set by the dapp, or the maxFeePerGas from the controller.\n clonedTxParams.maxPriorityFeePerGas = clonedTxParams.maxFeePerGas;\n }\n }\n\n // We remove the gasPrice param entirely when on an eip1559 compatible network\n\n delete clonedTxParams.gasPrice;\n } else {\n // We ensure that maxFeePerGas and maxPriorityFeePerGas are not in the transaction params\n // when not on a EIP1559 compatible network\n\n delete clonedTxParams.maxPriorityFeePerGas;\n delete clonedTxParams.maxFeePerGas;\n }\n\n // If we have gotten to this point, and none of gasPrice, maxPriorityFeePerGas or maxFeePerGas are\n // set on txParams, it means that either we are on a non-EIP1559 network and the dapp didn't suggest\n // a gas price, or we are on an EIP1559 network, and none of gasPrice, maxPriorityFeePerGas or maxFeePerGas\n // were available from either the dapp or the network.\n if (defaultGasPrice && !clonedTxParams.gasPrice && !clonedTxParams.maxPriorityFeePerGas && !clonedTxParams.maxFeePerGas) {\n clonedTxParams.gasPrice = defaultGasPrice;\n }\n clonedTxParams.type = Number.parseInt(this.isEIP1559Compatible ? TRANSACTION_ENVELOPE_TYPES.FEE_MARKET : TRANSACTION_ENVELOPE_TYPES.LEGACY, 16);\n clonedTxParams.chainId = this.chainConfig.chainId;\n return clonedTxParams;\n }\n async fetchEthGasPriceEstimate() {\n const gasPrice = await this.providerProxy.request({\n method: \"eth_gasPrice\",\n params: []\n });\n return {\n gasPrice: hexWEIToDecGWEI(gasPrice).toString()\n };\n }\n async fetchGasEstimatesViaEthFeeHistory() {\n const noOfBlocks = 10;\n const newestBlock = \"latest\";\n // get the 10, 50 and 95th percentile of the tip fees from the last 10 blocks\n const percentileValues = [10, 50, 95];\n const feeHistory = await this.providerProxy.request({\n method: \"eth_feeHistory\",\n params: [noOfBlocks, newestBlock, percentileValues]\n });\n\n // this is in hex wei\n const finalBaseFeePerGas = feeHistory.baseFeePerGas[feeHistory.baseFeePerGas.length - 1];\n // this is in hex wei\n const priorityFeeCalcs = feeHistory.reward.reduce((acc, curr) => {\n return {\n slow: acc.slow.plus(new BigNumber(curr[0], 16)),\n average: acc.average.plus(new BigNumber(curr[1], 16)),\n fast: acc.fast.plus(new BigNumber(curr[2], 16))\n };\n }, {\n slow: new BigNumber(0),\n average: new BigNumber(0),\n fast: new BigNumber(0)\n });\n return {\n estimatedBaseFee: hexWEIToDecGWEI(finalBaseFeePerGas).toString(),\n high: {\n maxWaitTimeEstimate: 30000,\n minWaitTimeEstimate: 15000,\n suggestedMaxFeePerGas: hexWEIToDecGWEI(priorityFeeCalcs.fast.plus(finalBaseFeePerGas).toString(16)).toString(),\n suggestedMaxPriorityFeePerGas: hexWEIToDecGWEI(priorityFeeCalcs.fast.toString(16)).toString()\n },\n medium: {\n maxWaitTimeEstimate: 45000,\n minWaitTimeEstimate: 15000,\n suggestedMaxFeePerGas: hexWEIToDecGWEI(priorityFeeCalcs.average.plus(finalBaseFeePerGas).toString(16)).toString(),\n suggestedMaxPriorityFeePerGas: hexWEIToDecGWEI(priorityFeeCalcs.average.toString(16)).toString()\n },\n low: {\n maxWaitTimeEstimate: 60000,\n minWaitTimeEstimate: 15000,\n suggestedMaxFeePerGas: hexWEIToDecGWEI(priorityFeeCalcs.slow.plus(finalBaseFeePerGas).toString(16)).toString(),\n suggestedMaxPriorityFeePerGas: hexWEIToDecGWEI(priorityFeeCalcs.slow.toString(16)).toString()\n }\n };\n }\n async getEIP1559Compatibility() {\n const latestBlock = await this.providerProxy.request({\n method: \"eth_getBlockByNumber\",\n params: [\"latest\", false]\n });\n const supportsEIP1559 = latestBlock && latestBlock.baseFeePerGas !== undefined;\n return !!supportsEIP1559;\n }\n async fetchGasFeeEstimateData() {\n if (!this.chainConfig) throw new Error(\"Chain config not initialized\");\n const isLegacyGasAPICompatible = this.chainConfig.chainId === \"0x1\";\n const chainId = Number.parseInt(this.chainConfig.chainId, 16);\n let gasData;\n try {\n if (this.isEIP1559Compatible) {\n let estimates;\n try {\n if (this.API_SUPPORTED_CHAINIDS.has(this.chainConfig.chainId)) {\n estimates = await fetchEip1159GasEstimates(EIP1559APIEndpoint.replace(\"\", `${chainId}`));\n } else {\n throw new Error(\"Chain id not supported by api\");\n }\n } catch (error) {\n estimates = await this.fetchGasEstimatesViaEthFeeHistory();\n }\n gasData = {\n gasFeeEstimates: estimates,\n gasEstimateType: GAS_ESTIMATE_TYPES.FEE_MARKET\n };\n } else if (isLegacyGasAPICompatible) {\n const estimates = await fetchLegacyGasPriceEstimates(LegacyGasAPIEndpoint.replace(\"\", `${chainId}`));\n gasData = {\n gasFeeEstimates: estimates,\n gasEstimateType: GAS_ESTIMATE_TYPES.LEGACY\n };\n } else {\n throw new Error(\"Main gas fee/price estimation failed. Use fallback\");\n }\n } catch (e) {\n try {\n const estimates = await this.fetchEthGasPriceEstimate();\n gasData = {\n gasFeeEstimates: estimates,\n gasEstimateType: GAS_ESTIMATE_TYPES.ETH_GASPRICE\n };\n } catch (error) {\n throw new Error(`Gas fee/price estimation failed. Message: ${error.message}`);\n }\n }\n return gasData;\n }\n async getDefaultGasFees(txParams) {\n if (!this.isEIP1559Compatible && txParams.gasPrice || this.isEIP1559Compatible && txParams.maxFeePerGas && txParams.maxPriorityFeePerGas) {\n return {};\n }\n try {\n const {\n gasFeeEstimates,\n gasEstimateType\n } = await this.fetchGasFeeEstimateData();\n if (this.isEIP1559Compatible && gasEstimateType === GAS_ESTIMATE_TYPES.FEE_MARKET) {\n const {\n medium: {\n suggestedMaxPriorityFeePerGas,\n suggestedMaxFeePerGas\n } = {}\n } = gasFeeEstimates;\n if (suggestedMaxPriorityFeePerGas && suggestedMaxFeePerGas) {\n return {\n maxFeePerGas: addHexPrefix(decGWEIToHexWEI(suggestedMaxFeePerGas)),\n maxPriorityFeePerGas: addHexPrefix(decGWEIToHexWEI(suggestedMaxPriorityFeePerGas))\n };\n }\n } else if (gasEstimateType === GAS_ESTIMATE_TYPES.LEGACY) {\n // The LEGACY type includes low, medium and high estimates of\n // gas price values.\n return {\n gasPrice: addHexPrefix(decGWEIToHexWEI(gasFeeEstimates.medium))\n };\n } else if (gasEstimateType === GAS_ESTIMATE_TYPES.ETH_GASPRICE) {\n // The ETH_GASPRICE type just includes a single gas price property,\n // which we can assume was retrieved from eth_gasPrice\n return {\n gasPrice: addHexPrefix(decGWEIToHexWEI(gasFeeEstimates.gasPrice))\n };\n }\n } catch (error) {\n log.error(error);\n }\n const {\n gasPrice\n } = await this.fetchEthGasPriceEstimate();\n return {\n gasPrice: addHexPrefix(decGWEIToHexWEI(gasPrice))\n };\n }\n async estimateTxGas(txMeta) {\n const txParams = _objectSpread({}, txMeta);\n\n // `eth_estimateGas` can fail if the user has insufficient balance for the\n // value being sent, or for the gas cost. We don't want to check their\n // balance here, we just want the gas estimate. The gas price is removed\n // to skip those balance checks. We check balance elsewhere. We also delete\n // maxFeePerGas and maxPriorityFeePerGas to support EIP-1559 txs.\n delete txParams.gasPrice;\n delete txParams.maxFeePerGas;\n delete txParams.maxPriorityFeePerGas;\n const gas = await this.providerProxy.request({\n method: \"eth_estimateGas\",\n params: [txParams]\n });\n return gas;\n }\n async analyzeGasUsage(txMeta) {\n const block = await this.providerProxy.request({\n method: \"eth_getBlockByNumber\",\n params: [\"latest\", false]\n });\n // fallback to block gasLimit\n const blockGasLimitBN = hexToBn(block.gasLimit);\n const saferGasLimitBN = BnMultiplyByFraction(blockGasLimitBN, 19, 20);\n let estimatedGasHex = bnToHex(saferGasLimitBN);\n try {\n estimatedGasHex = await this.estimateTxGas(txMeta);\n } catch (error) {\n log.warn(error);\n }\n return {\n blockGasLimit: block.gasLimit,\n estimatedGasHex\n };\n }\n addGasBuffer(initialGasLimitHex, blockGasLimitHex, multiplier = 1.5) {\n const initialGasLimitBn = hexToBn(initialGasLimitHex);\n const blockGasLimitBn = hexToBn(blockGasLimitHex);\n const upperGasLimitBn = blockGasLimitBn.muln(0.9);\n const bufferedGasLimitBn = initialGasLimitBn.muln(multiplier);\n\n // if initialGasLimit is above blockGasLimit, dont modify it\n if (initialGasLimitBn.gt(upperGasLimitBn)) return bnToHex(initialGasLimitBn);\n // if bufferedGasLimit is below blockGasLimit, use bufferedGasLimit\n if (bufferedGasLimitBn.lt(upperGasLimitBn)) return bnToHex(bufferedGasLimitBn);\n // otherwise use blockGasLimit\n return bnToHex(upperGasLimitBn);\n }\n async determineTransactionCategory(txParameters) {\n const {\n data,\n to\n } = txParameters;\n let code = \"\";\n let txCategory;\n if (data && !to) {\n txCategory = TRANSACTION_TYPES.DEPLOY_CONTRACT;\n } else {\n try {\n code = await this.providerProxy.request({\n method: \"eth_getCode\",\n params: [to, \"latest\"]\n });\n } catch (error) {\n log.warn(error);\n }\n const codeIsEmpty = !code || code === \"0x\" || code === \"0x0\";\n txCategory = codeIsEmpty ? TRANSACTION_TYPES.SENT_ETHER : TRANSACTION_TYPES.CONTRACT_INTERACTION;\n }\n return {\n transactionCategory: txCategory,\n code\n };\n }\n async getDefaultGasLimit(txParams) {\n const {\n transactionCategory\n } = await this.determineTransactionCategory(_objectSpread({}, txParams));\n if (txParams.gas) {\n return addHexPrefix(txParams.gas);\n }\n if (txParams.to && transactionCategory === TRANSACTION_TYPES.SENT_ETHER) {\n // if there's data in the params, but there's no contract code, it's not a valid transaction\n if (txParams.data) {\n throw Error(\"TxGasUtil - Trying to call a function on a non-contract address\");\n }\n const TWENTY_ONE_THOUSAND = 21000;\n\n // This is a standard ether simple send, gas requirement is exactly 21k\n return addHexPrefix(TWENTY_ONE_THOUSAND.toString(16));\n }\n const {\n blockGasLimit,\n estimatedGasHex\n } = await this.analyzeGasUsage(txParams);\n\n // add additional gas buffer to our estimation for safety\n const gasLimit = this.addGasBuffer(addHexPrefix(estimatedGasHex), blockGasLimit);\n return gasLimit;\n }\n}\n\nexport { TransactionFormatter };\n","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport { isHexString } from '@ethereumjs/util';\nimport { providerErrors, JRPCEngine, providerFromEngine, rpcErrors } from '@web3auth/auth';\nimport { CHAIN_NAMESPACES, WalletInitializationError } from '@web3auth/base';\nimport { BaseProvider } from '@web3auth/base-provider';\nimport { createEthMiddleware, createChainSwitchMiddleware, createAccountMiddleware } from '../../rpc/ethRpcMiddlewares.js';\nimport { createJsonRpcClient } from '../../rpc/jrpcClient.js';\nimport { getProviderHandlers } from './ethPrivatekeyUtils.js';\nimport { TransactionFormatter } from './TransactionFormatter/formatter.js';\n\nvar _EthereumPrivateKeyProvider;\nclass EthereumPrivateKeyProvider extends BaseProvider {\n constructor({\n config,\n state\n }) {\n super({\n config,\n state\n });\n _defineProperty(this, \"PROVIDER_CHAIN_NAMESPACE\", CHAIN_NAMESPACES.EIP155);\n }\n async enable() {\n if (!this.state.privateKey) throw providerErrors.custom({\n message: \"Private key is not found in state, plz pass it in constructor state param\",\n code: 4902\n });\n await this.setupProvider(this.state.privateKey);\n return this._providerEngineProxy.request({\n method: \"eth_accounts\"\n });\n }\n async setupProvider(privKey) {\n const {\n chainNamespace\n } = this.config.chainConfig;\n if (chainNamespace !== this.PROVIDER_CHAIN_NAMESPACE) throw WalletInitializationError.incompatibleChainNameSpace(\"Invalid chain namespace\");\n const txFormatter = new TransactionFormatter({\n getProviderEngineProxy: this.getProviderEngineProxy.bind(this)\n });\n const providerHandlers = getProviderHandlers({\n txFormatter,\n privKey,\n getProviderEngineProxy: this.getProviderEngineProxy.bind(this),\n keyExportEnabled: this.config.keyExportEnabled\n });\n const ethMiddleware = createEthMiddleware(providerHandlers);\n const chainSwitchMiddleware = this.getChainSwitchMiddleware();\n const engine = new JRPCEngine();\n // Not a partial anymore because of checks in ctor\n const {\n networkMiddleware\n } = createJsonRpcClient(this.config.chainConfig);\n engine.push(ethMiddleware);\n engine.push(chainSwitchMiddleware);\n engine.push(this.getAccountMiddleware());\n engine.push(networkMiddleware);\n const provider = providerFromEngine(engine);\n this.updateProviderEngineProxy(provider);\n await txFormatter.init();\n await this.lookupNetwork();\n }\n async updateAccount(params) {\n if (!this._providerEngineProxy) throw providerErrors.custom({\n message: \"Provider is not initialized\",\n code: 4902\n });\n const existingKey = await this._providerEngineProxy.request({\n method: \"eth_private_key\"\n });\n if (existingKey !== params.privateKey) {\n await this.setupProvider(params.privateKey);\n const accounts = await this._providerEngineProxy.request({\n method: \"eth_accounts\"\n });\n this.emit(\"accountsChanged\", accounts);\n }\n }\n async switchChain(params) {\n if (!this._providerEngineProxy) throw providerErrors.custom({\n message: \"Provider is not initialized\",\n code: 4902\n });\n const chainConfig = this.getChainConfig(params.chainId);\n this.update({\n chainId: \"loading\"\n });\n this.configure({\n chainConfig\n });\n const privKey = await this._providerEngineProxy.request({\n method: \"eth_private_key\"\n });\n await this.setupProvider(privKey);\n }\n async lookupNetwork() {\n if (!this._providerEngineProxy) throw providerErrors.custom({\n message: \"Provider is not initialized\",\n code: 4902\n });\n const {\n chainId\n } = this.config.chainConfig;\n if (!chainId) throw rpcErrors.invalidParams(\"chainId is required while lookupNetwork\");\n const network = await this._providerEngineProxy.request({\n method: \"net_version\",\n params: []\n });\n const finalNetwork = isHexString(network) ? parseInt(network, 16) : parseInt(network, 10);\n if (parseInt(chainId, 16) !== finalNetwork) throw providerErrors.chainDisconnected(`Invalid network, net_version is: ${network}`);\n if (this.state.chainId !== chainId) {\n this.emit(\"chainChanged\", chainId);\n this.emit(\"connect\", {\n chainId\n });\n }\n this.update({\n chainId\n });\n return network;\n }\n getChainSwitchMiddleware() {\n const chainSwitchHandlers = {\n addChain: async params => {\n const {\n chainId,\n chainName,\n rpcUrls,\n blockExplorerUrls,\n nativeCurrency,\n iconUrls\n } = params;\n this.addChain({\n chainNamespace: CHAIN_NAMESPACES.EIP155,\n chainId,\n ticker: (nativeCurrency === null || nativeCurrency === void 0 ? void 0 : nativeCurrency.symbol) || \"ETH\",\n tickerName: (nativeCurrency === null || nativeCurrency === void 0 ? void 0 : nativeCurrency.name) || \"Ether\",\n displayName: chainName,\n rpcTarget: rpcUrls[0],\n blockExplorerUrl: (blockExplorerUrls === null || blockExplorerUrls === void 0 ? void 0 : blockExplorerUrls[0]) || \"\",\n decimals: (nativeCurrency === null || nativeCurrency === void 0 ? void 0 : nativeCurrency.decimals) || 18,\n logo: (iconUrls === null || iconUrls === void 0 ? void 0 : iconUrls[0]) || \"https://images.toruswallet.io/eth.svg\"\n });\n },\n switchChain: async params => {\n const {\n chainId\n } = params;\n await this.switchChain({\n chainId\n });\n }\n };\n const chainSwitchMiddleware = createChainSwitchMiddleware(chainSwitchHandlers);\n return chainSwitchMiddleware;\n }\n getAccountMiddleware() {\n const accountHandlers = {\n updatePrivatekey: async params => {\n const {\n privateKey\n } = params;\n await this.updateAccount({\n privateKey\n });\n }\n };\n return createAccountMiddleware(accountHandlers);\n }\n}\n_EthereumPrivateKeyProvider = EthereumPrivateKeyProvider;\n_defineProperty(EthereumPrivateKeyProvider, \"getProviderInstance\", async params => {\n const providerFactory = new _EthereumPrivateKeyProvider({\n config: {\n chainConfig: params.chainConfig\n }\n });\n await providerFactory.setupProvider(params.privKey);\n return providerFactory;\n});\n\nexport { EthereumPrivateKeyProvider };\n","// Web3AuthContext.tsx\nimport { createContext, useContext, useState, useEffect } from \"react\";\nimport {\n CHAIN_NAMESPACES,\n IProvider,\n WALLET_ADAPTERS,\n WEB3AUTH_NETWORK,\n} from \"@web3auth/base\";\nimport { Web3AuthNoModal } from \"@web3auth/no-modal\";\nimport { EthereumPrivateKeyProvider } from \"@web3auth/ethereum-provider\";\nimport { AuthAdapter } from \"@web3auth/auth-adapter\";\nimport { ec as EC } from \"elliptic\";\n\nconst ec = new EC(\"secp256k1\");\n\nconst web3AuthClientId =\n \"BAiwYWZI6UbKwvnkFOnDmW27ptYa_0lCAxK3WzeSQePLw7d_EPQHRFEwCi3RC0EdC0sw1qJz809n6o95fmBCook\";\nconst googleOAuthClientId =\n \"972164722537-af0c02i3ekqatav51dfulppn8ptp9qu3.apps.googleusercontent.com\";\n\ninterface Web3AuthContextType {\n provider: IProvider | null;\n web3auth: Web3AuthNoModal | null;\n loginWithGoogle: () => Promise<{\n connected: boolean | null;\n publicKey: string | null;\n privateKey: string | null;\n email: string | null;\n }>;\n logout: () => Promise;\n checkConnection: () => Promise;\n}\n\nconst chainConfig = {\n chainNamespace: CHAIN_NAMESPACES.EIP155,\n chainId: \"0xaa36a7\",\n rpcTarget: \"https://rpc.ankr.com/eth_sepolia\",\n displayName: \"Ethereum Sepolia Testnet\",\n blockExplorerUrl: \"https://sepolia.etherscan.io\",\n ticker: \"ETH\",\n tickerName: \"Ethereum\",\n logo: \"https://cryptologos.cc/logos/ethereum-eth-logo.png\",\n};\n\nconst Web3AuthContext = createContext(null);\n\nexport const Web3AuthProvider = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n const [provider, setProvider] = useState(null);\n const [web3auth, setWeb3auth] = useState(null);\n\n // 기존 useWeb3Auth의 초기화 로직\n useEffect(() => {\n const init = async () => {\n console.log(\"init start\");\n try {\n const privateKeyProvider = new EthereumPrivateKeyProvider({\n config: { chainConfig },\n });\n\n const web3authInstance = new Web3AuthNoModal({\n clientId: web3AuthClientId,\n web3AuthNetwork: WEB3AUTH_NETWORK.SAPPHIRE_DEVNET,\n privateKeyProvider,\n });\n\n const authAdapter = new AuthAdapter({\n adapterSettings: {\n loginConfig: {\n google: {\n verifier: \"mutual-link\",\n typeOfLogin: \"google\",\n clientId: googleOAuthClientId,\n },\n },\n },\n privateKeyProvider,\n });\n\n web3authInstance.configureAdapter(authAdapter);\n await web3authInstance.init();\n\n setWeb3auth(web3authInstance);\n setProvider(web3authInstance.provider);\n } catch (error) {\n console.error(error);\n }\n };\n init();\n }, []);\n\n // 기존 useWeb3Auth의 메서드들\n const loginWithGoogle = async () => {\n try {\n if (!web3auth) {\n throw new Error(\"web3auth not initialized\");\n }\n\n if (web3auth.connected) {\n const privateKey = (await web3auth.provider?.request({\n method: \"eth_private_key\",\n })) as string;\n\n // 개인키로부터 공개키 생성\n const keyPair = ec.keyFromPrivate(privateKey.replace(\"0x\", \"\"), \"hex\");\n const publicKey = keyPair.getPublic(\"hex\");\n\n const userInfo = await web3auth.getUserInfo();\n return {\n connected: true,\n publicKey: publicKey,\n privateKey: privateKey,\n email: userInfo.email || null,\n };\n }\n\n const web3authProvider = await web3auth.connectTo(WALLET_ADAPTERS.AUTH, {\n loginProvider: \"google\",\n });\n setProvider(web3authProvider);\n\n const privateKey = (await web3authProvider?.request({\n method: \"eth_private_key\",\n })) as string;\n\n // 개인키로부터 공개키 생성\n const keyPair = ec.keyFromPrivate(privateKey.replace(\"0x\", \"\"), \"hex\");\n const publicKey = keyPair.getPublic(\"hex\");\n\n const userInfo = await web3auth.getUserInfo();\n\n return {\n connected: web3auth.connected,\n publicKey: publicKey,\n privateKey: privateKey,\n email: userInfo.email || null,\n };\n } catch (error) {\n throw error;\n }\n };\n\n const logout = async () => {\n if (!web3auth) {\n console.error(\"web3auth가 초기화되지 않았습니다\");\n return;\n }\n\n try {\n await web3auth.logout();\n setProvider(null);\n } catch (error) {\n console.error(\"로그아웃 실패:\", error);\n }\n };\n\n const checkConnection = async () => {\n if (!web3auth) return false;\n return web3auth.connected;\n };\n\n return (\n \n {children}\n \n );\n};\n\nexport const useWeb3Auth = () => {\n const context = useContext(Web3AuthContext);\n if (!context) {\n throw new Error(\"useWeb3Auth must be used within a Web3AuthProvider\");\n }\n return context;\n};\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Firebase constants. Some of these (@defines) can be overridden at compile-time.\n */\nconst CONSTANTS = {\n /**\n * @define {boolean} Whether this is the client Node.js SDK.\n */\n NODE_CLIENT: false,\n /**\n * @define {boolean} Whether this is the Admin Node.js SDK.\n */\n NODE_ADMIN: false,\n /**\n * Firebase SDK Version\n */\n SDK_VERSION: '${JSCORE_VERSION}'\n};\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Throws an error if the provided assertion is falsy\n */\nconst assert = function (assertion, message) {\n if (!assertion) {\n throw assertionError(message);\n }\n};\n/**\n * Returns an Error object suitable for throwing.\n */\nconst assertionError = function (message) {\n return new Error('Firebase Database (' +\n CONSTANTS.SDK_VERSION +\n ') INTERNAL ASSERT FAILED: ' +\n message);\n};\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst stringToByteArray$1 = function (str) {\n // TODO(user): Use native implementations if/when available\n const out = [];\n let p = 0;\n for (let i = 0; i < str.length; i++) {\n let c = str.charCodeAt(i);\n if (c < 128) {\n out[p++] = c;\n }\n else if (c < 2048) {\n out[p++] = (c >> 6) | 192;\n out[p++] = (c & 63) | 128;\n }\n else if ((c & 0xfc00) === 0xd800 &&\n i + 1 < str.length &&\n (str.charCodeAt(i + 1) & 0xfc00) === 0xdc00) {\n // Surrogate Pair\n c = 0x10000 + ((c & 0x03ff) << 10) + (str.charCodeAt(++i) & 0x03ff);\n out[p++] = (c >> 18) | 240;\n out[p++] = ((c >> 12) & 63) | 128;\n out[p++] = ((c >> 6) & 63) | 128;\n out[p++] = (c & 63) | 128;\n }\n else {\n out[p++] = (c >> 12) | 224;\n out[p++] = ((c >> 6) & 63) | 128;\n out[p++] = (c & 63) | 128;\n }\n }\n return out;\n};\n/**\n * Turns an array of numbers into the string given by the concatenation of the\n * characters to which the numbers correspond.\n * @param bytes Array of numbers representing characters.\n * @return Stringification of the array.\n */\nconst byteArrayToString = function (bytes) {\n // TODO(user): Use native implementations if/when available\n const out = [];\n let pos = 0, c = 0;\n while (pos < bytes.length) {\n const c1 = bytes[pos++];\n if (c1 < 128) {\n out[c++] = String.fromCharCode(c1);\n }\n else if (c1 > 191 && c1 < 224) {\n const c2 = bytes[pos++];\n out[c++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));\n }\n else if (c1 > 239 && c1 < 365) {\n // Surrogate Pair\n const c2 = bytes[pos++];\n const c3 = bytes[pos++];\n const c4 = bytes[pos++];\n const u = (((c1 & 7) << 18) | ((c2 & 63) << 12) | ((c3 & 63) << 6) | (c4 & 63)) -\n 0x10000;\n out[c++] = String.fromCharCode(0xd800 + (u >> 10));\n out[c++] = String.fromCharCode(0xdc00 + (u & 1023));\n }\n else {\n const c2 = bytes[pos++];\n const c3 = bytes[pos++];\n out[c++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n }\n }\n return out.join('');\n};\n// We define it as an object literal instead of a class because a class compiled down to es5 can't\n// be treeshaked. https://github.com/rollup/rollup/issues/1691\n// Static lookup maps, lazily populated by init_()\n// TODO(dlarocque): Define this as a class, since we no longer target ES5.\nconst base64 = {\n /**\n * Maps bytes to characters.\n */\n byteToCharMap_: null,\n /**\n * Maps characters to bytes.\n */\n charToByteMap_: null,\n /**\n * Maps bytes to websafe characters.\n * @private\n */\n byteToCharMapWebSafe_: null,\n /**\n * Maps websafe characters to bytes.\n * @private\n */\n charToByteMapWebSafe_: null,\n /**\n * Our default alphabet, shared between\n * ENCODED_VALS and ENCODED_VALS_WEBSAFE\n */\n ENCODED_VALS_BASE: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + 'abcdefghijklmnopqrstuvwxyz' + '0123456789',\n /**\n * Our default alphabet. Value 64 (=) is special; it means \"nothing.\"\n */\n get ENCODED_VALS() {\n return this.ENCODED_VALS_BASE + '+/=';\n },\n /**\n * Our websafe alphabet.\n */\n get ENCODED_VALS_WEBSAFE() {\n return this.ENCODED_VALS_BASE + '-_.';\n },\n /**\n * Whether this browser supports the atob and btoa functions. This extension\n * started at Mozilla but is now implemented by many browsers. We use the\n * ASSUME_* variables to avoid pulling in the full useragent detection library\n * but still allowing the standard per-browser compilations.\n *\n */\n HAS_NATIVE_SUPPORT: typeof atob === 'function',\n /**\n * Base64-encode an array of bytes.\n *\n * @param input An array of bytes (numbers with\n * value in [0, 255]) to encode.\n * @param webSafe Boolean indicating we should use the\n * alternative alphabet.\n * @return The base64 encoded string.\n */\n encodeByteArray(input, webSafe) {\n if (!Array.isArray(input)) {\n throw Error('encodeByteArray takes an array as a parameter');\n }\n this.init_();\n const byteToCharMap = webSafe\n ? this.byteToCharMapWebSafe_\n : this.byteToCharMap_;\n const output = [];\n for (let i = 0; i < input.length; i += 3) {\n const byte1 = input[i];\n const haveByte2 = i + 1 < input.length;\n const byte2 = haveByte2 ? input[i + 1] : 0;\n const haveByte3 = i + 2 < input.length;\n const byte3 = haveByte3 ? input[i + 2] : 0;\n const outByte1 = byte1 >> 2;\n const outByte2 = ((byte1 & 0x03) << 4) | (byte2 >> 4);\n let outByte3 = ((byte2 & 0x0f) << 2) | (byte3 >> 6);\n let outByte4 = byte3 & 0x3f;\n if (!haveByte3) {\n outByte4 = 64;\n if (!haveByte2) {\n outByte3 = 64;\n }\n }\n output.push(byteToCharMap[outByte1], byteToCharMap[outByte2], byteToCharMap[outByte3], byteToCharMap[outByte4]);\n }\n return output.join('');\n },\n /**\n * Base64-encode a string.\n *\n * @param input A string to encode.\n * @param webSafe If true, we should use the\n * alternative alphabet.\n * @return The base64 encoded string.\n */\n encodeString(input, webSafe) {\n // Shortcut for Mozilla browsers that implement\n // a native base64 encoder in the form of \"btoa/atob\"\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\n return btoa(input);\n }\n return this.encodeByteArray(stringToByteArray$1(input), webSafe);\n },\n /**\n * Base64-decode a string.\n *\n * @param input to decode.\n * @param webSafe True if we should use the\n * alternative alphabet.\n * @return string representing the decoded value.\n */\n decodeString(input, webSafe) {\n // Shortcut for Mozilla browsers that implement\n // a native base64 encoder in the form of \"btoa/atob\"\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\n return atob(input);\n }\n return byteArrayToString(this.decodeStringToByteArray(input, webSafe));\n },\n /**\n * Base64-decode a string.\n *\n * In base-64 decoding, groups of four characters are converted into three\n * bytes. If the encoder did not apply padding, the input length may not\n * be a multiple of 4.\n *\n * In this case, the last group will have fewer than 4 characters, and\n * padding will be inferred. If the group has one or two characters, it decodes\n * to one byte. If the group has three characters, it decodes to two bytes.\n *\n * @param input Input to decode.\n * @param webSafe True if we should use the web-safe alphabet.\n * @return bytes representing the decoded value.\n */\n decodeStringToByteArray(input, webSafe) {\n this.init_();\n const charToByteMap = webSafe\n ? this.charToByteMapWebSafe_\n : this.charToByteMap_;\n const output = [];\n for (let i = 0; i < input.length;) {\n const byte1 = charToByteMap[input.charAt(i++)];\n const haveByte2 = i < input.length;\n const byte2 = haveByte2 ? charToByteMap[input.charAt(i)] : 0;\n ++i;\n const haveByte3 = i < input.length;\n const byte3 = haveByte3 ? charToByteMap[input.charAt(i)] : 64;\n ++i;\n const haveByte4 = i < input.length;\n const byte4 = haveByte4 ? charToByteMap[input.charAt(i)] : 64;\n ++i;\n if (byte1 == null || byte2 == null || byte3 == null || byte4 == null) {\n throw new DecodeBase64StringError();\n }\n const outByte1 = (byte1 << 2) | (byte2 >> 4);\n output.push(outByte1);\n if (byte3 !== 64) {\n const outByte2 = ((byte2 << 4) & 0xf0) | (byte3 >> 2);\n output.push(outByte2);\n if (byte4 !== 64) {\n const outByte3 = ((byte3 << 6) & 0xc0) | byte4;\n output.push(outByte3);\n }\n }\n }\n return output;\n },\n /**\n * Lazy static initialization function. Called before\n * accessing any of the static map variables.\n * @private\n */\n init_() {\n if (!this.byteToCharMap_) {\n this.byteToCharMap_ = {};\n this.charToByteMap_ = {};\n this.byteToCharMapWebSafe_ = {};\n this.charToByteMapWebSafe_ = {};\n // We want quick mappings back and forth, so we precompute two maps.\n for (let i = 0; i < this.ENCODED_VALS.length; i++) {\n this.byteToCharMap_[i] = this.ENCODED_VALS.charAt(i);\n this.charToByteMap_[this.byteToCharMap_[i]] = i;\n this.byteToCharMapWebSafe_[i] = this.ENCODED_VALS_WEBSAFE.charAt(i);\n this.charToByteMapWebSafe_[this.byteToCharMapWebSafe_[i]] = i;\n // Be forgiving when decoding and correctly decode both encodings.\n if (i >= this.ENCODED_VALS_BASE.length) {\n this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(i)] = i;\n this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(i)] = i;\n }\n }\n }\n }\n};\n/**\n * An error encountered while decoding base64 string.\n */\nclass DecodeBase64StringError extends Error {\n constructor() {\n super(...arguments);\n this.name = 'DecodeBase64StringError';\n }\n}\n/**\n * URL-safe base64 encoding\n */\nconst base64Encode = function (str) {\n const utf8Bytes = stringToByteArray$1(str);\n return base64.encodeByteArray(utf8Bytes, true);\n};\n/**\n * URL-safe base64 encoding (without \".\" padding in the end).\n * e.g. Used in JSON Web Token (JWT) parts.\n */\nconst base64urlEncodeWithoutPadding = function (str) {\n // Use base64url encoding and remove padding in the end (dot characters).\n return base64Encode(str).replace(/\\./g, '');\n};\n/**\n * URL-safe base64 decoding\n *\n * NOTE: DO NOT use the global atob() function - it does NOT support the\n * base64Url variant encoding.\n *\n * @param str To be decoded\n * @return Decoded result, if possible\n */\nconst base64Decode = function (str) {\n try {\n return base64.decodeString(str, true);\n }\n catch (e) {\n console.error('base64Decode failed: ', e);\n }\n return null;\n};\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Do a deep-copy of basic JavaScript Objects or Arrays.\n */\nfunction deepCopy(value) {\n return deepExtend(undefined, value);\n}\n/**\n * Copy properties from source to target (recursively allows extension\n * of Objects and Arrays). Scalar values in the target are over-written.\n * If target is undefined, an object of the appropriate type will be created\n * (and returned).\n *\n * We recursively copy all child properties of plain Objects in the source- so\n * that namespace- like dictionaries are merged.\n *\n * Note that the target can be a function, in which case the properties in\n * the source Object are copied onto it as static properties of the Function.\n *\n * Note: we don't merge __proto__ to prevent prototype pollution\n */\nfunction deepExtend(target, source) {\n if (!(source instanceof Object)) {\n return source;\n }\n switch (source.constructor) {\n case Date:\n // Treat Dates like scalars; if the target date object had any child\n // properties - they will be lost!\n const dateValue = source;\n return new Date(dateValue.getTime());\n case Object:\n if (target === undefined) {\n target = {};\n }\n break;\n case Array:\n // Always copy the array source and overwrite the target.\n target = [];\n break;\n default:\n // Not a plain Object - treat it as a scalar.\n return source;\n }\n for (const prop in source) {\n // use isValidKey to guard against prototype pollution. See https://snyk.io/vuln/SNYK-JS-LODASH-450202\n if (!source.hasOwnProperty(prop) || !isValidKey(prop)) {\n continue;\n }\n target[prop] = deepExtend(target[prop], source[prop]);\n }\n return target;\n}\nfunction isValidKey(key) {\n return key !== '__proto__';\n}\n\n/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Polyfill for `globalThis` object.\n * @returns the `globalThis` object for the given environment.\n * @public\n */\nfunction getGlobal() {\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('Unable to locate global object.');\n}\n\n/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst getDefaultsFromGlobal = () => getGlobal().__FIREBASE_DEFAULTS__;\n/**\n * Attempt to read defaults from a JSON string provided to\n * process(.)env(.)__FIREBASE_DEFAULTS__ or a JSON file whose path is in\n * process(.)env(.)__FIREBASE_DEFAULTS_PATH__\n * The dots are in parens because certain compilers (Vite?) cannot\n * handle seeing that variable in comments.\n * See https://github.com/firebase/firebase-js-sdk/issues/6838\n */\nconst getDefaultsFromEnvVariable = () => {\n if (typeof process === 'undefined' || typeof process.env === 'undefined') {\n return;\n }\n const defaultsJsonString = process.env.__FIREBASE_DEFAULTS__;\n if (defaultsJsonString) {\n return JSON.parse(defaultsJsonString);\n }\n};\nconst getDefaultsFromCookie = () => {\n if (typeof document === 'undefined') {\n return;\n }\n let match;\n try {\n match = document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/);\n }\n catch (e) {\n // Some environments such as Angular Universal SSR have a\n // `document` object but error on accessing `document.cookie`.\n return;\n }\n const decoded = match && base64Decode(match[1]);\n return decoded && JSON.parse(decoded);\n};\n/**\n * Get the __FIREBASE_DEFAULTS__ object. It checks in order:\n * (1) if such an object exists as a property of `globalThis`\n * (2) if such an object was provided on a shell environment variable\n * (3) if such an object exists in a cookie\n * @public\n */\nconst getDefaults = () => {\n try {\n return (getDefaultsFromGlobal() ||\n getDefaultsFromEnvVariable() ||\n getDefaultsFromCookie());\n }\n catch (e) {\n /**\n * Catch-all for being unable to get __FIREBASE_DEFAULTS__ due\n * to any environment case we have not accounted for. Log to\n * info instead of swallowing so we can find these unknown cases\n * and add paths for them if needed.\n */\n console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${e}`);\n return;\n }\n};\n/**\n * Returns emulator host stored in the __FIREBASE_DEFAULTS__ object\n * for the given product.\n * @returns a URL host formatted like `127.0.0.1:9999` or `[::1]:4000` if available\n * @public\n */\nconst getDefaultEmulatorHost = (productName) => { var _a, _b; return (_b = (_a = getDefaults()) === null || _a === void 0 ? void 0 : _a.emulatorHosts) === null || _b === void 0 ? void 0 : _b[productName]; };\n/**\n * Returns emulator hostname and port stored in the __FIREBASE_DEFAULTS__ object\n * for the given product.\n * @returns a pair of hostname and port like `[\"::1\", 4000]` if available\n * @public\n */\nconst getDefaultEmulatorHostnameAndPort = (productName) => {\n const host = getDefaultEmulatorHost(productName);\n if (!host) {\n return undefined;\n }\n const separatorIndex = host.lastIndexOf(':'); // Finding the last since IPv6 addr also has colons.\n if (separatorIndex <= 0 || separatorIndex + 1 === host.length) {\n throw new Error(`Invalid host ${host} with no separate hostname and port!`);\n }\n // eslint-disable-next-line no-restricted-globals\n const port = parseInt(host.substring(separatorIndex + 1), 10);\n if (host[0] === '[') {\n // Bracket-quoted `[ipv6addr]:port` => return \"ipv6addr\" (without brackets).\n return [host.substring(1, separatorIndex - 1), port];\n }\n else {\n return [host.substring(0, separatorIndex), port];\n }\n};\n/**\n * Returns Firebase app config stored in the __FIREBASE_DEFAULTS__ object.\n * @public\n */\nconst getDefaultAppConfig = () => { var _a; return (_a = getDefaults()) === null || _a === void 0 ? void 0 : _a.config; };\n/**\n * Returns an experimental setting on the __FIREBASE_DEFAULTS__ object (properties\n * prefixed by \"_\")\n * @public\n */\nconst getExperimentalSetting = (name) => { var _a; return (_a = getDefaults()) === null || _a === void 0 ? void 0 : _a[`_${name}`]; };\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass Deferred {\n constructor() {\n this.reject = () => { };\n this.resolve = () => { };\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n /**\n * Our API internals are not promisified and cannot because our callback APIs have subtle expectations around\n * invoking promises inline, which Promises are forbidden to do. This method accepts an optional node-style callback\n * and returns a node-style callback which will resolve or reject the Deferred's promise.\n */\n wrapCallback(callback) {\n return (error, value) => {\n if (error) {\n this.reject(error);\n }\n else {\n this.resolve(value);\n }\n if (typeof callback === 'function') {\n // Attaching noop handler just in case developer wasn't expecting\n // promises\n this.promise.catch(() => { });\n // Some of our callbacks don't expect a value and our own tests\n // assert that the parameter length is 1\n if (callback.length === 1) {\n callback(error);\n }\n else {\n callback(error, value);\n }\n }\n };\n }\n}\n\n/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction createMockUserToken(token, projectId) {\n if (token.uid) {\n throw new Error('The \"uid\" field is no longer supported by mockUserToken. Please use \"sub\" instead for Firebase Auth User ID.');\n }\n // Unsecured JWTs use \"none\" as the algorithm.\n const header = {\n alg: 'none',\n type: 'JWT'\n };\n const project = projectId || 'demo-project';\n const iat = token.iat || 0;\n const sub = token.sub || token.user_id;\n if (!sub) {\n throw new Error(\"mockUserToken must contain 'sub' or 'user_id' field!\");\n }\n const payload = Object.assign({ \n // Set all required fields to decent defaults\n iss: `https://securetoken.google.com/${project}`, aud: project, iat, exp: iat + 3600, auth_time: iat, sub, user_id: sub, firebase: {\n sign_in_provider: 'custom',\n identities: {}\n } }, token);\n // Unsecured JWTs use the empty string as a signature.\n const signature = '';\n return [\n base64urlEncodeWithoutPadding(JSON.stringify(header)),\n base64urlEncodeWithoutPadding(JSON.stringify(payload)),\n signature\n ].join('.');\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Returns navigator.userAgent string or '' if it's not defined.\n * @return user agent string\n */\nfunction getUA() {\n if (typeof navigator !== 'undefined' &&\n typeof navigator['userAgent'] === 'string') {\n return navigator['userAgent'];\n }\n else {\n return '';\n }\n}\n/**\n * Detect Cordova / PhoneGap / Ionic frameworks on a mobile device.\n *\n * Deliberately does not rely on checking `file://` URLs (as this fails PhoneGap\n * in the Ripple emulator) nor Cordova `onDeviceReady`, which would normally\n * wait for a callback.\n */\nfunction isMobileCordova() {\n return (typeof window !== 'undefined' &&\n // @ts-ignore Setting up an broadly applicable index signature for Window\n // just to deal with this case would probably be a bad idea.\n !!(window['cordova'] || window['phonegap'] || window['PhoneGap']) &&\n /ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(getUA()));\n}\n/**\n * Detect Node.js.\n *\n * @return true if Node.js environment is detected or specified.\n */\n// Node detection logic from: https://github.com/iliakan/detect-node/\nfunction isNode() {\n var _a;\n const forceEnvironment = (_a = getDefaults()) === null || _a === void 0 ? void 0 : _a.forceEnvironment;\n if (forceEnvironment === 'node') {\n return true;\n }\n else if (forceEnvironment === 'browser') {\n return false;\n }\n try {\n return (Object.prototype.toString.call(global.process) === '[object process]');\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Detect Browser Environment.\n * Note: This will return true for certain test frameworks that are incompletely\n * mimicking a browser, and should not lead to assuming all browser APIs are\n * available.\n */\nfunction isBrowser() {\n return typeof window !== 'undefined' || isWebWorker();\n}\n/**\n * Detect Web Worker context.\n */\nfunction isWebWorker() {\n return (typeof WorkerGlobalScope !== 'undefined' &&\n typeof self !== 'undefined' &&\n self instanceof WorkerGlobalScope);\n}\n/**\n * Detect Cloudflare Worker context.\n */\nfunction isCloudflareWorker() {\n return (typeof navigator !== 'undefined' &&\n navigator.userAgent === 'Cloudflare-Workers');\n}\nfunction isBrowserExtension() {\n const runtime = typeof chrome === 'object'\n ? chrome.runtime\n : typeof browser === 'object'\n ? browser.runtime\n : undefined;\n return typeof runtime === 'object' && runtime.id !== undefined;\n}\n/**\n * Detect React Native.\n *\n * @return true if ReactNative environment is detected.\n */\nfunction isReactNative() {\n return (typeof navigator === 'object' && navigator['product'] === 'ReactNative');\n}\n/** Detects Electron apps. */\nfunction isElectron() {\n return getUA().indexOf('Electron/') >= 0;\n}\n/** Detects Internet Explorer. */\nfunction isIE() {\n const ua = getUA();\n return ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n}\n/** Detects Universal Windows Platform apps. */\nfunction isUWP() {\n return getUA().indexOf('MSAppHost/') >= 0;\n}\n/**\n * Detect whether the current SDK build is the Node version.\n *\n * @return true if it's the Node SDK build.\n */\nfunction isNodeSdk() {\n return CONSTANTS.NODE_CLIENT === true || CONSTANTS.NODE_ADMIN === true;\n}\n/** Returns true if we are running in Safari. */\nfunction isSafari() {\n return (!isNode() &&\n !!navigator.userAgent &&\n navigator.userAgent.includes('Safari') &&\n !navigator.userAgent.includes('Chrome'));\n}\n/**\n * This method checks if indexedDB is supported by current browser/service worker context\n * @return true if indexedDB is supported by current browser/service worker context\n */\nfunction isIndexedDBAvailable() {\n try {\n return typeof indexedDB === 'object';\n }\n catch (e) {\n return false;\n }\n}\n/**\n * This method validates browser/sw context for indexedDB by opening a dummy indexedDB database and reject\n * if errors occur during the database open operation.\n *\n * @throws exception if current browser/sw context can't run idb.open (ex: Safari iframe, Firefox\n * private browsing)\n */\nfunction validateIndexedDBOpenable() {\n return new Promise((resolve, reject) => {\n try {\n let preExist = true;\n const DB_CHECK_NAME = 'validate-browser-context-for-indexeddb-analytics-module';\n const request = self.indexedDB.open(DB_CHECK_NAME);\n request.onsuccess = () => {\n request.result.close();\n // delete database only when it doesn't pre-exist\n if (!preExist) {\n self.indexedDB.deleteDatabase(DB_CHECK_NAME);\n }\n resolve(true);\n };\n request.onupgradeneeded = () => {\n preExist = false;\n };\n request.onerror = () => {\n var _a;\n reject(((_a = request.error) === null || _a === void 0 ? void 0 : _a.message) || '');\n };\n }\n catch (error) {\n reject(error);\n }\n });\n}\n/**\n *\n * This method checks whether cookie is enabled within current browser\n * @return true if cookie is enabled within current browser\n */\nfunction areCookiesEnabled() {\n if (typeof navigator === 'undefined' || !navigator.cookieEnabled) {\n return false;\n }\n return true;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Standardized Firebase Error.\n *\n * Usage:\n *\n * // TypeScript string literals for type-safe codes\n * type Err =\n * 'unknown' |\n * 'object-not-found'\n * ;\n *\n * // Closure enum for type-safe error codes\n * // at-enum {string}\n * var Err = {\n * UNKNOWN: 'unknown',\n * OBJECT_NOT_FOUND: 'object-not-found',\n * }\n *\n * let errors: Map = {\n * 'generic-error': \"Unknown error\",\n * 'file-not-found': \"Could not find file: {$file}\",\n * };\n *\n * // Type-safe function - must pass a valid error code as param.\n * let error = new ErrorFactory('service', 'Service', errors);\n *\n * ...\n * throw error.create(Err.GENERIC);\n * ...\n * throw error.create(Err.FILE_NOT_FOUND, {'file': fileName});\n * ...\n * // Service: Could not file file: foo.txt (service/file-not-found).\n *\n * catch (e) {\n * assert(e.message === \"Could not find file: foo.txt.\");\n * if ((e as FirebaseError)?.code === 'service/file-not-found') {\n * console.log(\"Could not read file: \" + e['file']);\n * }\n * }\n */\nconst ERROR_NAME = 'FirebaseError';\n// Based on code from:\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Custom_Error_Types\nclass FirebaseError extends Error {\n constructor(\n /** The error code for this error. */\n code, message, \n /** Custom data for this error. */\n customData) {\n super(message);\n this.code = code;\n this.customData = customData;\n /** The custom name for all FirebaseErrors. */\n this.name = ERROR_NAME;\n // Fix For ES5\n // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n // TODO(dlarocque): Replace this with `new.target`: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-2.html#support-for-newtarget\n // which we can now use since we no longer target ES5.\n Object.setPrototypeOf(this, FirebaseError.prototype);\n // Maintains proper stack trace for where our error was thrown.\n // Only available on V8.\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, ErrorFactory.prototype.create);\n }\n }\n}\nclass ErrorFactory {\n constructor(service, serviceName, errors) {\n this.service = service;\n this.serviceName = serviceName;\n this.errors = errors;\n }\n create(code, ...data) {\n const customData = data[0] || {};\n const fullCode = `${this.service}/${code}`;\n const template = this.errors[code];\n const message = template ? replaceTemplate(template, customData) : 'Error';\n // Service Name: Error message (service/code).\n const fullMessage = `${this.serviceName}: ${message} (${fullCode}).`;\n const error = new FirebaseError(fullCode, fullMessage, customData);\n return error;\n }\n}\nfunction replaceTemplate(template, data) {\n return template.replace(PATTERN, (_, key) => {\n const value = data[key];\n return value != null ? String(value) : `<${key}?>`;\n });\n}\nconst PATTERN = /\\{\\$([^}]+)}/g;\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Evaluates a JSON string into a javascript object.\n *\n * @param {string} str A string containing JSON.\n * @return {*} The javascript object representing the specified JSON.\n */\nfunction jsonEval(str) {\n return JSON.parse(str);\n}\n/**\n * Returns JSON representing a javascript object.\n * @param {*} data JavaScript object to be stringified.\n * @return {string} The JSON contents of the object.\n */\nfunction stringify(data) {\n return JSON.stringify(data);\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Decodes a Firebase auth. token into constituent parts.\n *\n * Notes:\n * - May return with invalid / incomplete claims if there's no native base64 decoding support.\n * - Doesn't check if the token is actually valid.\n */\nconst decode = function (token) {\n let header = {}, claims = {}, data = {}, signature = '';\n try {\n const parts = token.split('.');\n header = jsonEval(base64Decode(parts[0]) || '');\n claims = jsonEval(base64Decode(parts[1]) || '');\n signature = parts[2];\n data = claims['d'] || {};\n delete claims['d'];\n }\n catch (e) { }\n return {\n header,\n claims,\n data,\n signature\n };\n};\n/**\n * Decodes a Firebase auth. token and checks the validity of its time-based claims. Will return true if the\n * token is within the time window authorized by the 'nbf' (not-before) and 'iat' (issued-at) claims.\n *\n * Notes:\n * - May return a false negative if there's no native base64 decoding support.\n * - Doesn't check if the token is actually valid.\n */\nconst isValidTimestamp = function (token) {\n const claims = decode(token).claims;\n const now = Math.floor(new Date().getTime() / 1000);\n let validSince = 0, validUntil = 0;\n if (typeof claims === 'object') {\n if (claims.hasOwnProperty('nbf')) {\n validSince = claims['nbf'];\n }\n else if (claims.hasOwnProperty('iat')) {\n validSince = claims['iat'];\n }\n if (claims.hasOwnProperty('exp')) {\n validUntil = claims['exp'];\n }\n else {\n // token will expire after 24h by default\n validUntil = validSince + 86400;\n }\n }\n return (!!now &&\n !!validSince &&\n !!validUntil &&\n now >= validSince &&\n now <= validUntil);\n};\n/**\n * Decodes a Firebase auth. token and returns its issued at time if valid, null otherwise.\n *\n * Notes:\n * - May return null if there's no native base64 decoding support.\n * - Doesn't check if the token is actually valid.\n */\nconst issuedAtTime = function (token) {\n const claims = decode(token).claims;\n if (typeof claims === 'object' && claims.hasOwnProperty('iat')) {\n return claims['iat'];\n }\n return null;\n};\n/**\n * Decodes a Firebase auth. token and checks the validity of its format. Expects a valid issued-at time.\n *\n * Notes:\n * - May return a false negative if there's no native base64 decoding support.\n * - Doesn't check if the token is actually valid.\n */\nconst isValidFormat = function (token) {\n const decoded = decode(token), claims = decoded.claims;\n return !!claims && typeof claims === 'object' && claims.hasOwnProperty('iat');\n};\n/**\n * Attempts to peer into an auth token and determine if it's an admin auth token by looking at the claims portion.\n *\n * Notes:\n * - May return a false negative if there's no native base64 decoding support.\n * - Doesn't check if the token is actually valid.\n */\nconst isAdmin = function (token) {\n const claims = decode(token).claims;\n return typeof claims === 'object' && claims['admin'] === true;\n};\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction contains(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\nfunction safeGet(obj, key) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n return obj[key];\n }\n else {\n return undefined;\n }\n}\nfunction isEmpty(obj) {\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n return false;\n }\n }\n return true;\n}\nfunction map(obj, fn, contextObj) {\n const res = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n res[key] = fn.call(contextObj, obj[key], key, obj);\n }\n }\n return res;\n}\n/**\n * Deep equal two objects. Support Arrays and Objects.\n */\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n for (const k of aKeys) {\n if (!bKeys.includes(k)) {\n return false;\n }\n const aProp = a[k];\n const bProp = b[k];\n if (isObject(aProp) && isObject(bProp)) {\n if (!deepEqual(aProp, bProp)) {\n return false;\n }\n }\n else if (aProp !== bProp) {\n return false;\n }\n }\n for (const k of bKeys) {\n if (!aKeys.includes(k)) {\n return false;\n }\n }\n return true;\n}\nfunction isObject(thing) {\n return thing !== null && typeof thing === 'object';\n}\n\n/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Rejects if the given promise doesn't resolve in timeInMS milliseconds.\n * @internal\n */\nfunction promiseWithTimeout(promise, timeInMS = 2000) {\n const deferredPromise = new Deferred();\n setTimeout(() => deferredPromise.reject('timeout!'), timeInMS);\n promise.then(deferredPromise.resolve, deferredPromise.reject);\n return deferredPromise.promise;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Returns a querystring-formatted string (e.g. &arg=val&arg2=val2) from a\n * params object (e.g. {arg: 'val', arg2: 'val2'})\n * Note: You must prepend it with ? when adding it to a URL.\n */\nfunction querystring(querystringParams) {\n const params = [];\n for (const [key, value] of Object.entries(querystringParams)) {\n if (Array.isArray(value)) {\n value.forEach(arrayVal => {\n params.push(encodeURIComponent(key) + '=' + encodeURIComponent(arrayVal));\n });\n }\n else {\n params.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\n }\n }\n return params.length ? '&' + params.join('&') : '';\n}\n/**\n * Decodes a querystring (e.g. ?arg=val&arg2=val2) into a params object\n * (e.g. {arg: 'val', arg2: 'val2'})\n */\nfunction querystringDecode(querystring) {\n const obj = {};\n const tokens = querystring.replace(/^\\?/, '').split('&');\n tokens.forEach(token => {\n if (token) {\n const [key, value] = token.split('=');\n obj[decodeURIComponent(key)] = decodeURIComponent(value);\n }\n });\n return obj;\n}\n/**\n * Extract the query string part of a URL, including the leading question mark (if present).\n */\nfunction extractQuerystring(url) {\n const queryStart = url.indexOf('?');\n if (!queryStart) {\n return '';\n }\n const fragmentStart = url.indexOf('#', queryStart);\n return url.substring(queryStart, fragmentStart > 0 ? fragmentStart : undefined);\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview SHA-1 cryptographic hash.\n * Variable names follow the notation in FIPS PUB 180-3:\n * http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf.\n *\n * Usage:\n * var sha1 = new sha1();\n * sha1.update(bytes);\n * var hash = sha1.digest();\n *\n * Performance:\n * Chrome 23: ~400 Mbit/s\n * Firefox 16: ~250 Mbit/s\n *\n */\n/**\n * SHA-1 cryptographic hash constructor.\n *\n * The properties declared here are discussed in the above algorithm document.\n * @constructor\n * @final\n * @struct\n */\nclass Sha1 {\n constructor() {\n /**\n * Holds the previous values of accumulated variables a-e in the compress_\n * function.\n * @private\n */\n this.chain_ = [];\n /**\n * A buffer holding the partially computed hash result.\n * @private\n */\n this.buf_ = [];\n /**\n * An array of 80 bytes, each a part of the message to be hashed. Referred to\n * as the message schedule in the docs.\n * @private\n */\n this.W_ = [];\n /**\n * Contains data needed to pad messages less than 64 bytes.\n * @private\n */\n this.pad_ = [];\n /**\n * @private {number}\n */\n this.inbuf_ = 0;\n /**\n * @private {number}\n */\n this.total_ = 0;\n this.blockSize = 512 / 8;\n this.pad_[0] = 128;\n for (let i = 1; i < this.blockSize; ++i) {\n this.pad_[i] = 0;\n }\n this.reset();\n }\n reset() {\n this.chain_[0] = 0x67452301;\n this.chain_[1] = 0xefcdab89;\n this.chain_[2] = 0x98badcfe;\n this.chain_[3] = 0x10325476;\n this.chain_[4] = 0xc3d2e1f0;\n this.inbuf_ = 0;\n this.total_ = 0;\n }\n /**\n * Internal compress helper function.\n * @param buf Block to compress.\n * @param offset Offset of the block in the buffer.\n * @private\n */\n compress_(buf, offset) {\n if (!offset) {\n offset = 0;\n }\n const W = this.W_;\n // get 16 big endian words\n if (typeof buf === 'string') {\n for (let i = 0; i < 16; i++) {\n // TODO(user): [bug 8140122] Recent versions of Safari for Mac OS and iOS\n // have a bug that turns the post-increment ++ operator into pre-increment\n // during JIT compilation. We have code that depends heavily on SHA-1 for\n // correctness and which is affected by this bug, so I've removed all uses\n // of post-increment ++ in which the result value is used. We can revert\n // this change once the Safari bug\n // (https://bugs.webkit.org/show_bug.cgi?id=109036) has been fixed and\n // most clients have been updated.\n W[i] =\n (buf.charCodeAt(offset) << 24) |\n (buf.charCodeAt(offset + 1) << 16) |\n (buf.charCodeAt(offset + 2) << 8) |\n buf.charCodeAt(offset + 3);\n offset += 4;\n }\n }\n else {\n for (let i = 0; i < 16; i++) {\n W[i] =\n (buf[offset] << 24) |\n (buf[offset + 1] << 16) |\n (buf[offset + 2] << 8) |\n buf[offset + 3];\n offset += 4;\n }\n }\n // expand to 80 words\n for (let i = 16; i < 80; i++) {\n const t = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n W[i] = ((t << 1) | (t >>> 31)) & 0xffffffff;\n }\n let a = this.chain_[0];\n let b = this.chain_[1];\n let c = this.chain_[2];\n let d = this.chain_[3];\n let e = this.chain_[4];\n let f, k;\n // TODO(user): Try to unroll this loop to speed up the computation.\n for (let i = 0; i < 80; i++) {\n if (i < 40) {\n if (i < 20) {\n f = d ^ (b & (c ^ d));\n k = 0x5a827999;\n }\n else {\n f = b ^ c ^ d;\n k = 0x6ed9eba1;\n }\n }\n else {\n if (i < 60) {\n f = (b & c) | (d & (b | c));\n k = 0x8f1bbcdc;\n }\n else {\n f = b ^ c ^ d;\n k = 0xca62c1d6;\n }\n }\n const t = (((a << 5) | (a >>> 27)) + f + e + k + W[i]) & 0xffffffff;\n e = d;\n d = c;\n c = ((b << 30) | (b >>> 2)) & 0xffffffff;\n b = a;\n a = t;\n }\n this.chain_[0] = (this.chain_[0] + a) & 0xffffffff;\n this.chain_[1] = (this.chain_[1] + b) & 0xffffffff;\n this.chain_[2] = (this.chain_[2] + c) & 0xffffffff;\n this.chain_[3] = (this.chain_[3] + d) & 0xffffffff;\n this.chain_[4] = (this.chain_[4] + e) & 0xffffffff;\n }\n update(bytes, length) {\n // TODO(johnlenz): tighten the function signature and remove this check\n if (bytes == null) {\n return;\n }\n if (length === undefined) {\n length = bytes.length;\n }\n const lengthMinusBlock = length - this.blockSize;\n let n = 0;\n // Using local instead of member variables gives ~5% speedup on Firefox 16.\n const buf = this.buf_;\n let inbuf = this.inbuf_;\n // The outer while loop should execute at most twice.\n while (n < length) {\n // When we have no data in the block to top up, we can directly process the\n // input buffer (assuming it contains sufficient data). This gives ~25%\n // speedup on Chrome 23 and ~15% speedup on Firefox 16, but requires that\n // the data is provided in large chunks (or in multiples of 64 bytes).\n if (inbuf === 0) {\n while (n <= lengthMinusBlock) {\n this.compress_(bytes, n);\n n += this.blockSize;\n }\n }\n if (typeof bytes === 'string') {\n while (n < length) {\n buf[inbuf] = bytes.charCodeAt(n);\n ++inbuf;\n ++n;\n if (inbuf === this.blockSize) {\n this.compress_(buf);\n inbuf = 0;\n // Jump to the outer loop so we use the full-block optimization.\n break;\n }\n }\n }\n else {\n while (n < length) {\n buf[inbuf] = bytes[n];\n ++inbuf;\n ++n;\n if (inbuf === this.blockSize) {\n this.compress_(buf);\n inbuf = 0;\n // Jump to the outer loop so we use the full-block optimization.\n break;\n }\n }\n }\n }\n this.inbuf_ = inbuf;\n this.total_ += length;\n }\n /** @override */\n digest() {\n const digest = [];\n let totalBits = this.total_ * 8;\n // Add pad 0x80 0x00*.\n if (this.inbuf_ < 56) {\n this.update(this.pad_, 56 - this.inbuf_);\n }\n else {\n this.update(this.pad_, this.blockSize - (this.inbuf_ - 56));\n }\n // Add # bits.\n for (let i = this.blockSize - 1; i >= 56; i--) {\n this.buf_[i] = totalBits & 255;\n totalBits /= 256; // Don't use bit-shifting here!\n }\n this.compress_(this.buf_);\n let n = 0;\n for (let i = 0; i < 5; i++) {\n for (let j = 24; j >= 0; j -= 8) {\n digest[n] = (this.chain_[i] >> j) & 255;\n ++n;\n }\n }\n return digest;\n }\n}\n\n/**\n * Helper to make a Subscribe function (just like Promise helps make a\n * Thenable).\n *\n * @param executor Function which can make calls to a single Observer\n * as a proxy.\n * @param onNoObservers Callback when count of Observers goes to zero.\n */\nfunction createSubscribe(executor, onNoObservers) {\n const proxy = new ObserverProxy(executor, onNoObservers);\n return proxy.subscribe.bind(proxy);\n}\n/**\n * Implement fan-out for any number of Observers attached via a subscribe\n * function.\n */\nclass ObserverProxy {\n /**\n * @param executor Function which can make calls to a single Observer\n * as a proxy.\n * @param onNoObservers Callback when count of Observers goes to zero.\n */\n constructor(executor, onNoObservers) {\n this.observers = [];\n this.unsubscribes = [];\n this.observerCount = 0;\n // Micro-task scheduling by calling task.then().\n this.task = Promise.resolve();\n this.finalized = false;\n this.onNoObservers = onNoObservers;\n // Call the executor asynchronously so subscribers that are called\n // synchronously after the creation of the subscribe function\n // can still receive the very first value generated in the executor.\n this.task\n .then(() => {\n executor(this);\n })\n .catch(e => {\n this.error(e);\n });\n }\n next(value) {\n this.forEachObserver((observer) => {\n observer.next(value);\n });\n }\n error(error) {\n this.forEachObserver((observer) => {\n observer.error(error);\n });\n this.close(error);\n }\n complete() {\n this.forEachObserver((observer) => {\n observer.complete();\n });\n this.close();\n }\n /**\n * Subscribe function that can be used to add an Observer to the fan-out list.\n *\n * - We require that no event is sent to a subscriber synchronously to their\n * call to subscribe().\n */\n subscribe(nextOrObserver, error, complete) {\n let observer;\n if (nextOrObserver === undefined &&\n error === undefined &&\n complete === undefined) {\n throw new Error('Missing Observer.');\n }\n // Assemble an Observer object when passed as callback functions.\n if (implementsAnyMethods(nextOrObserver, [\n 'next',\n 'error',\n 'complete'\n ])) {\n observer = nextOrObserver;\n }\n else {\n observer = {\n next: nextOrObserver,\n error,\n complete\n };\n }\n if (observer.next === undefined) {\n observer.next = noop;\n }\n if (observer.error === undefined) {\n observer.error = noop;\n }\n if (observer.complete === undefined) {\n observer.complete = noop;\n }\n const unsub = this.unsubscribeOne.bind(this, this.observers.length);\n // Attempt to subscribe to a terminated Observable - we\n // just respond to the Observer with the final error or complete\n // event.\n if (this.finalized) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.task.then(() => {\n try {\n if (this.finalError) {\n observer.error(this.finalError);\n }\n else {\n observer.complete();\n }\n }\n catch (e) {\n // nothing\n }\n return;\n });\n }\n this.observers.push(observer);\n return unsub;\n }\n // Unsubscribe is synchronous - we guarantee that no events are sent to\n // any unsubscribed Observer.\n unsubscribeOne(i) {\n if (this.observers === undefined || this.observers[i] === undefined) {\n return;\n }\n delete this.observers[i];\n this.observerCount -= 1;\n if (this.observerCount === 0 && this.onNoObservers !== undefined) {\n this.onNoObservers(this);\n }\n }\n forEachObserver(fn) {\n if (this.finalized) {\n // Already closed by previous event....just eat the additional values.\n return;\n }\n // Since sendOne calls asynchronously - there is no chance that\n // this.observers will become undefined.\n for (let i = 0; i < this.observers.length; i++) {\n this.sendOne(i, fn);\n }\n }\n // Call the Observer via one of it's callback function. We are careful to\n // confirm that the observe has not been unsubscribed since this asynchronous\n // function had been queued.\n sendOne(i, fn) {\n // Execute the callback asynchronously\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.task.then(() => {\n if (this.observers !== undefined && this.observers[i] !== undefined) {\n try {\n fn(this.observers[i]);\n }\n catch (e) {\n // Ignore exceptions raised in Observers or missing methods of an\n // Observer.\n // Log error to console. b/31404806\n if (typeof console !== 'undefined' && console.error) {\n console.error(e);\n }\n }\n }\n });\n }\n close(err) {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n if (err !== undefined) {\n this.finalError = err;\n }\n // Proxy is no longer needed - garbage collect references\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.task.then(() => {\n this.observers = undefined;\n this.onNoObservers = undefined;\n });\n }\n}\n/** Turn synchronous function into one called asynchronously. */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction async(fn, onError) {\n return (...args) => {\n Promise.resolve(true)\n .then(() => {\n fn(...args);\n })\n .catch((error) => {\n if (onError) {\n onError(error);\n }\n });\n };\n}\n/**\n * Return true if the object passed in implements any of the named methods.\n */\nfunction implementsAnyMethods(obj, methods) {\n if (typeof obj !== 'object' || obj === null) {\n return false;\n }\n for (const method of methods) {\n if (method in obj && typeof obj[method] === 'function') {\n return true;\n }\n }\n return false;\n}\nfunction noop() {\n // do nothing\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Check to make sure the appropriate number of arguments are provided for a public function.\n * Throws an error if it fails.\n *\n * @param fnName The function name\n * @param minCount The minimum number of arguments to allow for the function call\n * @param maxCount The maximum number of argument to allow for the function call\n * @param argCount The actual number of arguments provided.\n */\nconst validateArgCount = function (fnName, minCount, maxCount, argCount) {\n let argError;\n if (argCount < minCount) {\n argError = 'at least ' + minCount;\n }\n else if (argCount > maxCount) {\n argError = maxCount === 0 ? 'none' : 'no more than ' + maxCount;\n }\n if (argError) {\n const error = fnName +\n ' failed: Was called with ' +\n argCount +\n (argCount === 1 ? ' argument.' : ' arguments.') +\n ' Expects ' +\n argError +\n '.';\n throw new Error(error);\n }\n};\n/**\n * Generates a string to prefix an error message about failed argument validation\n *\n * @param fnName The function name\n * @param argName The name of the argument\n * @return The prefix to add to the error thrown for validation.\n */\nfunction errorPrefix(fnName, argName) {\n return `${fnName} failed: ${argName} argument `;\n}\n/**\n * @param fnName\n * @param argumentNumber\n * @param namespace\n * @param optional\n */\nfunction validateNamespace(fnName, namespace, optional) {\n if (optional && !namespace) {\n return;\n }\n if (typeof namespace !== 'string') {\n //TODO: I should do more validation here. We only allow certain chars in namespaces.\n throw new Error(errorPrefix(fnName, 'namespace') + 'must be a valid firebase namespace.');\n }\n}\nfunction validateCallback(fnName, argumentName, \n// eslint-disable-next-line @typescript-eslint/ban-types\ncallback, optional) {\n if (optional && !callback) {\n return;\n }\n if (typeof callback !== 'function') {\n throw new Error(errorPrefix(fnName, argumentName) + 'must be a valid function.');\n }\n}\nfunction validateContextObject(fnName, argumentName, context, optional) {\n if (optional && !context) {\n return;\n }\n if (typeof context !== 'object' || context === null) {\n throw new Error(errorPrefix(fnName, argumentName) + 'must be a valid context object.');\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Code originally came from goog.crypt.stringToUtf8ByteArray, but for some reason they\n// automatically replaced '\\r\\n' with '\\n', and they didn't handle surrogate pairs,\n// so it's been modified.\n// Note that not all Unicode characters appear as single characters in JavaScript strings.\n// fromCharCode returns the UTF-16 encoding of a character - so some Unicode characters\n// use 2 characters in JavaScript. All 4-byte UTF-8 characters begin with a first\n// character in the range 0xD800 - 0xDBFF (the first character of a so-called surrogate\n// pair).\n// See http://www.ecma-international.org/ecma-262/5.1/#sec-15.1.3\n/**\n * @param {string} str\n * @return {Array}\n */\nconst stringToByteArray = function (str) {\n const out = [];\n let p = 0;\n for (let i = 0; i < str.length; i++) {\n let c = str.charCodeAt(i);\n // Is this the lead surrogate in a surrogate pair?\n if (c >= 0xd800 && c <= 0xdbff) {\n const high = c - 0xd800; // the high 10 bits.\n i++;\n assert(i < str.length, 'Surrogate pair missing trail surrogate.');\n const low = str.charCodeAt(i) - 0xdc00; // the low 10 bits.\n c = 0x10000 + (high << 10) + low;\n }\n if (c < 128) {\n out[p++] = c;\n }\n else if (c < 2048) {\n out[p++] = (c >> 6) | 192;\n out[p++] = (c & 63) | 128;\n }\n else if (c < 65536) {\n out[p++] = (c >> 12) | 224;\n out[p++] = ((c >> 6) & 63) | 128;\n out[p++] = (c & 63) | 128;\n }\n else {\n out[p++] = (c >> 18) | 240;\n out[p++] = ((c >> 12) & 63) | 128;\n out[p++] = ((c >> 6) & 63) | 128;\n out[p++] = (c & 63) | 128;\n }\n }\n return out;\n};\n/**\n * Calculate length without actually converting; useful for doing cheaper validation.\n * @param {string} str\n * @return {number}\n */\nconst stringLength = function (str) {\n let p = 0;\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c < 128) {\n p++;\n }\n else if (c < 2048) {\n p += 2;\n }\n else if (c >= 0xd800 && c <= 0xdbff) {\n // Lead surrogate of a surrogate pair. The pair together will take 4 bytes to represent.\n p += 4;\n i++; // skip trail surrogate.\n }\n else {\n p += 3;\n }\n }\n return p;\n};\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * The amount of milliseconds to exponentially increase.\n */\nconst DEFAULT_INTERVAL_MILLIS = 1000;\n/**\n * The factor to backoff by.\n * Should be a number greater than 1.\n */\nconst DEFAULT_BACKOFF_FACTOR = 2;\n/**\n * The maximum milliseconds to increase to.\n *\n *

Visible for testing\n */\nconst MAX_VALUE_MILLIS = 4 * 60 * 60 * 1000; // Four hours, like iOS and Android.\n/**\n * The percentage of backoff time to randomize by.\n * See\n * http://go/safe-client-behavior#step-1-determine-the-appropriate-retry-interval-to-handle-spike-traffic\n * for context.\n *\n *

Visible for testing\n */\nconst RANDOM_FACTOR = 0.5;\n/**\n * Based on the backoff method from\n * https://github.com/google/closure-library/blob/master/closure/goog/math/exponentialbackoff.js.\n * Extracted here so we don't need to pass metadata and a stateful ExponentialBackoff object around.\n */\nfunction calculateBackoffMillis(backoffCount, intervalMillis = DEFAULT_INTERVAL_MILLIS, backoffFactor = DEFAULT_BACKOFF_FACTOR) {\n // Calculates an exponentially increasing value.\n // Deviation: calculates value from count and a constant interval, so we only need to save value\n // and count to restore state.\n const currBaseValue = intervalMillis * Math.pow(backoffFactor, backoffCount);\n // A random \"fuzz\" to avoid waves of retries.\n // Deviation: randomFactor is required.\n const randomWait = Math.round(\n // A fraction of the backoff value to add/subtract.\n // Deviation: changes multiplication order to improve readability.\n RANDOM_FACTOR *\n currBaseValue *\n // A random float (rounded to int by Math.round above) in the range [-1, 1]. Determines\n // if we add or subtract.\n (Math.random() - 0.5) *\n 2);\n // Limits backoff to max to avoid effectively permanent backoff.\n return Math.min(MAX_VALUE_MILLIS, currBaseValue + randomWait);\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Provide English ordinal letters after a number\n */\nfunction ordinal(i) {\n if (!Number.isFinite(i)) {\n return `${i}`;\n }\n return i + indicator(i);\n}\nfunction indicator(i) {\n i = Math.abs(i);\n const cent = i % 100;\n if (cent >= 10 && cent <= 20) {\n return 'th';\n }\n const dec = i % 10;\n if (dec === 1) {\n return 'st';\n }\n if (dec === 2) {\n return 'nd';\n }\n if (dec === 3) {\n return 'rd';\n }\n return 'th';\n}\n\n/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction getModularInstance(service) {\n if (service && service._delegate) {\n return service._delegate;\n }\n else {\n return service;\n }\n}\n\nexport { CONSTANTS, DecodeBase64StringError, Deferred, ErrorFactory, FirebaseError, MAX_VALUE_MILLIS, RANDOM_FACTOR, Sha1, areCookiesEnabled, assert, assertionError, async, base64, base64Decode, base64Encode, base64urlEncodeWithoutPadding, calculateBackoffMillis, contains, createMockUserToken, createSubscribe, decode, deepCopy, deepEqual, deepExtend, errorPrefix, extractQuerystring, getDefaultAppConfig, getDefaultEmulatorHost, getDefaultEmulatorHostnameAndPort, getDefaults, getExperimentalSetting, getGlobal, getModularInstance, getUA, isAdmin, isBrowser, isBrowserExtension, isCloudflareWorker, isElectron, isEmpty, isIE, isIndexedDBAvailable, isMobileCordova, isNode, isNodeSdk, isReactNative, isSafari, isUWP, isValidFormat, isValidTimestamp, isWebWorker, issuedAtTime, jsonEval, map, ordinal, promiseWithTimeout, querystring, querystringDecode, safeGet, stringLength, stringToByteArray, stringify, validateArgCount, validateCallback, validateContextObject, validateIndexedDBOpenable, validateNamespace };\n//# sourceMappingURL=index.esm2017.js.map\n","import { Deferred } from '@firebase/util';\n\n/**\n * Component for service name T, e.g. `auth`, `auth-internal`\n */\nclass Component {\n /**\n *\n * @param name The public service name, e.g. app, auth, firestore, database\n * @param instanceFactory Service factory responsible for creating the public interface\n * @param type whether the service provided by the component is public or private\n */\n constructor(name, instanceFactory, type) {\n this.name = name;\n this.instanceFactory = instanceFactory;\n this.type = type;\n this.multipleInstances = false;\n /**\n * Properties to be added to the service namespace\n */\n this.serviceProps = {};\n this.instantiationMode = \"LAZY\" /* InstantiationMode.LAZY */;\n this.onInstanceCreated = null;\n }\n setInstantiationMode(mode) {\n this.instantiationMode = mode;\n return this;\n }\n setMultipleInstances(multipleInstances) {\n this.multipleInstances = multipleInstances;\n return this;\n }\n setServiceProps(props) {\n this.serviceProps = props;\n return this;\n }\n setInstanceCreatedCallback(callback) {\n this.onInstanceCreated = callback;\n return this;\n }\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst DEFAULT_ENTRY_NAME = '[DEFAULT]';\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Provider for instance for service name T, e.g. 'auth', 'auth-internal'\n * NameServiceMapping[T] is an alias for the type of the instance\n */\nclass Provider {\n constructor(name, container) {\n this.name = name;\n this.container = container;\n this.component = null;\n this.instances = new Map();\n this.instancesDeferred = new Map();\n this.instancesOptions = new Map();\n this.onInitCallbacks = new Map();\n }\n /**\n * @param identifier A provider can provide multiple instances of a service\n * if this.component.multipleInstances is true.\n */\n get(identifier) {\n // if multipleInstances is not supported, use the default name\n const normalizedIdentifier = this.normalizeInstanceIdentifier(identifier);\n if (!this.instancesDeferred.has(normalizedIdentifier)) {\n const deferred = new Deferred();\n this.instancesDeferred.set(normalizedIdentifier, deferred);\n if (this.isInitialized(normalizedIdentifier) ||\n this.shouldAutoInitialize()) {\n // initialize the service if it can be auto-initialized\n try {\n const instance = this.getOrInitializeService({\n instanceIdentifier: normalizedIdentifier\n });\n if (instance) {\n deferred.resolve(instance);\n }\n }\n catch (e) {\n // when the instance factory throws an exception during get(), it should not cause\n // a fatal error. We just return the unresolved promise in this case.\n }\n }\n }\n return this.instancesDeferred.get(normalizedIdentifier).promise;\n }\n getImmediate(options) {\n var _a;\n // if multipleInstances is not supported, use the default name\n const normalizedIdentifier = this.normalizeInstanceIdentifier(options === null || options === void 0 ? void 0 : options.identifier);\n const optional = (_a = options === null || options === void 0 ? void 0 : options.optional) !== null && _a !== void 0 ? _a : false;\n if (this.isInitialized(normalizedIdentifier) ||\n this.shouldAutoInitialize()) {\n try {\n return this.getOrInitializeService({\n instanceIdentifier: normalizedIdentifier\n });\n }\n catch (e) {\n if (optional) {\n return null;\n }\n else {\n throw e;\n }\n }\n }\n else {\n // In case a component is not initialized and should/cannot be auto-initialized at the moment, return null if the optional flag is set, or throw\n if (optional) {\n return null;\n }\n else {\n throw Error(`Service ${this.name} is not available`);\n }\n }\n }\n getComponent() {\n return this.component;\n }\n setComponent(component) {\n if (component.name !== this.name) {\n throw Error(`Mismatching Component ${component.name} for Provider ${this.name}.`);\n }\n if (this.component) {\n throw Error(`Component for ${this.name} has already been provided`);\n }\n this.component = component;\n // return early without attempting to initialize the component if the component requires explicit initialization (calling `Provider.initialize()`)\n if (!this.shouldAutoInitialize()) {\n return;\n }\n // if the service is eager, initialize the default instance\n if (isComponentEager(component)) {\n try {\n this.getOrInitializeService({ instanceIdentifier: DEFAULT_ENTRY_NAME });\n }\n catch (e) {\n // when the instance factory for an eager Component throws an exception during the eager\n // initialization, it should not cause a fatal error.\n // TODO: Investigate if we need to make it configurable, because some component may want to cause\n // a fatal error in this case?\n }\n }\n // Create service instances for the pending promises and resolve them\n // NOTE: if this.multipleInstances is false, only the default instance will be created\n // and all promises with resolve with it regardless of the identifier.\n for (const [instanceIdentifier, instanceDeferred] of this.instancesDeferred.entries()) {\n const normalizedIdentifier = this.normalizeInstanceIdentifier(instanceIdentifier);\n try {\n // `getOrInitializeService()` should always return a valid instance since a component is guaranteed. use ! to make typescript happy.\n const instance = this.getOrInitializeService({\n instanceIdentifier: normalizedIdentifier\n });\n instanceDeferred.resolve(instance);\n }\n catch (e) {\n // when the instance factory throws an exception, it should not cause\n // a fatal error. We just leave the promise unresolved.\n }\n }\n }\n clearInstance(identifier = DEFAULT_ENTRY_NAME) {\n this.instancesDeferred.delete(identifier);\n this.instancesOptions.delete(identifier);\n this.instances.delete(identifier);\n }\n // app.delete() will call this method on every provider to delete the services\n // TODO: should we mark the provider as deleted?\n async delete() {\n const services = Array.from(this.instances.values());\n await Promise.all([\n ...services\n .filter(service => 'INTERNAL' in service) // legacy services\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .map(service => service.INTERNAL.delete()),\n ...services\n .filter(service => '_delete' in service) // modularized services\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .map(service => service._delete())\n ]);\n }\n isComponentSet() {\n return this.component != null;\n }\n isInitialized(identifier = DEFAULT_ENTRY_NAME) {\n return this.instances.has(identifier);\n }\n getOptions(identifier = DEFAULT_ENTRY_NAME) {\n return this.instancesOptions.get(identifier) || {};\n }\n initialize(opts = {}) {\n const { options = {} } = opts;\n const normalizedIdentifier = this.normalizeInstanceIdentifier(opts.instanceIdentifier);\n if (this.isInitialized(normalizedIdentifier)) {\n throw Error(`${this.name}(${normalizedIdentifier}) has already been initialized`);\n }\n if (!this.isComponentSet()) {\n throw Error(`Component ${this.name} has not been registered yet`);\n }\n const instance = this.getOrInitializeService({\n instanceIdentifier: normalizedIdentifier,\n options\n });\n // resolve any pending promise waiting for the service instance\n for (const [instanceIdentifier, instanceDeferred] of this.instancesDeferred.entries()) {\n const normalizedDeferredIdentifier = this.normalizeInstanceIdentifier(instanceIdentifier);\n if (normalizedIdentifier === normalizedDeferredIdentifier) {\n instanceDeferred.resolve(instance);\n }\n }\n return instance;\n }\n /**\n *\n * @param callback - a function that will be invoked after the provider has been initialized by calling provider.initialize().\n * The function is invoked SYNCHRONOUSLY, so it should not execute any longrunning tasks in order to not block the program.\n *\n * @param identifier An optional instance identifier\n * @returns a function to unregister the callback\n */\n onInit(callback, identifier) {\n var _a;\n const normalizedIdentifier = this.normalizeInstanceIdentifier(identifier);\n const existingCallbacks = (_a = this.onInitCallbacks.get(normalizedIdentifier)) !== null && _a !== void 0 ? _a : new Set();\n existingCallbacks.add(callback);\n this.onInitCallbacks.set(normalizedIdentifier, existingCallbacks);\n const existingInstance = this.instances.get(normalizedIdentifier);\n if (existingInstance) {\n callback(existingInstance, normalizedIdentifier);\n }\n return () => {\n existingCallbacks.delete(callback);\n };\n }\n /**\n * Invoke onInit callbacks synchronously\n * @param instance the service instance`\n */\n invokeOnInitCallbacks(instance, identifier) {\n const callbacks = this.onInitCallbacks.get(identifier);\n if (!callbacks) {\n return;\n }\n for (const callback of callbacks) {\n try {\n callback(instance, identifier);\n }\n catch (_a) {\n // ignore errors in the onInit callback\n }\n }\n }\n getOrInitializeService({ instanceIdentifier, options = {} }) {\n let instance = this.instances.get(instanceIdentifier);\n if (!instance && this.component) {\n instance = this.component.instanceFactory(this.container, {\n instanceIdentifier: normalizeIdentifierForFactory(instanceIdentifier),\n options\n });\n this.instances.set(instanceIdentifier, instance);\n this.instancesOptions.set(instanceIdentifier, options);\n /**\n * Invoke onInit listeners.\n * Note this.component.onInstanceCreated is different, which is used by the component creator,\n * while onInit listeners are registered by consumers of the provider.\n */\n this.invokeOnInitCallbacks(instance, instanceIdentifier);\n /**\n * Order is important\n * onInstanceCreated() should be called after this.instances.set(instanceIdentifier, instance); which\n * makes `isInitialized()` return true.\n */\n if (this.component.onInstanceCreated) {\n try {\n this.component.onInstanceCreated(this.container, instanceIdentifier, instance);\n }\n catch (_a) {\n // ignore errors in the onInstanceCreatedCallback\n }\n }\n }\n return instance || null;\n }\n normalizeInstanceIdentifier(identifier = DEFAULT_ENTRY_NAME) {\n if (this.component) {\n return this.component.multipleInstances ? identifier : DEFAULT_ENTRY_NAME;\n }\n else {\n return identifier; // assume multiple instances are supported before the component is provided.\n }\n }\n shouldAutoInitialize() {\n return (!!this.component &&\n this.component.instantiationMode !== \"EXPLICIT\" /* InstantiationMode.EXPLICIT */);\n }\n}\n// undefined should be passed to the service factory for the default instance\nfunction normalizeIdentifierForFactory(identifier) {\n return identifier === DEFAULT_ENTRY_NAME ? undefined : identifier;\n}\nfunction isComponentEager(component) {\n return component.instantiationMode === \"EAGER\" /* InstantiationMode.EAGER */;\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * ComponentContainer that provides Providers for service name T, e.g. `auth`, `auth-internal`\n */\nclass ComponentContainer {\n constructor(name) {\n this.name = name;\n this.providers = new Map();\n }\n /**\n *\n * @param component Component being added\n * @param overwrite When a component with the same name has already been registered,\n * if overwrite is true: overwrite the existing component with the new component and create a new\n * provider with the new component. It can be useful in tests where you want to use different mocks\n * for different tests.\n * if overwrite is false: throw an exception\n */\n addComponent(component) {\n const provider = this.getProvider(component.name);\n if (provider.isComponentSet()) {\n throw new Error(`Component ${component.name} has already been registered with ${this.name}`);\n }\n provider.setComponent(component);\n }\n addOrOverwriteComponent(component) {\n const provider = this.getProvider(component.name);\n if (provider.isComponentSet()) {\n // delete the existing provider from the container, so we can register the new component\n this.providers.delete(component.name);\n }\n this.addComponent(component);\n }\n /**\n * getProvider provides a type safe interface where it can only be called with a field name\n * present in NameServiceMapping interface.\n *\n * Firebase SDKs providing services should extend NameServiceMapping interface to register\n * themselves.\n */\n getProvider(name) {\n if (this.providers.has(name)) {\n return this.providers.get(name);\n }\n // create a Provider for a service that hasn't registered with Firebase\n const provider = new Provider(name, this);\n this.providers.set(name, provider);\n return provider;\n }\n getProviders() {\n return Array.from(this.providers.values());\n }\n}\n\nexport { Component, ComponentContainer, Provider };\n//# sourceMappingURL=index.esm2017.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A container for all of the Logger instances\n */\nconst instances = [];\n/**\n * The JS SDK supports 5 log levels and also allows a user the ability to\n * silence the logs altogether.\n *\n * The order is a follows:\n * DEBUG < VERBOSE < INFO < WARN < ERROR\n *\n * All of the log types above the current log level will be captured (i.e. if\n * you set the log level to `INFO`, errors will still be logged, but `DEBUG` and\n * `VERBOSE` logs will not)\n */\nvar LogLevel;\n(function (LogLevel) {\n LogLevel[LogLevel[\"DEBUG\"] = 0] = \"DEBUG\";\n LogLevel[LogLevel[\"VERBOSE\"] = 1] = \"VERBOSE\";\n LogLevel[LogLevel[\"INFO\"] = 2] = \"INFO\";\n LogLevel[LogLevel[\"WARN\"] = 3] = \"WARN\";\n LogLevel[LogLevel[\"ERROR\"] = 4] = \"ERROR\";\n LogLevel[LogLevel[\"SILENT\"] = 5] = \"SILENT\";\n})(LogLevel || (LogLevel = {}));\nconst levelStringToEnum = {\n 'debug': LogLevel.DEBUG,\n 'verbose': LogLevel.VERBOSE,\n 'info': LogLevel.INFO,\n 'warn': LogLevel.WARN,\n 'error': LogLevel.ERROR,\n 'silent': LogLevel.SILENT\n};\n/**\n * The default log level\n */\nconst defaultLogLevel = LogLevel.INFO;\n/**\n * By default, `console.debug` is not displayed in the developer console (in\n * chrome). To avoid forcing users to have to opt-in to these logs twice\n * (i.e. once for firebase, and once in the console), we are sending `DEBUG`\n * logs to the `console.log` function.\n */\nconst ConsoleMethod = {\n [LogLevel.DEBUG]: 'log',\n [LogLevel.VERBOSE]: 'log',\n [LogLevel.INFO]: 'info',\n [LogLevel.WARN]: 'warn',\n [LogLevel.ERROR]: 'error'\n};\n/**\n * The default log handler will forward DEBUG, VERBOSE, INFO, WARN, and ERROR\n * messages on to their corresponding console counterparts (if the log method\n * is supported by the current log level)\n */\nconst defaultLogHandler = (instance, logType, ...args) => {\n if (logType < instance.logLevel) {\n return;\n }\n const now = new Date().toISOString();\n const method = ConsoleMethod[logType];\n if (method) {\n console[method](`[${now}] ${instance.name}:`, ...args);\n }\n else {\n throw new Error(`Attempted to log a message with an invalid logType (value: ${logType})`);\n }\n};\nclass Logger {\n /**\n * Gives you an instance of a Logger to capture messages according to\n * Firebase's logging scheme.\n *\n * @param name The name that the logs will be associated with\n */\n constructor(name) {\n this.name = name;\n /**\n * The log level of the given Logger instance.\n */\n this._logLevel = defaultLogLevel;\n /**\n * The main (internal) log handler for the Logger instance.\n * Can be set to a new function in internal package code but not by user.\n */\n this._logHandler = defaultLogHandler;\n /**\n * The optional, additional, user-defined log handler for the Logger instance.\n */\n this._userLogHandler = null;\n /**\n * Capture the current instance for later use\n */\n instances.push(this);\n }\n get logLevel() {\n return this._logLevel;\n }\n set logLevel(val) {\n if (!(val in LogLevel)) {\n throw new TypeError(`Invalid value \"${val}\" assigned to \\`logLevel\\``);\n }\n this._logLevel = val;\n }\n // Workaround for setter/getter having to be the same type.\n setLogLevel(val) {\n this._logLevel = typeof val === 'string' ? levelStringToEnum[val] : val;\n }\n get logHandler() {\n return this._logHandler;\n }\n set logHandler(val) {\n if (typeof val !== 'function') {\n throw new TypeError('Value assigned to `logHandler` must be a function');\n }\n this._logHandler = val;\n }\n get userLogHandler() {\n return this._userLogHandler;\n }\n set userLogHandler(val) {\n this._userLogHandler = val;\n }\n /**\n * The functions below are all based on the `console` interface\n */\n debug(...args) {\n this._userLogHandler && this._userLogHandler(this, LogLevel.DEBUG, ...args);\n this._logHandler(this, LogLevel.DEBUG, ...args);\n }\n log(...args) {\n this._userLogHandler &&\n this._userLogHandler(this, LogLevel.VERBOSE, ...args);\n this._logHandler(this, LogLevel.VERBOSE, ...args);\n }\n info(...args) {\n this._userLogHandler && this._userLogHandler(this, LogLevel.INFO, ...args);\n this._logHandler(this, LogLevel.INFO, ...args);\n }\n warn(...args) {\n this._userLogHandler && this._userLogHandler(this, LogLevel.WARN, ...args);\n this._logHandler(this, LogLevel.WARN, ...args);\n }\n error(...args) {\n this._userLogHandler && this._userLogHandler(this, LogLevel.ERROR, ...args);\n this._logHandler(this, LogLevel.ERROR, ...args);\n }\n}\nfunction setLogLevel(level) {\n instances.forEach(inst => {\n inst.setLogLevel(level);\n });\n}\nfunction setUserLogHandler(logCallback, options) {\n for (const instance of instances) {\n let customLogLevel = null;\n if (options && options.level) {\n customLogLevel = levelStringToEnum[options.level];\n }\n if (logCallback === null) {\n instance.userLogHandler = null;\n }\n else {\n instance.userLogHandler = (instance, level, ...args) => {\n const message = args\n .map(arg => {\n if (arg == null) {\n return null;\n }\n else if (typeof arg === 'string') {\n return arg;\n }\n else if (typeof arg === 'number' || typeof arg === 'boolean') {\n return arg.toString();\n }\n else if (arg instanceof Error) {\n return arg.message;\n }\n else {\n try {\n return JSON.stringify(arg);\n }\n catch (ignored) {\n return null;\n }\n }\n })\n .filter(arg => arg)\n .join(' ');\n if (level >= (customLogLevel !== null && customLogLevel !== void 0 ? customLogLevel : instance.logLevel)) {\n logCallback({\n level: LogLevel[level].toLowerCase(),\n message,\n args,\n type: instance.name\n });\n }\n };\n }\n }\n}\n\nexport { LogLevel, Logger, setLogLevel, setUserLogHandler };\n//# sourceMappingURL=index.esm2017.js.map\n","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst cursorRequestMap = new WeakMap();\nconst transactionDoneMap = new WeakMap();\nconst transactionStoreNamesMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n promise\n .then((value) => {\n // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval\n // (see wrapFunction).\n if (value instanceof IDBCursor) {\n cursorRequestMap.set(value, request);\n }\n // Catching to avoid \"Uncaught Promise exceptions\"\n })\n .catch(() => { });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Polyfill for objectStoreNames because of Edge.\n if (prop === 'objectStoreNames') {\n return target.objectStoreNames || transactionStoreNamesMap.get(target);\n }\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Edge doesn't support objectStoreNames (booo), so we polyfill it here.\n if (func === IDBDatabase.prototype.transaction &&\n !('objectStoreNames' in IDBTransaction.prototype)) {\n return function (storeNames, ...args) {\n const tx = func.call(unwrap(this), storeNames, ...args);\n transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);\n return wrap(tx);\n };\n }\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(cursorRequestMap.get(this));\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\nexport { reverseTransformCache as a, instanceOfAny as i, replaceTraps as r, unwrap as u, wrap as w };\n","import { w as wrap, r as replaceTraps } from './wrap-idb-value.js';\nexport { u as unwrap, w as wrap } from './wrap-idb-value.js';\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction), event);\n });\n }\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event.newVersion, event));\n }\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking) {\n db.addEventListener('versionchange', (event) => blocking(event.oldVersion, event.newVersion, event));\n }\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event));\n }\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nexport { deleteDB, openDB };\n","import { Component, ComponentContainer } from '@firebase/component';\nimport { Logger, setUserLogHandler, setLogLevel as setLogLevel$1 } from '@firebase/logger';\nimport { ErrorFactory, getDefaultAppConfig, deepEqual, isBrowser, isWebWorker, FirebaseError, base64urlEncodeWithoutPadding, isIndexedDBAvailable, validateIndexedDBOpenable } from '@firebase/util';\nexport { FirebaseError } from '@firebase/util';\nimport { openDB } from 'idb';\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass PlatformLoggerServiceImpl {\n constructor(container) {\n this.container = container;\n }\n // In initial implementation, this will be called by installations on\n // auth token refresh, and installations will send this string.\n getPlatformInfoString() {\n const providers = this.container.getProviders();\n // Loop through providers and get library/version pairs from any that are\n // version components.\n return providers\n .map(provider => {\n if (isVersionServiceProvider(provider)) {\n const service = provider.getImmediate();\n return `${service.library}/${service.version}`;\n }\n else {\n return null;\n }\n })\n .filter(logString => logString)\n .join(' ');\n }\n}\n/**\n *\n * @param provider check if this provider provides a VersionService\n *\n * NOTE: Using Provider<'app-version'> is a hack to indicate that the provider\n * provides VersionService. The provider is not necessarily a 'app-version'\n * provider.\n */\nfunction isVersionServiceProvider(provider) {\n const component = provider.getComponent();\n return (component === null || component === void 0 ? void 0 : component.type) === \"VERSION\" /* ComponentType.VERSION */;\n}\n\nconst name$q = \"@firebase/app\";\nconst version$1 = \"0.10.18\";\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst logger = new Logger('@firebase/app');\n\nconst name$p = \"@firebase/app-compat\";\n\nconst name$o = \"@firebase/analytics-compat\";\n\nconst name$n = \"@firebase/analytics\";\n\nconst name$m = \"@firebase/app-check-compat\";\n\nconst name$l = \"@firebase/app-check\";\n\nconst name$k = \"@firebase/auth\";\n\nconst name$j = \"@firebase/auth-compat\";\n\nconst name$i = \"@firebase/database\";\n\nconst name$h = \"@firebase/data-connect\";\n\nconst name$g = \"@firebase/database-compat\";\n\nconst name$f = \"@firebase/functions\";\n\nconst name$e = \"@firebase/functions-compat\";\n\nconst name$d = \"@firebase/installations\";\n\nconst name$c = \"@firebase/installations-compat\";\n\nconst name$b = \"@firebase/messaging\";\n\nconst name$a = \"@firebase/messaging-compat\";\n\nconst name$9 = \"@firebase/performance\";\n\nconst name$8 = \"@firebase/performance-compat\";\n\nconst name$7 = \"@firebase/remote-config\";\n\nconst name$6 = \"@firebase/remote-config-compat\";\n\nconst name$5 = \"@firebase/storage\";\n\nconst name$4 = \"@firebase/storage-compat\";\n\nconst name$3 = \"@firebase/firestore\";\n\nconst name$2 = \"@firebase/vertexai\";\n\nconst name$1 = \"@firebase/firestore-compat\";\n\nconst name = \"firebase\";\nconst version = \"11.2.0\";\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * The default app name\n *\n * @internal\n */\nconst DEFAULT_ENTRY_NAME = '[DEFAULT]';\nconst PLATFORM_LOG_STRING = {\n [name$q]: 'fire-core',\n [name$p]: 'fire-core-compat',\n [name$n]: 'fire-analytics',\n [name$o]: 'fire-analytics-compat',\n [name$l]: 'fire-app-check',\n [name$m]: 'fire-app-check-compat',\n [name$k]: 'fire-auth',\n [name$j]: 'fire-auth-compat',\n [name$i]: 'fire-rtdb',\n [name$h]: 'fire-data-connect',\n [name$g]: 'fire-rtdb-compat',\n [name$f]: 'fire-fn',\n [name$e]: 'fire-fn-compat',\n [name$d]: 'fire-iid',\n [name$c]: 'fire-iid-compat',\n [name$b]: 'fire-fcm',\n [name$a]: 'fire-fcm-compat',\n [name$9]: 'fire-perf',\n [name$8]: 'fire-perf-compat',\n [name$7]: 'fire-rc',\n [name$6]: 'fire-rc-compat',\n [name$5]: 'fire-gcs',\n [name$4]: 'fire-gcs-compat',\n [name$3]: 'fire-fst',\n [name$1]: 'fire-fst-compat',\n [name$2]: 'fire-vertex',\n 'fire-js': 'fire-js', // Platform identifier for JS SDK.\n [name]: 'fire-js-all'\n};\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @internal\n */\nconst _apps = new Map();\n/**\n * @internal\n */\nconst _serverApps = new Map();\n/**\n * Registered components.\n *\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst _components = new Map();\n/**\n * @param component - the component being added to this app's container\n *\n * @internal\n */\nfunction _addComponent(app, component) {\n try {\n app.container.addComponent(component);\n }\n catch (e) {\n logger.debug(`Component ${component.name} failed to register with FirebaseApp ${app.name}`, e);\n }\n}\n/**\n *\n * @internal\n */\nfunction _addOrOverwriteComponent(app, component) {\n app.container.addOrOverwriteComponent(component);\n}\n/**\n *\n * @param component - the component to register\n * @returns whether or not the component is registered successfully\n *\n * @internal\n */\nfunction _registerComponent(component) {\n const componentName = component.name;\n if (_components.has(componentName)) {\n logger.debug(`There were multiple attempts to register component ${componentName}.`);\n return false;\n }\n _components.set(componentName, component);\n // add the component to existing app instances\n for (const app of _apps.values()) {\n _addComponent(app, component);\n }\n for (const serverApp of _serverApps.values()) {\n _addComponent(serverApp, component);\n }\n return true;\n}\n/**\n *\n * @param app - FirebaseApp instance\n * @param name - service name\n *\n * @returns the provider for the service with the matching name\n *\n * @internal\n */\nfunction _getProvider(app, name) {\n const heartbeatController = app.container\n .getProvider('heartbeat')\n .getImmediate({ optional: true });\n if (heartbeatController) {\n void heartbeatController.triggerHeartbeat();\n }\n return app.container.getProvider(name);\n}\n/**\n *\n * @param app - FirebaseApp instance\n * @param name - service name\n * @param instanceIdentifier - service instance identifier in case the service supports multiple instances\n *\n * @internal\n */\nfunction _removeServiceInstance(app, name, instanceIdentifier = DEFAULT_ENTRY_NAME) {\n _getProvider(app, name).clearInstance(instanceIdentifier);\n}\n/**\n *\n * @param obj - an object of type FirebaseApp or FirebaseOptions.\n *\n * @returns true if the provide object is of type FirebaseApp.\n *\n * @internal\n */\nfunction _isFirebaseApp(obj) {\n return obj.options !== undefined;\n}\n/**\n *\n * @param obj - an object of type FirebaseApp.\n *\n * @returns true if the provided object is of type FirebaseServerAppImpl.\n *\n * @internal\n */\nfunction _isFirebaseServerApp(obj) {\n return obj.settings !== undefined;\n}\n/**\n * Test only\n *\n * @internal\n */\nfunction _clearComponents() {\n _components.clear();\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst ERRORS = {\n [\"no-app\" /* AppError.NO_APP */]: \"No Firebase App '{$appName}' has been created - \" +\n 'call initializeApp() first',\n [\"bad-app-name\" /* AppError.BAD_APP_NAME */]: \"Illegal App name: '{$appName}'\",\n [\"duplicate-app\" /* AppError.DUPLICATE_APP */]: \"Firebase App named '{$appName}' already exists with different options or config\",\n [\"app-deleted\" /* AppError.APP_DELETED */]: \"Firebase App named '{$appName}' already deleted\",\n [\"server-app-deleted\" /* AppError.SERVER_APP_DELETED */]: 'Firebase Server App has been deleted',\n [\"no-options\" /* AppError.NO_OPTIONS */]: 'Need to provide options, when not being deployed to hosting via source.',\n [\"invalid-app-argument\" /* AppError.INVALID_APP_ARGUMENT */]: 'firebase.{$appName}() takes either no argument or a ' +\n 'Firebase App instance.',\n [\"invalid-log-argument\" /* AppError.INVALID_LOG_ARGUMENT */]: 'First argument to `onLog` must be null or a function.',\n [\"idb-open\" /* AppError.IDB_OPEN */]: 'Error thrown when opening IndexedDB. Original error: {$originalErrorMessage}.',\n [\"idb-get\" /* AppError.IDB_GET */]: 'Error thrown when reading from IndexedDB. Original error: {$originalErrorMessage}.',\n [\"idb-set\" /* AppError.IDB_WRITE */]: 'Error thrown when writing to IndexedDB. Original error: {$originalErrorMessage}.',\n [\"idb-delete\" /* AppError.IDB_DELETE */]: 'Error thrown when deleting from IndexedDB. Original error: {$originalErrorMessage}.',\n [\"finalization-registry-not-supported\" /* AppError.FINALIZATION_REGISTRY_NOT_SUPPORTED */]: 'FirebaseServerApp deleteOnDeref field defined but the JS runtime does not support FinalizationRegistry.',\n [\"invalid-server-app-environment\" /* AppError.INVALID_SERVER_APP_ENVIRONMENT */]: 'FirebaseServerApp is not for use in browser environments.'\n};\nconst ERROR_FACTORY = new ErrorFactory('app', 'Firebase', ERRORS);\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass FirebaseAppImpl {\n constructor(options, config, container) {\n this._isDeleted = false;\n this._options = Object.assign({}, options);\n this._config = Object.assign({}, config);\n this._name = config.name;\n this._automaticDataCollectionEnabled =\n config.automaticDataCollectionEnabled;\n this._container = container;\n this.container.addComponent(new Component('app', () => this, \"PUBLIC\" /* ComponentType.PUBLIC */));\n }\n get automaticDataCollectionEnabled() {\n this.checkDestroyed();\n return this._automaticDataCollectionEnabled;\n }\n set automaticDataCollectionEnabled(val) {\n this.checkDestroyed();\n this._automaticDataCollectionEnabled = val;\n }\n get name() {\n this.checkDestroyed();\n return this._name;\n }\n get options() {\n this.checkDestroyed();\n return this._options;\n }\n get config() {\n this.checkDestroyed();\n return this._config;\n }\n get container() {\n return this._container;\n }\n get isDeleted() {\n return this._isDeleted;\n }\n set isDeleted(val) {\n this._isDeleted = val;\n }\n /**\n * This function will throw an Error if the App has already been deleted -\n * use before performing API actions on the App.\n */\n checkDestroyed() {\n if (this.isDeleted) {\n throw ERROR_FACTORY.create(\"app-deleted\" /* AppError.APP_DELETED */, { appName: this._name });\n }\n }\n}\n\n/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass FirebaseServerAppImpl extends FirebaseAppImpl {\n constructor(options, serverConfig, name, container) {\n // Build configuration parameters for the FirebaseAppImpl base class.\n const automaticDataCollectionEnabled = serverConfig.automaticDataCollectionEnabled !== undefined\n ? serverConfig.automaticDataCollectionEnabled\n : false;\n // Create the FirebaseAppSettings object for the FirebaseAppImp constructor.\n const config = {\n name,\n automaticDataCollectionEnabled\n };\n if (options.apiKey !== undefined) {\n // Construct the parent FirebaseAppImp object.\n super(options, config, container);\n }\n else {\n const appImpl = options;\n super(appImpl.options, config, container);\n }\n // Now construct the data for the FirebaseServerAppImpl.\n this._serverConfig = Object.assign({ automaticDataCollectionEnabled }, serverConfig);\n this._finalizationRegistry = null;\n if (typeof FinalizationRegistry !== 'undefined') {\n this._finalizationRegistry = new FinalizationRegistry(() => {\n this.automaticCleanup();\n });\n }\n this._refCount = 0;\n this.incRefCount(this._serverConfig.releaseOnDeref);\n // Do not retain a hard reference to the dref object, otherwise the FinalizationRegistry\n // will never trigger.\n this._serverConfig.releaseOnDeref = undefined;\n serverConfig.releaseOnDeref = undefined;\n registerVersion(name$q, version$1, 'serverapp');\n }\n toJSON() {\n return undefined;\n }\n get refCount() {\n return this._refCount;\n }\n // Increment the reference count of this server app. If an object is provided, register it\n // with the finalization registry.\n incRefCount(obj) {\n if (this.isDeleted) {\n return;\n }\n this._refCount++;\n if (obj !== undefined && this._finalizationRegistry !== null) {\n this._finalizationRegistry.register(obj, this);\n }\n }\n // Decrement the reference count.\n decRefCount() {\n if (this.isDeleted) {\n return 0;\n }\n return --this._refCount;\n }\n // Invoked by the FinalizationRegistry callback to note that this app should go through its\n // reference counts and delete itself if no reference count remain. The coordinating logic that\n // handles this is in deleteApp(...).\n automaticCleanup() {\n void deleteApp(this);\n }\n get settings() {\n this.checkDestroyed();\n return this._serverConfig;\n }\n /**\n * This function will throw an Error if the App has already been deleted -\n * use before performing API actions on the App.\n */\n checkDestroyed() {\n if (this.isDeleted) {\n throw ERROR_FACTORY.create(\"server-app-deleted\" /* AppError.SERVER_APP_DELETED */);\n }\n }\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * The current SDK version.\n *\n * @public\n */\nconst SDK_VERSION = version;\nfunction initializeApp(_options, rawConfig = {}) {\n let options = _options;\n if (typeof rawConfig !== 'object') {\n const name = rawConfig;\n rawConfig = { name };\n }\n const config = Object.assign({ name: DEFAULT_ENTRY_NAME, automaticDataCollectionEnabled: false }, rawConfig);\n const name = config.name;\n if (typeof name !== 'string' || !name) {\n throw ERROR_FACTORY.create(\"bad-app-name\" /* AppError.BAD_APP_NAME */, {\n appName: String(name)\n });\n }\n options || (options = getDefaultAppConfig());\n if (!options) {\n throw ERROR_FACTORY.create(\"no-options\" /* AppError.NO_OPTIONS */);\n }\n const existingApp = _apps.get(name);\n if (existingApp) {\n // return the existing app if options and config deep equal the ones in the existing app.\n if (deepEqual(options, existingApp.options) &&\n deepEqual(config, existingApp.config)) {\n return existingApp;\n }\n else {\n throw ERROR_FACTORY.create(\"duplicate-app\" /* AppError.DUPLICATE_APP */, { appName: name });\n }\n }\n const container = new ComponentContainer(name);\n for (const component of _components.values()) {\n container.addComponent(component);\n }\n const newApp = new FirebaseAppImpl(options, config, container);\n _apps.set(name, newApp);\n return newApp;\n}\nfunction initializeServerApp(_options, _serverAppConfig) {\n if (isBrowser() && !isWebWorker()) {\n // FirebaseServerApp isn't designed to be run in browsers.\n throw ERROR_FACTORY.create(\"invalid-server-app-environment\" /* AppError.INVALID_SERVER_APP_ENVIRONMENT */);\n }\n if (_serverAppConfig.automaticDataCollectionEnabled === undefined) {\n _serverAppConfig.automaticDataCollectionEnabled = false;\n }\n let appOptions;\n if (_isFirebaseApp(_options)) {\n appOptions = _options.options;\n }\n else {\n appOptions = _options;\n }\n // Build an app name based on a hash of the configuration options.\n const nameObj = Object.assign(Object.assign({}, _serverAppConfig), appOptions);\n // However, Do not mangle the name based on releaseOnDeref, since it will vary between the\n // construction of FirebaseServerApp instances. For example, if the object is the request headers.\n if (nameObj.releaseOnDeref !== undefined) {\n delete nameObj.releaseOnDeref;\n }\n const hashCode = (s) => {\n return [...s].reduce((hash, c) => (Math.imul(31, hash) + c.charCodeAt(0)) | 0, 0);\n };\n if (_serverAppConfig.releaseOnDeref !== undefined) {\n if (typeof FinalizationRegistry === 'undefined') {\n throw ERROR_FACTORY.create(\"finalization-registry-not-supported\" /* AppError.FINALIZATION_REGISTRY_NOT_SUPPORTED */, {});\n }\n }\n const nameString = '' + hashCode(JSON.stringify(nameObj));\n const existingApp = _serverApps.get(nameString);\n if (existingApp) {\n existingApp.incRefCount(_serverAppConfig.releaseOnDeref);\n return existingApp;\n }\n const container = new ComponentContainer(nameString);\n for (const component of _components.values()) {\n container.addComponent(component);\n }\n const newApp = new FirebaseServerAppImpl(appOptions, _serverAppConfig, nameString, container);\n _serverApps.set(nameString, newApp);\n return newApp;\n}\n/**\n * Retrieves a {@link @firebase/app#FirebaseApp} instance.\n *\n * When called with no arguments, the default app is returned. When an app name\n * is provided, the app corresponding to that name is returned.\n *\n * An exception is thrown if the app being retrieved has not yet been\n * initialized.\n *\n * @example\n * ```javascript\n * // Return the default app\n * const app = getApp();\n * ```\n *\n * @example\n * ```javascript\n * // Return a named app\n * const otherApp = getApp(\"otherApp\");\n * ```\n *\n * @param name - Optional name of the app to return. If no name is\n * provided, the default is `\"[DEFAULT]\"`.\n *\n * @returns The app corresponding to the provided app name.\n * If no app name is provided, the default app is returned.\n *\n * @public\n */\nfunction getApp(name = DEFAULT_ENTRY_NAME) {\n const app = _apps.get(name);\n if (!app && name === DEFAULT_ENTRY_NAME && getDefaultAppConfig()) {\n return initializeApp();\n }\n if (!app) {\n throw ERROR_FACTORY.create(\"no-app\" /* AppError.NO_APP */, { appName: name });\n }\n return app;\n}\n/**\n * A (read-only) array of all initialized apps.\n * @public\n */\nfunction getApps() {\n return Array.from(_apps.values());\n}\n/**\n * Renders this app unusable and frees the resources of all associated\n * services.\n *\n * @example\n * ```javascript\n * deleteApp(app)\n * .then(function() {\n * console.log(\"App deleted successfully\");\n * })\n * .catch(function(error) {\n * console.log(\"Error deleting app:\", error);\n * });\n * ```\n *\n * @public\n */\nasync function deleteApp(app) {\n let cleanupProviders = false;\n const name = app.name;\n if (_apps.has(name)) {\n cleanupProviders = true;\n _apps.delete(name);\n }\n else if (_serverApps.has(name)) {\n const firebaseServerApp = app;\n if (firebaseServerApp.decRefCount() <= 0) {\n _serverApps.delete(name);\n cleanupProviders = true;\n }\n }\n if (cleanupProviders) {\n await Promise.all(app.container\n .getProviders()\n .map(provider => provider.delete()));\n app.isDeleted = true;\n }\n}\n/**\n * Registers a library's name and version for platform logging purposes.\n * @param library - Name of 1p or 3p library (e.g. firestore, angularfire)\n * @param version - Current version of that library.\n * @param variant - Bundle variant, e.g., node, rn, etc.\n *\n * @public\n */\nfunction registerVersion(libraryKeyOrName, version, variant) {\n var _a;\n // TODO: We can use this check to whitelist strings when/if we set up\n // a good whitelist system.\n let library = (_a = PLATFORM_LOG_STRING[libraryKeyOrName]) !== null && _a !== void 0 ? _a : libraryKeyOrName;\n if (variant) {\n library += `-${variant}`;\n }\n const libraryMismatch = library.match(/\\s|\\//);\n const versionMismatch = version.match(/\\s|\\//);\n if (libraryMismatch || versionMismatch) {\n const warning = [\n `Unable to register library \"${library}\" with version \"${version}\":`\n ];\n if (libraryMismatch) {\n warning.push(`library name \"${library}\" contains illegal characters (whitespace or \"/\")`);\n }\n if (libraryMismatch && versionMismatch) {\n warning.push('and');\n }\n if (versionMismatch) {\n warning.push(`version name \"${version}\" contains illegal characters (whitespace or \"/\")`);\n }\n logger.warn(warning.join(' '));\n return;\n }\n _registerComponent(new Component(`${library}-version`, () => ({ library, version }), \"VERSION\" /* ComponentType.VERSION */));\n}\n/**\n * Sets log handler for all Firebase SDKs.\n * @param logCallback - An optional custom log handler that executes user code whenever\n * the Firebase SDK makes a logging call.\n *\n * @public\n */\nfunction onLog(logCallback, options) {\n if (logCallback !== null && typeof logCallback !== 'function') {\n throw ERROR_FACTORY.create(\"invalid-log-argument\" /* AppError.INVALID_LOG_ARGUMENT */);\n }\n setUserLogHandler(logCallback, options);\n}\n/**\n * Sets log level for all Firebase SDKs.\n *\n * All of the log types above the current log level are captured (i.e. if\n * you set the log level to `info`, errors are logged, but `debug` and\n * `verbose` logs are not).\n *\n * @public\n */\nfunction setLogLevel(logLevel) {\n setLogLevel$1(logLevel);\n}\n\n/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst DB_NAME = 'firebase-heartbeat-database';\nconst DB_VERSION = 1;\nconst STORE_NAME = 'firebase-heartbeat-store';\nlet dbPromise = null;\nfunction getDbPromise() {\n if (!dbPromise) {\n dbPromise = openDB(DB_NAME, DB_VERSION, {\n upgrade: (db, oldVersion) => {\n // We don't use 'break' in this switch statement, the fall-through\n // behavior is what we want, because if there are multiple versions between\n // the old version and the current version, we want ALL the migrations\n // that correspond to those versions to run, not only the last one.\n // eslint-disable-next-line default-case\n switch (oldVersion) {\n case 0:\n try {\n db.createObjectStore(STORE_NAME);\n }\n catch (e) {\n // Safari/iOS browsers throw occasional exceptions on\n // db.createObjectStore() that may be a bug. Avoid blocking\n // the rest of the app functionality.\n console.warn(e);\n }\n }\n }\n }).catch(e => {\n throw ERROR_FACTORY.create(\"idb-open\" /* AppError.IDB_OPEN */, {\n originalErrorMessage: e.message\n });\n });\n }\n return dbPromise;\n}\nasync function readHeartbeatsFromIndexedDB(app) {\n try {\n const db = await getDbPromise();\n const tx = db.transaction(STORE_NAME);\n const result = await tx.objectStore(STORE_NAME).get(computeKey(app));\n // We already have the value but tx.done can throw,\n // so we need to await it here to catch errors\n await tx.done;\n return result;\n }\n catch (e) {\n if (e instanceof FirebaseError) {\n logger.warn(e.message);\n }\n else {\n const idbGetError = ERROR_FACTORY.create(\"idb-get\" /* AppError.IDB_GET */, {\n originalErrorMessage: e === null || e === void 0 ? void 0 : e.message\n });\n logger.warn(idbGetError.message);\n }\n }\n}\nasync function writeHeartbeatsToIndexedDB(app, heartbeatObject) {\n try {\n const db = await getDbPromise();\n const tx = db.transaction(STORE_NAME, 'readwrite');\n const objectStore = tx.objectStore(STORE_NAME);\n await objectStore.put(heartbeatObject, computeKey(app));\n await tx.done;\n }\n catch (e) {\n if (e instanceof FirebaseError) {\n logger.warn(e.message);\n }\n else {\n const idbGetError = ERROR_FACTORY.create(\"idb-set\" /* AppError.IDB_WRITE */, {\n originalErrorMessage: e === null || e === void 0 ? void 0 : e.message\n });\n logger.warn(idbGetError.message);\n }\n }\n}\nfunction computeKey(app) {\n return `${app.name}!${app.options.appId}`;\n}\n\n/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst MAX_HEADER_BYTES = 1024;\n// 30 days\nconst STORED_HEARTBEAT_RETENTION_MAX_MILLIS = 30 * 24 * 60 * 60 * 1000;\nclass HeartbeatServiceImpl {\n constructor(container) {\n this.container = container;\n /**\n * In-memory cache for heartbeats, used by getHeartbeatsHeader() to generate\n * the header string.\n * Stores one record per date. This will be consolidated into the standard\n * format of one record per user agent string before being sent as a header.\n * Populated from indexedDB when the controller is instantiated and should\n * be kept in sync with indexedDB.\n * Leave public for easier testing.\n */\n this._heartbeatsCache = null;\n const app = this.container.getProvider('app').getImmediate();\n this._storage = new HeartbeatStorageImpl(app);\n this._heartbeatsCachePromise = this._storage.read().then(result => {\n this._heartbeatsCache = result;\n return result;\n });\n }\n /**\n * Called to report a heartbeat. The function will generate\n * a HeartbeatsByUserAgent object, update heartbeatsCache, and persist it\n * to IndexedDB.\n * Note that we only store one heartbeat per day. So if a heartbeat for today is\n * already logged, subsequent calls to this function in the same day will be ignored.\n */\n async triggerHeartbeat() {\n var _a, _b;\n try {\n const platformLogger = this.container\n .getProvider('platform-logger')\n .getImmediate();\n // This is the \"Firebase user agent\" string from the platform logger\n // service, not the browser user agent.\n const agent = platformLogger.getPlatformInfoString();\n const date = getUTCDateString();\n if (((_a = this._heartbeatsCache) === null || _a === void 0 ? void 0 : _a.heartbeats) == null) {\n this._heartbeatsCache = await this._heartbeatsCachePromise;\n // If we failed to construct a heartbeats cache, then return immediately.\n if (((_b = this._heartbeatsCache) === null || _b === void 0 ? void 0 : _b.heartbeats) == null) {\n return;\n }\n }\n // Do not store a heartbeat if one is already stored for this day\n // or if a header has already been sent today.\n if (this._heartbeatsCache.lastSentHeartbeatDate === date ||\n this._heartbeatsCache.heartbeats.some(singleDateHeartbeat => singleDateHeartbeat.date === date)) {\n return;\n }\n else {\n // There is no entry for this date. Create one.\n this._heartbeatsCache.heartbeats.push({ date, agent });\n }\n // Remove entries older than 30 days.\n this._heartbeatsCache.heartbeats =\n this._heartbeatsCache.heartbeats.filter(singleDateHeartbeat => {\n const hbTimestamp = new Date(singleDateHeartbeat.date).valueOf();\n const now = Date.now();\n return now - hbTimestamp <= STORED_HEARTBEAT_RETENTION_MAX_MILLIS;\n });\n return this._storage.overwrite(this._heartbeatsCache);\n }\n catch (e) {\n logger.warn(e);\n }\n }\n /**\n * Returns a base64 encoded string which can be attached to the heartbeat-specific header directly.\n * It also clears all heartbeats from memory as well as in IndexedDB.\n *\n * NOTE: Consuming product SDKs should not send the header if this method\n * returns an empty string.\n */\n async getHeartbeatsHeader() {\n var _a;\n try {\n if (this._heartbeatsCache === null) {\n await this._heartbeatsCachePromise;\n }\n // If it's still null or the array is empty, there is no data to send.\n if (((_a = this._heartbeatsCache) === null || _a === void 0 ? void 0 : _a.heartbeats) == null ||\n this._heartbeatsCache.heartbeats.length === 0) {\n return '';\n }\n const date = getUTCDateString();\n // Extract as many heartbeats from the cache as will fit under the size limit.\n const { heartbeatsToSend, unsentEntries } = extractHeartbeatsForHeader(this._heartbeatsCache.heartbeats);\n const headerString = base64urlEncodeWithoutPadding(JSON.stringify({ version: 2, heartbeats: heartbeatsToSend }));\n // Store last sent date to prevent another being logged/sent for the same day.\n this._heartbeatsCache.lastSentHeartbeatDate = date;\n if (unsentEntries.length > 0) {\n // Store any unsent entries if they exist.\n this._heartbeatsCache.heartbeats = unsentEntries;\n // This seems more likely than emptying the array (below) to lead to some odd state\n // since the cache isn't empty and this will be called again on the next request,\n // and is probably safest if we await it.\n await this._storage.overwrite(this._heartbeatsCache);\n }\n else {\n this._heartbeatsCache.heartbeats = [];\n // Do not wait for this, to reduce latency.\n void this._storage.overwrite(this._heartbeatsCache);\n }\n return headerString;\n }\n catch (e) {\n logger.warn(e);\n return '';\n }\n }\n}\nfunction getUTCDateString() {\n const today = new Date();\n // Returns date format 'YYYY-MM-DD'\n return today.toISOString().substring(0, 10);\n}\nfunction extractHeartbeatsForHeader(heartbeatsCache, maxSize = MAX_HEADER_BYTES) {\n // Heartbeats grouped by user agent in the standard format to be sent in\n // the header.\n const heartbeatsToSend = [];\n // Single date format heartbeats that are not sent.\n let unsentEntries = heartbeatsCache.slice();\n for (const singleDateHeartbeat of heartbeatsCache) {\n // Look for an existing entry with the same user agent.\n const heartbeatEntry = heartbeatsToSend.find(hb => hb.agent === singleDateHeartbeat.agent);\n if (!heartbeatEntry) {\n // If no entry for this user agent exists, create one.\n heartbeatsToSend.push({\n agent: singleDateHeartbeat.agent,\n dates: [singleDateHeartbeat.date]\n });\n if (countBytes(heartbeatsToSend) > maxSize) {\n // If the header would exceed max size, remove the added heartbeat\n // entry and stop adding to the header.\n heartbeatsToSend.pop();\n break;\n }\n }\n else {\n heartbeatEntry.dates.push(singleDateHeartbeat.date);\n // If the header would exceed max size, remove the added date\n // and stop adding to the header.\n if (countBytes(heartbeatsToSend) > maxSize) {\n heartbeatEntry.dates.pop();\n break;\n }\n }\n // Pop unsent entry from queue. (Skipped if adding the entry exceeded\n // quota and the loop breaks early.)\n unsentEntries = unsentEntries.slice(1);\n }\n return {\n heartbeatsToSend,\n unsentEntries\n };\n}\nclass HeartbeatStorageImpl {\n constructor(app) {\n this.app = app;\n this._canUseIndexedDBPromise = this.runIndexedDBEnvironmentCheck();\n }\n async runIndexedDBEnvironmentCheck() {\n if (!isIndexedDBAvailable()) {\n return false;\n }\n else {\n return validateIndexedDBOpenable()\n .then(() => true)\n .catch(() => false);\n }\n }\n /**\n * Read all heartbeats.\n */\n async read() {\n const canUseIndexedDB = await this._canUseIndexedDBPromise;\n if (!canUseIndexedDB) {\n return { heartbeats: [] };\n }\n else {\n const idbHeartbeatObject = await readHeartbeatsFromIndexedDB(this.app);\n if (idbHeartbeatObject === null || idbHeartbeatObject === void 0 ? void 0 : idbHeartbeatObject.heartbeats) {\n return idbHeartbeatObject;\n }\n else {\n return { heartbeats: [] };\n }\n }\n }\n // overwrite the storage with the provided heartbeats\n async overwrite(heartbeatsObject) {\n var _a;\n const canUseIndexedDB = await this._canUseIndexedDBPromise;\n if (!canUseIndexedDB) {\n return;\n }\n else {\n const existingHeartbeatsObject = await this.read();\n return writeHeartbeatsToIndexedDB(this.app, {\n lastSentHeartbeatDate: (_a = heartbeatsObject.lastSentHeartbeatDate) !== null && _a !== void 0 ? _a : existingHeartbeatsObject.lastSentHeartbeatDate,\n heartbeats: heartbeatsObject.heartbeats\n });\n }\n }\n // add heartbeats\n async add(heartbeatsObject) {\n var _a;\n const canUseIndexedDB = await this._canUseIndexedDBPromise;\n if (!canUseIndexedDB) {\n return;\n }\n else {\n const existingHeartbeatsObject = await this.read();\n return writeHeartbeatsToIndexedDB(this.app, {\n lastSentHeartbeatDate: (_a = heartbeatsObject.lastSentHeartbeatDate) !== null && _a !== void 0 ? _a : existingHeartbeatsObject.lastSentHeartbeatDate,\n heartbeats: [\n ...existingHeartbeatsObject.heartbeats,\n ...heartbeatsObject.heartbeats\n ]\n });\n }\n }\n}\n/**\n * Calculate bytes of a HeartbeatsByUserAgent array after being wrapped\n * in a platform logging header JSON object, stringified, and converted\n * to base 64.\n */\nfunction countBytes(heartbeatsCache) {\n // base64 has a restricted set of characters, all of which should be 1 byte.\n return base64urlEncodeWithoutPadding(\n // heartbeatsCache wrapper properties\n JSON.stringify({ version: 2, heartbeats: heartbeatsCache })).length;\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction registerCoreComponents(variant) {\n _registerComponent(new Component('platform-logger', container => new PlatformLoggerServiceImpl(container), \"PRIVATE\" /* ComponentType.PRIVATE */));\n _registerComponent(new Component('heartbeat', container => new HeartbeatServiceImpl(container), \"PRIVATE\" /* ComponentType.PRIVATE */));\n // Register `app` package.\n registerVersion(name$q, version$1, variant);\n // BUILD_TARGET will be replaced by values like esm2017, cjs2017, etc during the compilation\n registerVersion(name$q, version$1, 'esm2017');\n // Register platform SDK identifier (no version).\n registerVersion('fire-js', '');\n}\n\n/**\n * Firebase App\n *\n * @remarks This package coordinates the communication between the different Firebase components\n * @packageDocumentation\n */\nregisterCoreComponents('');\n\nexport { SDK_VERSION, DEFAULT_ENTRY_NAME as _DEFAULT_ENTRY_NAME, _addComponent, _addOrOverwriteComponent, _apps, _clearComponents, _components, _getProvider, _isFirebaseApp, _isFirebaseServerApp, _registerComponent, _removeServiceInstance, _serverApps, deleteApp, getApp, getApps, initializeApp, initializeServerApp, onLog, registerVersion, setLogLevel };\n//# sourceMappingURL=index.esm2017.js.map\n","import { _getProvider, getApp, SDK_VERSION as SDK_VERSION$1, _registerComponent, registerVersion } from '@firebase/app';\nimport { Component, ComponentContainer, Provider } from '@firebase/component';\nimport { stringify, jsonEval, contains, assert, isNodeSdk, stringToByteArray, Sha1, base64, deepCopy, base64Encode, isMobileCordova, stringLength, Deferred, safeGet, isAdmin, isValidFormat, isEmpty, isReactNative, assertionError, map, querystring, errorPrefix, getModularInstance, getDefaultEmulatorHostnameAndPort, createMockUserToken } from '@firebase/util';\nimport { Logger, LogLevel } from '@firebase/logger';\n\nconst name = \"@firebase/database\";\nconst version = \"1.0.11\";\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/** The semver (www.semver.org) version of the SDK. */\nlet SDK_VERSION = '';\n/**\n * SDK_VERSION should be set before any database instance is created\n * @internal\n */\nfunction setSDKVersion(version) {\n SDK_VERSION = version;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Wraps a DOM Storage object and:\n * - automatically encode objects as JSON strings before storing them to allow us to store arbitrary types.\n * - prefixes names with \"firebase:\" to avoid collisions with app data.\n *\n * We automatically (see storage.js) create two such wrappers, one for sessionStorage,\n * and one for localStorage.\n *\n */\nclass DOMStorageWrapper {\n /**\n * @param domStorage_ - The underlying storage object (e.g. localStorage or sessionStorage)\n */\n constructor(domStorage_) {\n this.domStorage_ = domStorage_;\n // Use a prefix to avoid collisions with other stuff saved by the app.\n this.prefix_ = 'firebase:';\n }\n /**\n * @param key - The key to save the value under\n * @param value - The value being stored, or null to remove the key.\n */\n set(key, value) {\n if (value == null) {\n this.domStorage_.removeItem(this.prefixedName_(key));\n }\n else {\n this.domStorage_.setItem(this.prefixedName_(key), stringify(value));\n }\n }\n /**\n * @returns The value that was stored under this key, or null\n */\n get(key) {\n const storedVal = this.domStorage_.getItem(this.prefixedName_(key));\n if (storedVal == null) {\n return null;\n }\n else {\n return jsonEval(storedVal);\n }\n }\n remove(key) {\n this.domStorage_.removeItem(this.prefixedName_(key));\n }\n prefixedName_(name) {\n return this.prefix_ + name;\n }\n toString() {\n return this.domStorage_.toString();\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * An in-memory storage implementation that matches the API of DOMStorageWrapper\n * (TODO: create interface for both to implement).\n */\nclass MemoryStorage {\n constructor() {\n this.cache_ = {};\n this.isInMemoryStorage = true;\n }\n set(key, value) {\n if (value == null) {\n delete this.cache_[key];\n }\n else {\n this.cache_[key] = value;\n }\n }\n get(key) {\n if (contains(this.cache_, key)) {\n return this.cache_[key];\n }\n return null;\n }\n remove(key) {\n delete this.cache_[key];\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Helper to create a DOMStorageWrapper or else fall back to MemoryStorage.\n * TODO: Once MemoryStorage and DOMStorageWrapper have a shared interface this method annotation should change\n * to reflect this type\n *\n * @param domStorageName - Name of the underlying storage object\n * (e.g. 'localStorage' or 'sessionStorage').\n * @returns Turning off type information until a common interface is defined.\n */\nconst createStoragefor = function (domStorageName) {\n try {\n // NOTE: just accessing \"localStorage\" or \"window['localStorage']\" may throw a security exception,\n // so it must be inside the try/catch.\n if (typeof window !== 'undefined' &&\n typeof window[domStorageName] !== 'undefined') {\n // Need to test cache. Just because it's here doesn't mean it works\n const domStorage = window[domStorageName];\n domStorage.setItem('firebase:sentinel', 'cache');\n domStorage.removeItem('firebase:sentinel');\n return new DOMStorageWrapper(domStorage);\n }\n }\n catch (e) { }\n // Failed to create wrapper. Just return in-memory storage.\n // TODO: log?\n return new MemoryStorage();\n};\n/** A storage object that lasts across sessions */\nconst PersistentStorage = createStoragefor('localStorage');\n/** A storage object that only lasts one session */\nconst SessionStorage = createStoragefor('sessionStorage');\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst logClient = new Logger('@firebase/database');\n/**\n * Returns a locally-unique ID (generated by just incrementing up from 0 each time its called).\n */\nconst LUIDGenerator = (function () {\n let id = 1;\n return function () {\n return id++;\n };\n})();\n/**\n * Sha1 hash of the input string\n * @param str - The string to hash\n * @returns {!string} The resulting hash\n */\nconst sha1 = function (str) {\n const utf8Bytes = stringToByteArray(str);\n const sha1 = new Sha1();\n sha1.update(utf8Bytes);\n const sha1Bytes = sha1.digest();\n return base64.encodeByteArray(sha1Bytes);\n};\nconst buildLogMessage_ = function (...varArgs) {\n let message = '';\n for (let i = 0; i < varArgs.length; i++) {\n const arg = varArgs[i];\n if (Array.isArray(arg) ||\n (arg &&\n typeof arg === 'object' &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n typeof arg.length === 'number')) {\n message += buildLogMessage_.apply(null, arg);\n }\n else if (typeof arg === 'object') {\n message += stringify(arg);\n }\n else {\n message += arg;\n }\n message += ' ';\n }\n return message;\n};\n/**\n * Use this for all debug messages in Firebase.\n */\nlet logger = null;\n/**\n * Flag to check for log availability on first log message\n */\nlet firstLog_ = true;\n/**\n * The implementation of Firebase.enableLogging (defined here to break dependencies)\n * @param logger_ - A flag to turn on logging, or a custom logger\n * @param persistent - Whether or not to persist logging settings across refreshes\n */\nconst enableLogging$1 = function (logger_, persistent) {\n assert(!persistent || logger_ === true || logger_ === false, \"Can't turn on custom loggers persistently.\");\n if (logger_ === true) {\n logClient.logLevel = LogLevel.VERBOSE;\n logger = logClient.log.bind(logClient);\n if (persistent) {\n SessionStorage.set('logging_enabled', true);\n }\n }\n else if (typeof logger_ === 'function') {\n logger = logger_;\n }\n else {\n logger = null;\n SessionStorage.remove('logging_enabled');\n }\n};\nconst log = function (...varArgs) {\n if (firstLog_ === true) {\n firstLog_ = false;\n if (logger === null && SessionStorage.get('logging_enabled') === true) {\n enableLogging$1(true);\n }\n }\n if (logger) {\n const message = buildLogMessage_.apply(null, varArgs);\n logger(message);\n }\n};\nconst logWrapper = function (prefix) {\n return function (...varArgs) {\n log(prefix, ...varArgs);\n };\n};\nconst error = function (...varArgs) {\n const message = 'FIREBASE INTERNAL ERROR: ' + buildLogMessage_(...varArgs);\n logClient.error(message);\n};\nconst fatal = function (...varArgs) {\n const message = `FIREBASE FATAL ERROR: ${buildLogMessage_(...varArgs)}`;\n logClient.error(message);\n throw new Error(message);\n};\nconst warn = function (...varArgs) {\n const message = 'FIREBASE WARNING: ' + buildLogMessage_(...varArgs);\n logClient.warn(message);\n};\n/**\n * Logs a warning if the containing page uses https. Called when a call to new Firebase\n * does not use https.\n */\nconst warnIfPageIsSecure = function () {\n // Be very careful accessing browser globals. Who knows what may or may not exist.\n if (typeof window !== 'undefined' &&\n window.location &&\n window.location.protocol &&\n window.location.protocol.indexOf('https:') !== -1) {\n warn('Insecure Firebase access from a secure page. ' +\n 'Please use https in calls to new Firebase().');\n }\n};\n/**\n * Returns true if data is NaN, or +/- Infinity.\n */\nconst isInvalidJSONNumber = function (data) {\n return (typeof data === 'number' &&\n (data !== data || // NaN\n data === Number.POSITIVE_INFINITY ||\n data === Number.NEGATIVE_INFINITY));\n};\nconst executeWhenDOMReady = function (fn) {\n if (isNodeSdk() || document.readyState === 'complete') {\n fn();\n }\n else {\n // Modeled after jQuery. Try DOMContentLoaded and onreadystatechange (which\n // fire before onload), but fall back to onload.\n let called = false;\n const wrappedFn = function () {\n if (!document.body) {\n setTimeout(wrappedFn, Math.floor(10));\n return;\n }\n if (!called) {\n called = true;\n fn();\n }\n };\n if (document.addEventListener) {\n document.addEventListener('DOMContentLoaded', wrappedFn, false);\n // fallback to onload.\n window.addEventListener('load', wrappedFn, false);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (document.attachEvent) {\n // IE.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n document.attachEvent('onreadystatechange', () => {\n if (document.readyState === 'complete') {\n wrappedFn();\n }\n });\n // fallback to onload.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n window.attachEvent('onload', wrappedFn);\n // jQuery has an extra hack for IE that we could employ (based on\n // http://javascript.nwbox.com/IEContentLoaded/) But it looks really old.\n // I'm hoping we don't need it.\n }\n }\n};\n/**\n * Minimum key name. Invalid for actual data, used as a marker to sort before any valid names\n */\nconst MIN_NAME = '[MIN_NAME]';\n/**\n * Maximum key name. Invalid for actual data, used as a marker to sort above any valid names\n */\nconst MAX_NAME = '[MAX_NAME]';\n/**\n * Compares valid Firebase key names, plus min and max name\n */\nconst nameCompare = function (a, b) {\n if (a === b) {\n return 0;\n }\n else if (a === MIN_NAME || b === MAX_NAME) {\n return -1;\n }\n else if (b === MIN_NAME || a === MAX_NAME) {\n return 1;\n }\n else {\n const aAsInt = tryParseInt(a), bAsInt = tryParseInt(b);\n if (aAsInt !== null) {\n if (bAsInt !== null) {\n return aAsInt - bAsInt === 0 ? a.length - b.length : aAsInt - bAsInt;\n }\n else {\n return -1;\n }\n }\n else if (bAsInt !== null) {\n return 1;\n }\n else {\n return a < b ? -1 : 1;\n }\n }\n};\n/**\n * @returns {!number} comparison result.\n */\nconst stringCompare = function (a, b) {\n if (a === b) {\n return 0;\n }\n else if (a < b) {\n return -1;\n }\n else {\n return 1;\n }\n};\nconst requireKey = function (key, obj) {\n if (obj && key in obj) {\n return obj[key];\n }\n else {\n throw new Error('Missing required key (' + key + ') in object: ' + stringify(obj));\n }\n};\nconst ObjectToUniqueKey = function (obj) {\n if (typeof obj !== 'object' || obj === null) {\n return stringify(obj);\n }\n const keys = [];\n // eslint-disable-next-line guard-for-in\n for (const k in obj) {\n keys.push(k);\n }\n // Export as json, but with the keys sorted.\n keys.sort();\n let key = '{';\n for (let i = 0; i < keys.length; i++) {\n if (i !== 0) {\n key += ',';\n }\n key += stringify(keys[i]);\n key += ':';\n key += ObjectToUniqueKey(obj[keys[i]]);\n }\n key += '}';\n return key;\n};\n/**\n * Splits a string into a number of smaller segments of maximum size\n * @param str - The string\n * @param segsize - The maximum number of chars in the string.\n * @returns The string, split into appropriately-sized chunks\n */\nconst splitStringBySize = function (str, segsize) {\n const len = str.length;\n if (len <= segsize) {\n return [str];\n }\n const dataSegs = [];\n for (let c = 0; c < len; c += segsize) {\n if (c + segsize > len) {\n dataSegs.push(str.substring(c, len));\n }\n else {\n dataSegs.push(str.substring(c, c + segsize));\n }\n }\n return dataSegs;\n};\n/**\n * Apply a function to each (key, value) pair in an object or\n * apply a function to each (index, value) pair in an array\n * @param obj - The object or array to iterate over\n * @param fn - The function to apply\n */\nfunction each(obj, fn) {\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n fn(key, obj[key]);\n }\n }\n}\n/**\n * Borrowed from http://hg.secondlife.com/llsd/src/tip/js/typedarray.js (MIT License)\n * I made one modification at the end and removed the NaN / Infinity\n * handling (since it seemed broken [caused an overflow] and we don't need it). See MJL comments.\n * @param v - A double\n *\n */\nconst doubleToIEEE754String = function (v) {\n assert(!isInvalidJSONNumber(v), 'Invalid JSON number'); // MJL\n const ebits = 11, fbits = 52;\n const bias = (1 << (ebits - 1)) - 1;\n let s, e, f, ln, i;\n // Compute sign, exponent, fraction\n // Skip NaN / Infinity handling --MJL.\n if (v === 0) {\n e = 0;\n f = 0;\n s = 1 / v === -Infinity ? 1 : 0;\n }\n else {\n s = v < 0;\n v = Math.abs(v);\n if (v >= Math.pow(2, 1 - bias)) {\n // Normalized\n ln = Math.min(Math.floor(Math.log(v) / Math.LN2), bias);\n e = ln + bias;\n f = Math.round(v * Math.pow(2, fbits - ln) - Math.pow(2, fbits));\n }\n else {\n // Denormalized\n e = 0;\n f = Math.round(v / Math.pow(2, 1 - bias - fbits));\n }\n }\n // Pack sign, exponent, fraction\n const bits = [];\n for (i = fbits; i; i -= 1) {\n bits.push(f % 2 ? 1 : 0);\n f = Math.floor(f / 2);\n }\n for (i = ebits; i; i -= 1) {\n bits.push(e % 2 ? 1 : 0);\n e = Math.floor(e / 2);\n }\n bits.push(s ? 1 : 0);\n bits.reverse();\n const str = bits.join('');\n // Return the data as a hex string. --MJL\n let hexByteString = '';\n for (i = 0; i < 64; i += 8) {\n let hexByte = parseInt(str.substr(i, 8), 2).toString(16);\n if (hexByte.length === 1) {\n hexByte = '0' + hexByte;\n }\n hexByteString = hexByteString + hexByte;\n }\n return hexByteString.toLowerCase();\n};\n/**\n * Used to detect if we're in a Chrome content script (which executes in an\n * isolated environment where long-polling doesn't work).\n */\nconst isChromeExtensionContentScript = function () {\n return !!(typeof window === 'object' &&\n window['chrome'] &&\n window['chrome']['extension'] &&\n !/^chrome/.test(window.location.href));\n};\n/**\n * Used to detect if we're in a Windows 8 Store app.\n */\nconst isWindowsStoreApp = function () {\n // Check for the presence of a couple WinRT globals\n return typeof Windows === 'object' && typeof Windows.UI === 'object';\n};\n/**\n * Converts a server error code to a JavaScript Error\n */\nfunction errorForServerCode(code, query) {\n let reason = 'Unknown Error';\n if (code === 'too_big') {\n reason =\n 'The data requested exceeds the maximum size ' +\n 'that can be accessed with a single request.';\n }\n else if (code === 'permission_denied') {\n reason = \"Client doesn't have permission to access the desired data.\";\n }\n else if (code === 'unavailable') {\n reason = 'The service is unavailable';\n }\n const error = new Error(code + ' at ' + query._path.toString() + ': ' + reason);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n error.code = code.toUpperCase();\n return error;\n}\n/**\n * Used to test for integer-looking strings\n */\nconst INTEGER_REGEXP_ = new RegExp('^-?(0*)\\\\d{1,10}$');\n/**\n * For use in keys, the minimum possible 32-bit integer.\n */\nconst INTEGER_32_MIN = -2147483648;\n/**\n * For use in keys, the maximum possible 32-bit integer.\n */\nconst INTEGER_32_MAX = 2147483647;\n/**\n * If the string contains a 32-bit integer, return it. Else return null.\n */\nconst tryParseInt = function (str) {\n if (INTEGER_REGEXP_.test(str)) {\n const intVal = Number(str);\n if (intVal >= INTEGER_32_MIN && intVal <= INTEGER_32_MAX) {\n return intVal;\n }\n }\n return null;\n};\n/**\n * Helper to run some code but catch any exceptions and re-throw them later.\n * Useful for preventing user callbacks from breaking internal code.\n *\n * Re-throwing the exception from a setTimeout is a little evil, but it's very\n * convenient (we don't have to try to figure out when is a safe point to\n * re-throw it), and the behavior seems reasonable:\n *\n * * If you aren't pausing on exceptions, you get an error in the console with\n * the correct stack trace.\n * * If you're pausing on all exceptions, the debugger will pause on your\n * exception and then again when we rethrow it.\n * * If you're only pausing on uncaught exceptions, the debugger will only pause\n * on us re-throwing it.\n *\n * @param fn - The code to guard.\n */\nconst exceptionGuard = function (fn) {\n try {\n fn();\n }\n catch (e) {\n // Re-throw exception when it's safe.\n setTimeout(() => {\n // It used to be that \"throw e\" would result in a good console error with\n // relevant context, but as of Chrome 39, you just get the firebase.js\n // file/line number where we re-throw it, which is useless. So we log\n // e.stack explicitly.\n const stack = e.stack || '';\n warn('Exception was thrown by user callback.', stack);\n throw e;\n }, Math.floor(0));\n }\n};\n/**\n * @returns {boolean} true if we think we're currently being crawled.\n */\nconst beingCrawled = function () {\n const userAgent = (typeof window === 'object' &&\n window['navigator'] &&\n window['navigator']['userAgent']) ||\n '';\n // For now we whitelist the most popular crawlers. We should refine this to be the set of crawlers we\n // believe to support JavaScript/AJAX rendering.\n // NOTE: Google Webmaster Tools doesn't really belong, but their \"This is how a visitor to your website\n // would have seen the page\" is flaky if we don't treat it as a crawler.\n return (userAgent.search(/googlebot|google webmaster tools|bingbot|yahoo! slurp|baiduspider|yandexbot|duckduckbot/i) >= 0);\n};\n/**\n * Same as setTimeout() except on Node.JS it will /not/ prevent the process from exiting.\n *\n * It is removed with clearTimeout() as normal.\n *\n * @param fn - Function to run.\n * @param time - Milliseconds to wait before running.\n * @returns The setTimeout() return value.\n */\nconst setTimeoutNonBlocking = function (fn, time) {\n const timeout = setTimeout(fn, time);\n // Note: at the time of this comment, unrefTimer is under the unstable set of APIs. Run with --unstable to enable the API.\n if (typeof timeout === 'number' &&\n // @ts-ignore Is only defined in Deno environments.\n typeof Deno !== 'undefined' &&\n // @ts-ignore Deno and unrefTimer are only defined in Deno environments.\n Deno['unrefTimer']) {\n // @ts-ignore Deno and unrefTimer are only defined in Deno environments.\n Deno.unrefTimer(timeout);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (typeof timeout === 'object' && timeout['unref']) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n timeout['unref']();\n }\n return timeout;\n};\n\n/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Abstraction around AppCheck's token fetching capabilities.\n */\nclass AppCheckTokenProvider {\n constructor(appName_, appCheckProvider) {\n this.appName_ = appName_;\n this.appCheckProvider = appCheckProvider;\n this.appCheck = appCheckProvider === null || appCheckProvider === void 0 ? void 0 : appCheckProvider.getImmediate({ optional: true });\n if (!this.appCheck) {\n appCheckProvider === null || appCheckProvider === void 0 ? void 0 : appCheckProvider.get().then(appCheck => (this.appCheck = appCheck));\n }\n }\n getToken(forceRefresh) {\n if (!this.appCheck) {\n return new Promise((resolve, reject) => {\n // Support delayed initialization of FirebaseAppCheck. This allows our\n // customers to initialize the RTDB SDK before initializing Firebase\n // AppCheck and ensures that all requests are authenticated if a token\n // becomes available before the timeout below expires.\n setTimeout(() => {\n if (this.appCheck) {\n this.getToken(forceRefresh).then(resolve, reject);\n }\n else {\n resolve(null);\n }\n }, 0);\n });\n }\n return this.appCheck.getToken(forceRefresh);\n }\n addTokenChangeListener(listener) {\n var _a;\n (_a = this.appCheckProvider) === null || _a === void 0 ? void 0 : _a.get().then(appCheck => appCheck.addTokenListener(listener));\n }\n notifyForInvalidToken() {\n warn(`Provided AppCheck credentials for the app named \"${this.appName_}\" ` +\n 'are invalid. This usually indicates your app was not initialized correctly.');\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Abstraction around FirebaseApp's token fetching capabilities.\n */\nclass FirebaseAuthTokenProvider {\n constructor(appName_, firebaseOptions_, authProvider_) {\n this.appName_ = appName_;\n this.firebaseOptions_ = firebaseOptions_;\n this.authProvider_ = authProvider_;\n this.auth_ = null;\n this.auth_ = authProvider_.getImmediate({ optional: true });\n if (!this.auth_) {\n authProvider_.onInit(auth => (this.auth_ = auth));\n }\n }\n getToken(forceRefresh) {\n if (!this.auth_) {\n return new Promise((resolve, reject) => {\n // Support delayed initialization of FirebaseAuth. This allows our\n // customers to initialize the RTDB SDK before initializing Firebase\n // Auth and ensures that all requests are authenticated if a token\n // becomes available before the timeout below expires.\n setTimeout(() => {\n if (this.auth_) {\n this.getToken(forceRefresh).then(resolve, reject);\n }\n else {\n resolve(null);\n }\n }, 0);\n });\n }\n return this.auth_.getToken(forceRefresh).catch(error => {\n // TODO: Need to figure out all the cases this is raised and whether\n // this makes sense.\n if (error && error.code === 'auth/token-not-initialized') {\n log('Got auth/token-not-initialized error. Treating as null token.');\n return null;\n }\n else {\n return Promise.reject(error);\n }\n });\n }\n addTokenChangeListener(listener) {\n // TODO: We might want to wrap the listener and call it with no args to\n // avoid a leaky abstraction, but that makes removing the listener harder.\n if (this.auth_) {\n this.auth_.addAuthTokenListener(listener);\n }\n else {\n this.authProvider_\n .get()\n .then(auth => auth.addAuthTokenListener(listener));\n }\n }\n removeTokenChangeListener(listener) {\n this.authProvider_\n .get()\n .then(auth => auth.removeAuthTokenListener(listener));\n }\n notifyForInvalidToken() {\n let errorMessage = 'Provided authentication credentials for the app named \"' +\n this.appName_ +\n '\" are invalid. This usually indicates your app was not ' +\n 'initialized correctly. ';\n if ('credential' in this.firebaseOptions_) {\n errorMessage +=\n 'Make sure the \"credential\" property provided to initializeApp() ' +\n 'is authorized to access the specified \"databaseURL\" and is from the correct ' +\n 'project.';\n }\n else if ('serviceAccount' in this.firebaseOptions_) {\n errorMessage +=\n 'Make sure the \"serviceAccount\" property provided to initializeApp() ' +\n 'is authorized to access the specified \"databaseURL\" and is from the correct ' +\n 'project.';\n }\n else {\n errorMessage +=\n 'Make sure the \"apiKey\" and \"databaseURL\" properties provided to ' +\n 'initializeApp() match the values provided for your app at ' +\n 'https://console.firebase.google.com/.';\n }\n warn(errorMessage);\n }\n}\n/* AuthTokenProvider that supplies a constant token. Used by Admin SDK or mockUserToken with emulators. */\nclass EmulatorTokenProvider {\n constructor(accessToken) {\n this.accessToken = accessToken;\n }\n getToken(forceRefresh) {\n return Promise.resolve({\n accessToken: this.accessToken\n });\n }\n addTokenChangeListener(listener) {\n // Invoke the listener immediately to match the behavior in Firebase Auth\n // (see packages/auth/src/auth.js#L1807)\n listener(this.accessToken);\n }\n removeTokenChangeListener(listener) { }\n notifyForInvalidToken() { }\n}\n/** A string that is treated as an admin access token by the RTDB emulator. Used by Admin SDK. */\nEmulatorTokenProvider.OWNER = 'owner';\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst PROTOCOL_VERSION = '5';\nconst VERSION_PARAM = 'v';\nconst TRANSPORT_SESSION_PARAM = 's';\nconst REFERER_PARAM = 'r';\nconst FORGE_REF = 'f';\n// Matches console.firebase.google.com, firebase-console-*.corp.google.com and\n// firebase.corp.google.com\nconst FORGE_DOMAIN_RE = /(console\\.firebase|firebase-console-\\w+\\.corp|firebase\\.corp)\\.google\\.com/;\nconst LAST_SESSION_PARAM = 'ls';\nconst APPLICATION_ID_PARAM = 'p';\nconst APP_CHECK_TOKEN_PARAM = 'ac';\nconst WEBSOCKET = 'websocket';\nconst LONG_POLLING = 'long_polling';\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A class that holds metadata about a Repo object\n */\nclass RepoInfo {\n /**\n * @param host - Hostname portion of the url for the repo\n * @param secure - Whether or not this repo is accessed over ssl\n * @param namespace - The namespace represented by the repo\n * @param webSocketOnly - Whether to prefer websockets over all other transports (used by Nest).\n * @param nodeAdmin - Whether this instance uses Admin SDK credentials\n * @param persistenceKey - Override the default session persistence storage key\n */\n constructor(host, secure, namespace, webSocketOnly, nodeAdmin = false, persistenceKey = '', includeNamespaceInQueryParams = false, isUsingEmulator = false) {\n this.secure = secure;\n this.namespace = namespace;\n this.webSocketOnly = webSocketOnly;\n this.nodeAdmin = nodeAdmin;\n this.persistenceKey = persistenceKey;\n this.includeNamespaceInQueryParams = includeNamespaceInQueryParams;\n this.isUsingEmulator = isUsingEmulator;\n this._host = host.toLowerCase();\n this._domain = this._host.substr(this._host.indexOf('.') + 1);\n this.internalHost =\n PersistentStorage.get('host:' + host) || this._host;\n }\n isCacheableHost() {\n return this.internalHost.substr(0, 2) === 's-';\n }\n isCustomHost() {\n return (this._domain !== 'firebaseio.com' &&\n this._domain !== 'firebaseio-demo.com');\n }\n get host() {\n return this._host;\n }\n set host(newHost) {\n if (newHost !== this.internalHost) {\n this.internalHost = newHost;\n if (this.isCacheableHost()) {\n PersistentStorage.set('host:' + this._host, this.internalHost);\n }\n }\n }\n toString() {\n let str = this.toURLString();\n if (this.persistenceKey) {\n str += '<' + this.persistenceKey + '>';\n }\n return str;\n }\n toURLString() {\n const protocol = this.secure ? 'https://' : 'http://';\n const query = this.includeNamespaceInQueryParams\n ? `?ns=${this.namespace}`\n : '';\n return `${protocol}${this.host}/${query}`;\n }\n}\nfunction repoInfoNeedsQueryParam(repoInfo) {\n return (repoInfo.host !== repoInfo.internalHost ||\n repoInfo.isCustomHost() ||\n repoInfo.includeNamespaceInQueryParams);\n}\n/**\n * Returns the websocket URL for this repo\n * @param repoInfo - RepoInfo object\n * @param type - of connection\n * @param params - list\n * @returns The URL for this repo\n */\nfunction repoInfoConnectionURL(repoInfo, type, params) {\n assert(typeof type === 'string', 'typeof type must == string');\n assert(typeof params === 'object', 'typeof params must == object');\n let connURL;\n if (type === WEBSOCKET) {\n connURL =\n (repoInfo.secure ? 'wss://' : 'ws://') + repoInfo.internalHost + '/.ws?';\n }\n else if (type === LONG_POLLING) {\n connURL =\n (repoInfo.secure ? 'https://' : 'http://') +\n repoInfo.internalHost +\n '/.lp?';\n }\n else {\n throw new Error('Unknown connection type: ' + type);\n }\n if (repoInfoNeedsQueryParam(repoInfo)) {\n params['ns'] = repoInfo.namespace;\n }\n const pairs = [];\n each(params, (key, value) => {\n pairs.push(key + '=' + value);\n });\n return connURL + pairs.join('&');\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Tracks a collection of stats.\n */\nclass StatsCollection {\n constructor() {\n this.counters_ = {};\n }\n incrementCounter(name, amount = 1) {\n if (!contains(this.counters_, name)) {\n this.counters_[name] = 0;\n }\n this.counters_[name] += amount;\n }\n get() {\n return deepCopy(this.counters_);\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst collections = {};\nconst reporters = {};\nfunction statsManagerGetCollection(repoInfo) {\n const hashString = repoInfo.toString();\n if (!collections[hashString]) {\n collections[hashString] = new StatsCollection();\n }\n return collections[hashString];\n}\nfunction statsManagerGetOrCreateReporter(repoInfo, creatorFunction) {\n const hashString = repoInfo.toString();\n if (!reporters[hashString]) {\n reporters[hashString] = creatorFunction();\n }\n return reporters[hashString];\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * This class ensures the packets from the server arrive in order\n * This class takes data from the server and ensures it gets passed into the callbacks in order.\n */\nclass PacketReceiver {\n /**\n * @param onMessage_\n */\n constructor(onMessage_) {\n this.onMessage_ = onMessage_;\n this.pendingResponses = [];\n this.currentResponseNum = 0;\n this.closeAfterResponse = -1;\n this.onClose = null;\n }\n closeAfter(responseNum, callback) {\n this.closeAfterResponse = responseNum;\n this.onClose = callback;\n if (this.closeAfterResponse < this.currentResponseNum) {\n this.onClose();\n this.onClose = null;\n }\n }\n /**\n * Each message from the server comes with a response number, and an array of data. The responseNumber\n * allows us to ensure that we process them in the right order, since we can't be guaranteed that all\n * browsers will respond in the same order as the requests we sent\n */\n handleResponse(requestNum, data) {\n this.pendingResponses[requestNum] = data;\n while (this.pendingResponses[this.currentResponseNum]) {\n const toProcess = this.pendingResponses[this.currentResponseNum];\n delete this.pendingResponses[this.currentResponseNum];\n for (let i = 0; i < toProcess.length; ++i) {\n if (toProcess[i]) {\n exceptionGuard(() => {\n this.onMessage_(toProcess[i]);\n });\n }\n }\n if (this.currentResponseNum === this.closeAfterResponse) {\n if (this.onClose) {\n this.onClose();\n this.onClose = null;\n }\n break;\n }\n this.currentResponseNum++;\n }\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// URL query parameters associated with longpolling\nconst FIREBASE_LONGPOLL_START_PARAM = 'start';\nconst FIREBASE_LONGPOLL_CLOSE_COMMAND = 'close';\nconst FIREBASE_LONGPOLL_COMMAND_CB_NAME = 'pLPCommand';\nconst FIREBASE_LONGPOLL_DATA_CB_NAME = 'pRTLPCB';\nconst FIREBASE_LONGPOLL_ID_PARAM = 'id';\nconst FIREBASE_LONGPOLL_PW_PARAM = 'pw';\nconst FIREBASE_LONGPOLL_SERIAL_PARAM = 'ser';\nconst FIREBASE_LONGPOLL_CALLBACK_ID_PARAM = 'cb';\nconst FIREBASE_LONGPOLL_SEGMENT_NUM_PARAM = 'seg';\nconst FIREBASE_LONGPOLL_SEGMENTS_IN_PACKET = 'ts';\nconst FIREBASE_LONGPOLL_DATA_PARAM = 'd';\nconst FIREBASE_LONGPOLL_DISCONN_FRAME_REQUEST_PARAM = 'dframe';\n//Data size constants.\n//TODO: Perf: the maximum length actually differs from browser to browser.\n// We should check what browser we're on and set accordingly.\nconst MAX_URL_DATA_SIZE = 1870;\nconst SEG_HEADER_SIZE = 30; //ie: &seg=8299234&ts=982389123&d=\nconst MAX_PAYLOAD_SIZE = MAX_URL_DATA_SIZE - SEG_HEADER_SIZE;\n/**\n * Keepalive period\n * send a fresh request at minimum every 25 seconds. Opera has a maximum request\n * length of 30 seconds that we can't exceed.\n */\nconst KEEPALIVE_REQUEST_INTERVAL = 25000;\n/**\n * How long to wait before aborting a long-polling connection attempt.\n */\nconst LP_CONNECT_TIMEOUT = 30000;\n/**\n * This class manages a single long-polling connection.\n */\nclass BrowserPollConnection {\n /**\n * @param connId An identifier for this connection, used for logging\n * @param repoInfo The info for the endpoint to send data to.\n * @param applicationId The Firebase App ID for this project.\n * @param appCheckToken The AppCheck token for this client.\n * @param authToken The AuthToken to use for this connection.\n * @param transportSessionId Optional transportSessionid if we are\n * reconnecting for an existing transport session\n * @param lastSessionId Optional lastSessionId if the PersistentConnection has\n * already created a connection previously\n */\n constructor(connId, repoInfo, applicationId, appCheckToken, authToken, transportSessionId, lastSessionId) {\n this.connId = connId;\n this.repoInfo = repoInfo;\n this.applicationId = applicationId;\n this.appCheckToken = appCheckToken;\n this.authToken = authToken;\n this.transportSessionId = transportSessionId;\n this.lastSessionId = lastSessionId;\n this.bytesSent = 0;\n this.bytesReceived = 0;\n this.everConnected_ = false;\n this.log_ = logWrapper(connId);\n this.stats_ = statsManagerGetCollection(repoInfo);\n this.urlFn = (params) => {\n // Always add the token if we have one.\n if (this.appCheckToken) {\n params[APP_CHECK_TOKEN_PARAM] = this.appCheckToken;\n }\n return repoInfoConnectionURL(repoInfo, LONG_POLLING, params);\n };\n }\n /**\n * @param onMessage - Callback when messages arrive\n * @param onDisconnect - Callback with connection lost.\n */\n open(onMessage, onDisconnect) {\n this.curSegmentNum = 0;\n this.onDisconnect_ = onDisconnect;\n this.myPacketOrderer = new PacketReceiver(onMessage);\n this.isClosed_ = false;\n this.connectTimeoutTimer_ = setTimeout(() => {\n this.log_('Timed out trying to connect.');\n // Make sure we clear the host cache\n this.onClosed_();\n this.connectTimeoutTimer_ = null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }, Math.floor(LP_CONNECT_TIMEOUT));\n // Ensure we delay the creation of the iframe until the DOM is loaded.\n executeWhenDOMReady(() => {\n if (this.isClosed_) {\n return;\n }\n //Set up a callback that gets triggered once a connection is set up.\n this.scriptTagHolder = new FirebaseIFrameScriptHolder((...args) => {\n const [command, arg1, arg2, arg3, arg4] = args;\n this.incrementIncomingBytes_(args);\n if (!this.scriptTagHolder) {\n return; // we closed the connection.\n }\n if (this.connectTimeoutTimer_) {\n clearTimeout(this.connectTimeoutTimer_);\n this.connectTimeoutTimer_ = null;\n }\n this.everConnected_ = true;\n if (command === FIREBASE_LONGPOLL_START_PARAM) {\n this.id = arg1;\n this.password = arg2;\n }\n else if (command === FIREBASE_LONGPOLL_CLOSE_COMMAND) {\n // Don't clear the host cache. We got a response from the server, so we know it's reachable\n if (arg1) {\n // We aren't expecting any more data (other than what the server's already in the process of sending us\n // through our already open polls), so don't send any more.\n this.scriptTagHolder.sendNewPolls = false;\n // arg1 in this case is the last response number sent by the server. We should try to receive\n // all of the responses up to this one before closing\n this.myPacketOrderer.closeAfter(arg1, () => {\n this.onClosed_();\n });\n }\n else {\n this.onClosed_();\n }\n }\n else {\n throw new Error('Unrecognized command received: ' + command);\n }\n }, (...args) => {\n const [pN, data] = args;\n this.incrementIncomingBytes_(args);\n this.myPacketOrderer.handleResponse(pN, data);\n }, () => {\n this.onClosed_();\n }, this.urlFn);\n //Send the initial request to connect. The serial number is simply to keep the browser from pulling previous results\n //from cache.\n const urlParams = {};\n urlParams[FIREBASE_LONGPOLL_START_PARAM] = 't';\n urlParams[FIREBASE_LONGPOLL_SERIAL_PARAM] = Math.floor(Math.random() * 100000000);\n if (this.scriptTagHolder.uniqueCallbackIdentifier) {\n urlParams[FIREBASE_LONGPOLL_CALLBACK_ID_PARAM] =\n this.scriptTagHolder.uniqueCallbackIdentifier;\n }\n urlParams[VERSION_PARAM] = PROTOCOL_VERSION;\n if (this.transportSessionId) {\n urlParams[TRANSPORT_SESSION_PARAM] = this.transportSessionId;\n }\n if (this.lastSessionId) {\n urlParams[LAST_SESSION_PARAM] = this.lastSessionId;\n }\n if (this.applicationId) {\n urlParams[APPLICATION_ID_PARAM] = this.applicationId;\n }\n if (this.appCheckToken) {\n urlParams[APP_CHECK_TOKEN_PARAM] = this.appCheckToken;\n }\n if (typeof location !== 'undefined' &&\n location.hostname &&\n FORGE_DOMAIN_RE.test(location.hostname)) {\n urlParams[REFERER_PARAM] = FORGE_REF;\n }\n const connectURL = this.urlFn(urlParams);\n this.log_('Connecting via long-poll to ' + connectURL);\n this.scriptTagHolder.addTag(connectURL, () => {\n /* do nothing */\n });\n });\n }\n /**\n * Call this when a handshake has completed successfully and we want to consider the connection established\n */\n start() {\n this.scriptTagHolder.startLongPoll(this.id, this.password);\n this.addDisconnectPingFrame(this.id, this.password);\n }\n /**\n * Forces long polling to be considered as a potential transport\n */\n static forceAllow() {\n BrowserPollConnection.forceAllow_ = true;\n }\n /**\n * Forces longpolling to not be considered as a potential transport\n */\n static forceDisallow() {\n BrowserPollConnection.forceDisallow_ = true;\n }\n // Static method, use string literal so it can be accessed in a generic way\n static isAvailable() {\n if (isNodeSdk()) {\n return false;\n }\n else if (BrowserPollConnection.forceAllow_) {\n return true;\n }\n else {\n // NOTE: In React-Native there's normally no 'document', but if you debug a React-Native app in\n // the Chrome debugger, 'document' is defined, but document.createElement is null (2015/06/08).\n return (!BrowserPollConnection.forceDisallow_ &&\n typeof document !== 'undefined' &&\n document.createElement != null &&\n !isChromeExtensionContentScript() &&\n !isWindowsStoreApp());\n }\n }\n /**\n * No-op for polling\n */\n markConnectionHealthy() { }\n /**\n * Stops polling and cleans up the iframe\n */\n shutdown_() {\n this.isClosed_ = true;\n if (this.scriptTagHolder) {\n this.scriptTagHolder.close();\n this.scriptTagHolder = null;\n }\n //remove the disconnect frame, which will trigger an XHR call to the server to tell it we're leaving.\n if (this.myDisconnFrame) {\n document.body.removeChild(this.myDisconnFrame);\n this.myDisconnFrame = null;\n }\n if (this.connectTimeoutTimer_) {\n clearTimeout(this.connectTimeoutTimer_);\n this.connectTimeoutTimer_ = null;\n }\n }\n /**\n * Triggered when this transport is closed\n */\n onClosed_() {\n if (!this.isClosed_) {\n this.log_('Longpoll is closing itself');\n this.shutdown_();\n if (this.onDisconnect_) {\n this.onDisconnect_(this.everConnected_);\n this.onDisconnect_ = null;\n }\n }\n }\n /**\n * External-facing close handler. RealTime has requested we shut down. Kill our connection and tell the server\n * that we've left.\n */\n close() {\n if (!this.isClosed_) {\n this.log_('Longpoll is being closed.');\n this.shutdown_();\n }\n }\n /**\n * Send the JSON object down to the server. It will need to be stringified, base64 encoded, and then\n * broken into chunks (since URLs have a small maximum length).\n * @param data - The JSON data to transmit.\n */\n send(data) {\n const dataStr = stringify(data);\n this.bytesSent += dataStr.length;\n this.stats_.incrementCounter('bytes_sent', dataStr.length);\n //first, lets get the base64-encoded data\n const base64data = base64Encode(dataStr);\n //We can only fit a certain amount in each URL, so we need to split this request\n //up into multiple pieces if it doesn't fit in one request.\n const dataSegs = splitStringBySize(base64data, MAX_PAYLOAD_SIZE);\n //Enqueue each segment for transmission. We assign each chunk a sequential ID and a total number\n //of segments so that we can reassemble the packet on the server.\n for (let i = 0; i < dataSegs.length; i++) {\n this.scriptTagHolder.enqueueSegment(this.curSegmentNum, dataSegs.length, dataSegs[i]);\n this.curSegmentNum++;\n }\n }\n /**\n * This is how we notify the server that we're leaving.\n * We aren't able to send requests with DHTML on a window close event, but we can\n * trigger XHR requests in some browsers (everything but Opera basically).\n */\n addDisconnectPingFrame(id, pw) {\n if (isNodeSdk()) {\n return;\n }\n this.myDisconnFrame = document.createElement('iframe');\n const urlParams = {};\n urlParams[FIREBASE_LONGPOLL_DISCONN_FRAME_REQUEST_PARAM] = 't';\n urlParams[FIREBASE_LONGPOLL_ID_PARAM] = id;\n urlParams[FIREBASE_LONGPOLL_PW_PARAM] = pw;\n this.myDisconnFrame.src = this.urlFn(urlParams);\n this.myDisconnFrame.style.display = 'none';\n document.body.appendChild(this.myDisconnFrame);\n }\n /**\n * Used to track the bytes received by this client\n */\n incrementIncomingBytes_(args) {\n // TODO: This is an annoying perf hit just to track the number of incoming bytes. Maybe it should be opt-in.\n const bytesReceived = stringify(args).length;\n this.bytesReceived += bytesReceived;\n this.stats_.incrementCounter('bytes_received', bytesReceived);\n }\n}\n/*********************************************************************************************\n * A wrapper around an iframe that is used as a long-polling script holder.\n *********************************************************************************************/\nclass FirebaseIFrameScriptHolder {\n /**\n * @param commandCB - The callback to be called when control commands are received from the server.\n * @param onMessageCB - The callback to be triggered when responses arrive from the server.\n * @param onDisconnect - The callback to be triggered when this tag holder is closed\n * @param urlFn - A function that provides the URL of the endpoint to send data to.\n */\n constructor(commandCB, onMessageCB, onDisconnect, urlFn) {\n this.onDisconnect = onDisconnect;\n this.urlFn = urlFn;\n //We maintain a count of all of the outstanding requests, because if we have too many active at once it can cause\n //problems in some browsers.\n this.outstandingRequests = new Set();\n //A queue of the pending segments waiting for transmission to the server.\n this.pendingSegs = [];\n //A serial number. We use this for two things:\n // 1) A way to ensure the browser doesn't cache responses to polls\n // 2) A way to make the server aware when long-polls arrive in a different order than we started them. The\n // server needs to release both polls in this case or it will cause problems in Opera since Opera can only execute\n // JSONP code in the order it was added to the iframe.\n this.currentSerial = Math.floor(Math.random() * 100000000);\n // This gets set to false when we're \"closing down\" the connection (e.g. we're switching transports but there's still\n // incoming data from the server that we're waiting for).\n this.sendNewPolls = true;\n if (!isNodeSdk()) {\n //Each script holder registers a couple of uniquely named callbacks with the window. These are called from the\n //iframes where we put the long-polling script tags. We have two callbacks:\n // 1) Command Callback - Triggered for control issues, like starting a connection.\n // 2) Message Callback - Triggered when new data arrives.\n this.uniqueCallbackIdentifier = LUIDGenerator();\n window[FIREBASE_LONGPOLL_COMMAND_CB_NAME + this.uniqueCallbackIdentifier] = commandCB;\n window[FIREBASE_LONGPOLL_DATA_CB_NAME + this.uniqueCallbackIdentifier] =\n onMessageCB;\n //Create an iframe for us to add script tags to.\n this.myIFrame = FirebaseIFrameScriptHolder.createIFrame_();\n // Set the iframe's contents.\n let script = '';\n // if we set a javascript url, it's IE and we need to set the document domain. The javascript url is sufficient\n // for ie9, but ie8 needs to do it again in the document itself.\n if (this.myIFrame.src &&\n this.myIFrame.src.substr(0, 'javascript:'.length) === 'javascript:') {\n const currentDomain = document.domain;\n script = '';\n }\n const iframeContents = '' + script + '';\n try {\n this.myIFrame.doc.open();\n this.myIFrame.doc.write(iframeContents);\n this.myIFrame.doc.close();\n }\n catch (e) {\n log('frame writing exception');\n if (e.stack) {\n log(e.stack);\n }\n log(e);\n }\n }\n else {\n this.commandCB = commandCB;\n this.onMessageCB = onMessageCB;\n }\n }\n /**\n * Each browser has its own funny way to handle iframes. Here we mush them all together into one object that I can\n * actually use.\n */\n static createIFrame_() {\n const iframe = document.createElement('iframe');\n iframe.style.display = 'none';\n // This is necessary in order to initialize the document inside the iframe\n if (document.body) {\n document.body.appendChild(iframe);\n try {\n // If document.domain has been modified in IE, this will throw an error, and we need to set the\n // domain of the iframe's document manually. We can do this via a javascript: url as the src attribute\n // Also note that we must do this *after* the iframe has been appended to the page. Otherwise it doesn't work.\n const a = iframe.contentWindow.document;\n if (!a) {\n // Apologies for the log-spam, I need to do something to keep closure from optimizing out the assignment above.\n log('No IE domain setting required');\n }\n }\n catch (e) {\n const domain = document.domain;\n iframe.src =\n \"javascript:void((function(){document.open();document.domain='\" +\n domain +\n \"';document.close();})())\";\n }\n }\n else {\n // LongPollConnection attempts to delay initialization until the document is ready, so hopefully this\n // never gets hit.\n throw 'Document body has not initialized. Wait to initialize Firebase until after the document is ready.';\n }\n // Get the document of the iframe in a browser-specific way.\n if (iframe.contentDocument) {\n iframe.doc = iframe.contentDocument; // Firefox, Opera, Safari\n }\n else if (iframe.contentWindow) {\n iframe.doc = iframe.contentWindow.document; // Internet Explorer\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (iframe.document) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n iframe.doc = iframe.document; //others?\n }\n return iframe;\n }\n /**\n * Cancel all outstanding queries and remove the frame.\n */\n close() {\n //Mark this iframe as dead, so no new requests are sent.\n this.alive = false;\n if (this.myIFrame) {\n //We have to actually remove all of the html inside this iframe before removing it from the\n //window, or IE will continue loading and executing the script tags we've already added, which\n //can lead to some errors being thrown. Setting textContent seems to be the safest way to do this.\n this.myIFrame.doc.body.textContent = '';\n setTimeout(() => {\n if (this.myIFrame !== null) {\n document.body.removeChild(this.myIFrame);\n this.myIFrame = null;\n }\n }, Math.floor(0));\n }\n // Protect from being called recursively.\n const onDisconnect = this.onDisconnect;\n if (onDisconnect) {\n this.onDisconnect = null;\n onDisconnect();\n }\n }\n /**\n * Actually start the long-polling session by adding the first script tag(s) to the iframe.\n * @param id - The ID of this connection\n * @param pw - The password for this connection\n */\n startLongPoll(id, pw) {\n this.myID = id;\n this.myPW = pw;\n this.alive = true;\n //send the initial request. If there are requests queued, make sure that we transmit as many as we are currently able to.\n while (this.newRequest_()) { }\n }\n /**\n * This is called any time someone might want a script tag to be added. It adds a script tag when there aren't\n * too many outstanding requests and we are still alive.\n *\n * If there are outstanding packet segments to send, it sends one. If there aren't, it sends a long-poll anyways if\n * needed.\n */\n newRequest_() {\n // We keep one outstanding request open all the time to receive data, but if we need to send data\n // (pendingSegs.length > 0) then we create a new request to send the data. The server will automatically\n // close the old request.\n if (this.alive &&\n this.sendNewPolls &&\n this.outstandingRequests.size < (this.pendingSegs.length > 0 ? 2 : 1)) {\n //construct our url\n this.currentSerial++;\n const urlParams = {};\n urlParams[FIREBASE_LONGPOLL_ID_PARAM] = this.myID;\n urlParams[FIREBASE_LONGPOLL_PW_PARAM] = this.myPW;\n urlParams[FIREBASE_LONGPOLL_SERIAL_PARAM] = this.currentSerial;\n let theURL = this.urlFn(urlParams);\n //Now add as much data as we can.\n let curDataString = '';\n let i = 0;\n while (this.pendingSegs.length > 0) {\n //first, lets see if the next segment will fit.\n const nextSeg = this.pendingSegs[0];\n if (nextSeg.d.length +\n SEG_HEADER_SIZE +\n curDataString.length <=\n MAX_URL_DATA_SIZE) {\n //great, the segment will fit. Lets append it.\n const theSeg = this.pendingSegs.shift();\n curDataString =\n curDataString +\n '&' +\n FIREBASE_LONGPOLL_SEGMENT_NUM_PARAM +\n i +\n '=' +\n theSeg.seg +\n '&' +\n FIREBASE_LONGPOLL_SEGMENTS_IN_PACKET +\n i +\n '=' +\n theSeg.ts +\n '&' +\n FIREBASE_LONGPOLL_DATA_PARAM +\n i +\n '=' +\n theSeg.d;\n i++;\n }\n else {\n break;\n }\n }\n theURL = theURL + curDataString;\n this.addLongPollTag_(theURL, this.currentSerial);\n return true;\n }\n else {\n return false;\n }\n }\n /**\n * Queue a packet for transmission to the server.\n * @param segnum - A sequential id for this packet segment used for reassembly\n * @param totalsegs - The total number of segments in this packet\n * @param data - The data for this segment.\n */\n enqueueSegment(segnum, totalsegs, data) {\n //add this to the queue of segments to send.\n this.pendingSegs.push({ seg: segnum, ts: totalsegs, d: data });\n //send the data immediately if there isn't already data being transmitted, unless\n //startLongPoll hasn't been called yet.\n if (this.alive) {\n this.newRequest_();\n }\n }\n /**\n * Add a script tag for a regular long-poll request.\n * @param url - The URL of the script tag.\n * @param serial - The serial number of the request.\n */\n addLongPollTag_(url, serial) {\n //remember that we sent this request.\n this.outstandingRequests.add(serial);\n const doNewRequest = () => {\n this.outstandingRequests.delete(serial);\n this.newRequest_();\n };\n // If this request doesn't return on its own accord (by the server sending us some data), we'll\n // create a new one after the KEEPALIVE interval to make sure we always keep a fresh request open.\n const keepaliveTimeout = setTimeout(doNewRequest, Math.floor(KEEPALIVE_REQUEST_INTERVAL));\n const readyStateCB = () => {\n // Request completed. Cancel the keepalive.\n clearTimeout(keepaliveTimeout);\n // Trigger a new request so we can continue receiving data.\n doNewRequest();\n };\n this.addTag(url, readyStateCB);\n }\n /**\n * Add an arbitrary script tag to the iframe.\n * @param url - The URL for the script tag source.\n * @param loadCB - A callback to be triggered once the script has loaded.\n */\n addTag(url, loadCB) {\n if (isNodeSdk()) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.doNodeLongPoll(url, loadCB);\n }\n else {\n setTimeout(() => {\n try {\n // if we're already closed, don't add this poll\n if (!this.sendNewPolls) {\n return;\n }\n const newScript = this.myIFrame.doc.createElement('script');\n newScript.type = 'text/javascript';\n newScript.async = true;\n newScript.src = url;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newScript.onload = newScript.onreadystatechange =\n function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const rstate = newScript.readyState;\n if (!rstate || rstate === 'loaded' || rstate === 'complete') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newScript.onload = newScript.onreadystatechange = null;\n if (newScript.parentNode) {\n newScript.parentNode.removeChild(newScript);\n }\n loadCB();\n }\n };\n newScript.onerror = () => {\n log('Long-poll script failed to load: ' + url);\n this.sendNewPolls = false;\n this.close();\n };\n this.myIFrame.doc.body.appendChild(newScript);\n }\n catch (e) {\n // TODO: we should make this error visible somehow\n }\n }, Math.floor(1));\n }\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst WEBSOCKET_MAX_FRAME_SIZE = 16384;\nconst WEBSOCKET_KEEPALIVE_INTERVAL = 45000;\nlet WebSocketImpl = null;\nif (typeof MozWebSocket !== 'undefined') {\n WebSocketImpl = MozWebSocket;\n}\nelse if (typeof WebSocket !== 'undefined') {\n WebSocketImpl = WebSocket;\n}\n/**\n * Create a new websocket connection with the given callbacks.\n */\nclass WebSocketConnection {\n /**\n * @param connId identifier for this transport\n * @param repoInfo The info for the websocket endpoint.\n * @param applicationId The Firebase App ID for this project.\n * @param appCheckToken The App Check Token for this client.\n * @param authToken The Auth Token for this client.\n * @param transportSessionId Optional transportSessionId if this is connecting\n * to an existing transport session\n * @param lastSessionId Optional lastSessionId if there was a previous\n * connection\n */\n constructor(connId, repoInfo, applicationId, appCheckToken, authToken, transportSessionId, lastSessionId) {\n this.connId = connId;\n this.applicationId = applicationId;\n this.appCheckToken = appCheckToken;\n this.authToken = authToken;\n this.keepaliveTimer = null;\n this.frames = null;\n this.totalFrames = 0;\n this.bytesSent = 0;\n this.bytesReceived = 0;\n this.log_ = logWrapper(this.connId);\n this.stats_ = statsManagerGetCollection(repoInfo);\n this.connURL = WebSocketConnection.connectionURL_(repoInfo, transportSessionId, lastSessionId, appCheckToken, applicationId);\n this.nodeAdmin = repoInfo.nodeAdmin;\n }\n /**\n * @param repoInfo - The info for the websocket endpoint.\n * @param transportSessionId - Optional transportSessionId if this is connecting to an existing transport\n * session\n * @param lastSessionId - Optional lastSessionId if there was a previous connection\n * @returns connection url\n */\n static connectionURL_(repoInfo, transportSessionId, lastSessionId, appCheckToken, applicationId) {\n const urlParams = {};\n urlParams[VERSION_PARAM] = PROTOCOL_VERSION;\n if (!isNodeSdk() &&\n typeof location !== 'undefined' &&\n location.hostname &&\n FORGE_DOMAIN_RE.test(location.hostname)) {\n urlParams[REFERER_PARAM] = FORGE_REF;\n }\n if (transportSessionId) {\n urlParams[TRANSPORT_SESSION_PARAM] = transportSessionId;\n }\n if (lastSessionId) {\n urlParams[LAST_SESSION_PARAM] = lastSessionId;\n }\n if (appCheckToken) {\n urlParams[APP_CHECK_TOKEN_PARAM] = appCheckToken;\n }\n if (applicationId) {\n urlParams[APPLICATION_ID_PARAM] = applicationId;\n }\n return repoInfoConnectionURL(repoInfo, WEBSOCKET, urlParams);\n }\n /**\n * @param onMessage - Callback when messages arrive\n * @param onDisconnect - Callback with connection lost.\n */\n open(onMessage, onDisconnect) {\n this.onDisconnect = onDisconnect;\n this.onMessage = onMessage;\n this.log_('Websocket connecting to ' + this.connURL);\n this.everConnected_ = false;\n // Assume failure until proven otherwise.\n PersistentStorage.set('previous_websocket_failure', true);\n try {\n let options;\n if (isNodeSdk()) {\n const device = this.nodeAdmin ? 'AdminNode' : 'Node';\n // UA Format: Firebase////\n options = {\n headers: {\n 'User-Agent': `Firebase/${PROTOCOL_VERSION}/${SDK_VERSION}/${process.platform}/${device}`,\n 'X-Firebase-GMPID': this.applicationId || ''\n }\n };\n // If using Node with admin creds, AppCheck-related checks are unnecessary.\n // Note that we send the credentials here even if they aren't admin credentials, which is\n // not a problem.\n // Note that this header is just used to bypass appcheck, and the token should still be sent\n // through the websocket connection once it is established.\n if (this.authToken) {\n options.headers['Authorization'] = `Bearer ${this.authToken}`;\n }\n if (this.appCheckToken) {\n options.headers['X-Firebase-AppCheck'] = this.appCheckToken;\n }\n // Plumb appropriate http_proxy environment variable into faye-websocket if it exists.\n const env = process['env'];\n const proxy = this.connURL.indexOf('wss://') === 0\n ? env['HTTPS_PROXY'] || env['https_proxy']\n : env['HTTP_PROXY'] || env['http_proxy'];\n if (proxy) {\n options['proxy'] = { origin: proxy };\n }\n }\n this.mySock = new WebSocketImpl(this.connURL, [], options);\n }\n catch (e) {\n this.log_('Error instantiating WebSocket.');\n const error = e.message || e.data;\n if (error) {\n this.log_(error);\n }\n this.onClosed_();\n return;\n }\n this.mySock.onopen = () => {\n this.log_('Websocket connected.');\n this.everConnected_ = true;\n };\n this.mySock.onclose = () => {\n this.log_('Websocket connection was disconnected.');\n this.mySock = null;\n this.onClosed_();\n };\n this.mySock.onmessage = m => {\n this.handleIncomingFrame(m);\n };\n this.mySock.onerror = e => {\n this.log_('WebSocket error. Closing connection.');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const error = e.message || e.data;\n if (error) {\n this.log_(error);\n }\n this.onClosed_();\n };\n }\n /**\n * No-op for websockets, we don't need to do anything once the connection is confirmed as open\n */\n start() { }\n static forceDisallow() {\n WebSocketConnection.forceDisallow_ = true;\n }\n static isAvailable() {\n let isOldAndroid = false;\n if (typeof navigator !== 'undefined' && navigator.userAgent) {\n const oldAndroidRegex = /Android ([0-9]{0,}\\.[0-9]{0,})/;\n const oldAndroidMatch = navigator.userAgent.match(oldAndroidRegex);\n if (oldAndroidMatch && oldAndroidMatch.length > 1) {\n if (parseFloat(oldAndroidMatch[1]) < 4.4) {\n isOldAndroid = true;\n }\n }\n }\n return (!isOldAndroid &&\n WebSocketImpl !== null &&\n !WebSocketConnection.forceDisallow_);\n }\n /**\n * Returns true if we previously failed to connect with this transport.\n */\n static previouslyFailed() {\n // If our persistent storage is actually only in-memory storage,\n // we default to assuming that it previously failed to be safe.\n return (PersistentStorage.isInMemoryStorage ||\n PersistentStorage.get('previous_websocket_failure') === true);\n }\n markConnectionHealthy() {\n PersistentStorage.remove('previous_websocket_failure');\n }\n appendFrame_(data) {\n this.frames.push(data);\n if (this.frames.length === this.totalFrames) {\n const fullMess = this.frames.join('');\n this.frames = null;\n const jsonMess = jsonEval(fullMess);\n //handle the message\n this.onMessage(jsonMess);\n }\n }\n /**\n * @param frameCount - The number of frames we are expecting from the server\n */\n handleNewFrameCount_(frameCount) {\n this.totalFrames = frameCount;\n this.frames = [];\n }\n /**\n * Attempts to parse a frame count out of some text. If it can't, assumes a value of 1\n * @returns Any remaining data to be process, or null if there is none\n */\n extractFrameCount_(data) {\n assert(this.frames === null, 'We already have a frame buffer');\n // TODO: The server is only supposed to send up to 9999 frames (i.e. length <= 4), but that isn't being enforced\n // currently. So allowing larger frame counts (length <= 6). See https://app.asana.com/0/search/8688598998380/8237608042508\n if (data.length <= 6) {\n const frameCount = Number(data);\n if (!isNaN(frameCount)) {\n this.handleNewFrameCount_(frameCount);\n return null;\n }\n }\n this.handleNewFrameCount_(1);\n return data;\n }\n /**\n * Process a websocket frame that has arrived from the server.\n * @param mess - The frame data\n */\n handleIncomingFrame(mess) {\n if (this.mySock === null) {\n return; // Chrome apparently delivers incoming packets even after we .close() the connection sometimes.\n }\n const data = mess['data'];\n this.bytesReceived += data.length;\n this.stats_.incrementCounter('bytes_received', data.length);\n this.resetKeepAlive();\n if (this.frames !== null) {\n // we're buffering\n this.appendFrame_(data);\n }\n else {\n // try to parse out a frame count, otherwise, assume 1 and process it\n const remainingData = this.extractFrameCount_(data);\n if (remainingData !== null) {\n this.appendFrame_(remainingData);\n }\n }\n }\n /**\n * Send a message to the server\n * @param data - The JSON object to transmit\n */\n send(data) {\n this.resetKeepAlive();\n const dataStr = stringify(data);\n this.bytesSent += dataStr.length;\n this.stats_.incrementCounter('bytes_sent', dataStr.length);\n //We can only fit a certain amount in each websocket frame, so we need to split this request\n //up into multiple pieces if it doesn't fit in one request.\n const dataSegs = splitStringBySize(dataStr, WEBSOCKET_MAX_FRAME_SIZE);\n //Send the length header\n if (dataSegs.length > 1) {\n this.sendString_(String(dataSegs.length));\n }\n //Send the actual data in segments.\n for (let i = 0; i < dataSegs.length; i++) {\n this.sendString_(dataSegs[i]);\n }\n }\n shutdown_() {\n this.isClosed_ = true;\n if (this.keepaliveTimer) {\n clearInterval(this.keepaliveTimer);\n this.keepaliveTimer = null;\n }\n if (this.mySock) {\n this.mySock.close();\n this.mySock = null;\n }\n }\n onClosed_() {\n if (!this.isClosed_) {\n this.log_('WebSocket is closing itself');\n this.shutdown_();\n // since this is an internal close, trigger the close listener\n if (this.onDisconnect) {\n this.onDisconnect(this.everConnected_);\n this.onDisconnect = null;\n }\n }\n }\n /**\n * External-facing close handler.\n * Close the websocket and kill the connection.\n */\n close() {\n if (!this.isClosed_) {\n this.log_('WebSocket is being closed');\n this.shutdown_();\n }\n }\n /**\n * Kill the current keepalive timer and start a new one, to ensure that it always fires N seconds after\n * the last activity.\n */\n resetKeepAlive() {\n clearInterval(this.keepaliveTimer);\n this.keepaliveTimer = setInterval(() => {\n //If there has been no websocket activity for a while, send a no-op\n if (this.mySock) {\n this.sendString_('0');\n }\n this.resetKeepAlive();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }, Math.floor(WEBSOCKET_KEEPALIVE_INTERVAL));\n }\n /**\n * Send a string over the websocket.\n *\n * @param str - String to send.\n */\n sendString_(str) {\n // Firefox seems to sometimes throw exceptions (NS_ERROR_UNEXPECTED) from websocket .send()\n // calls for some unknown reason. We treat these as an error and disconnect.\n // See https://app.asana.com/0/58926111402292/68021340250410\n try {\n this.mySock.send(str);\n }\n catch (e) {\n this.log_('Exception thrown from WebSocket.send():', e.message || e.data, 'Closing connection.');\n setTimeout(this.onClosed_.bind(this), 0);\n }\n }\n}\n/**\n * Number of response before we consider the connection \"healthy.\"\n */\nWebSocketConnection.responsesRequiredToBeHealthy = 2;\n/**\n * Time to wait for the connection te become healthy before giving up.\n */\nWebSocketConnection.healthyTimeout = 30000;\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Currently simplistic, this class manages what transport a Connection should use at various stages of its\n * lifecycle.\n *\n * It starts with longpolling in a browser, and httppolling on node. It then upgrades to websockets if\n * they are available.\n */\nclass TransportManager {\n static get ALL_TRANSPORTS() {\n return [BrowserPollConnection, WebSocketConnection];\n }\n /**\n * Returns whether transport has been selected to ensure WebSocketConnection or BrowserPollConnection are not called after\n * TransportManager has already set up transports_\n */\n static get IS_TRANSPORT_INITIALIZED() {\n return this.globalTransportInitialized_;\n }\n /**\n * @param repoInfo - Metadata around the namespace we're connecting to\n */\n constructor(repoInfo) {\n this.initTransports_(repoInfo);\n }\n initTransports_(repoInfo) {\n const isWebSocketsAvailable = WebSocketConnection && WebSocketConnection['isAvailable']();\n let isSkipPollConnection = isWebSocketsAvailable && !WebSocketConnection.previouslyFailed();\n if (repoInfo.webSocketOnly) {\n if (!isWebSocketsAvailable) {\n warn(\"wss:// URL used, but browser isn't known to support websockets. Trying anyway.\");\n }\n isSkipPollConnection = true;\n }\n if (isSkipPollConnection) {\n this.transports_ = [WebSocketConnection];\n }\n else {\n const transports = (this.transports_ = []);\n for (const transport of TransportManager.ALL_TRANSPORTS) {\n if (transport && transport['isAvailable']()) {\n transports.push(transport);\n }\n }\n TransportManager.globalTransportInitialized_ = true;\n }\n }\n /**\n * @returns The constructor for the initial transport to use\n */\n initialTransport() {\n if (this.transports_.length > 0) {\n return this.transports_[0];\n }\n else {\n throw new Error('No transports available');\n }\n }\n /**\n * @returns The constructor for the next transport, or null\n */\n upgradeTransport() {\n if (this.transports_.length > 1) {\n return this.transports_[1];\n }\n else {\n return null;\n }\n }\n}\n// Keeps track of whether the TransportManager has already chosen a transport to use\nTransportManager.globalTransportInitialized_ = false;\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Abort upgrade attempt if it takes longer than 60s.\nconst UPGRADE_TIMEOUT = 60000;\n// For some transports (WebSockets), we need to \"validate\" the transport by exchanging a few requests and responses.\n// If we haven't sent enough requests within 5s, we'll start sending noop ping requests.\nconst DELAY_BEFORE_SENDING_EXTRA_REQUESTS = 5000;\n// If the initial data sent triggers a lot of bandwidth (i.e. it's a large put or a listen for a large amount of data)\n// then we may not be able to exchange our ping/pong requests within the healthy timeout. So if we reach the timeout\n// but we've sent/received enough bytes, we don't cancel the connection.\nconst BYTES_SENT_HEALTHY_OVERRIDE = 10 * 1024;\nconst BYTES_RECEIVED_HEALTHY_OVERRIDE = 100 * 1024;\nconst MESSAGE_TYPE = 't';\nconst MESSAGE_DATA = 'd';\nconst CONTROL_SHUTDOWN = 's';\nconst CONTROL_RESET = 'r';\nconst CONTROL_ERROR = 'e';\nconst CONTROL_PONG = 'o';\nconst SWITCH_ACK = 'a';\nconst END_TRANSMISSION = 'n';\nconst PING = 'p';\nconst SERVER_HELLO = 'h';\n/**\n * Creates a new real-time connection to the server using whichever method works\n * best in the current browser.\n */\nclass Connection {\n /**\n * @param id - an id for this connection\n * @param repoInfo_ - the info for the endpoint to connect to\n * @param applicationId_ - the Firebase App ID for this project\n * @param appCheckToken_ - The App Check Token for this device.\n * @param authToken_ - The auth token for this session.\n * @param onMessage_ - the callback to be triggered when a server-push message arrives\n * @param onReady_ - the callback to be triggered when this connection is ready to send messages.\n * @param onDisconnect_ - the callback to be triggered when a connection was lost\n * @param onKill_ - the callback to be triggered when this connection has permanently shut down.\n * @param lastSessionId - last session id in persistent connection. is used to clean up old session in real-time server\n */\n constructor(id, repoInfo_, applicationId_, appCheckToken_, authToken_, onMessage_, onReady_, onDisconnect_, onKill_, lastSessionId) {\n this.id = id;\n this.repoInfo_ = repoInfo_;\n this.applicationId_ = applicationId_;\n this.appCheckToken_ = appCheckToken_;\n this.authToken_ = authToken_;\n this.onMessage_ = onMessage_;\n this.onReady_ = onReady_;\n this.onDisconnect_ = onDisconnect_;\n this.onKill_ = onKill_;\n this.lastSessionId = lastSessionId;\n this.connectionCount = 0;\n this.pendingDataMessages = [];\n this.state_ = 0 /* RealtimeState.CONNECTING */;\n this.log_ = logWrapper('c:' + this.id + ':');\n this.transportManager_ = new TransportManager(repoInfo_);\n this.log_('Connection created');\n this.start_();\n }\n /**\n * Starts a connection attempt\n */\n start_() {\n const conn = this.transportManager_.initialTransport();\n this.conn_ = new conn(this.nextTransportId_(), this.repoInfo_, this.applicationId_, this.appCheckToken_, this.authToken_, null, this.lastSessionId);\n // For certain transports (WebSockets), we need to send and receive several messages back and forth before we\n // can consider the transport healthy.\n this.primaryResponsesRequired_ = conn['responsesRequiredToBeHealthy'] || 0;\n const onMessageReceived = this.connReceiver_(this.conn_);\n const onConnectionLost = this.disconnReceiver_(this.conn_);\n this.tx_ = this.conn_;\n this.rx_ = this.conn_;\n this.secondaryConn_ = null;\n this.isHealthy_ = false;\n /*\n * Firefox doesn't like when code from one iframe tries to create another iframe by way of the parent frame.\n * This can occur in the case of a redirect, i.e. we guessed wrong on what server to connect to and received a reset.\n * Somehow, setTimeout seems to make this ok. That doesn't make sense from a security perspective, since you should\n * still have the context of your originating frame.\n */\n setTimeout(() => {\n // this.conn_ gets set to null in some of the tests. Check to make sure it still exists before using it\n this.conn_ && this.conn_.open(onMessageReceived, onConnectionLost);\n }, Math.floor(0));\n const healthyTimeoutMS = conn['healthyTimeout'] || 0;\n if (healthyTimeoutMS > 0) {\n this.healthyTimeout_ = setTimeoutNonBlocking(() => {\n this.healthyTimeout_ = null;\n if (!this.isHealthy_) {\n if (this.conn_ &&\n this.conn_.bytesReceived > BYTES_RECEIVED_HEALTHY_OVERRIDE) {\n this.log_('Connection exceeded healthy timeout but has received ' +\n this.conn_.bytesReceived +\n ' bytes. Marking connection healthy.');\n this.isHealthy_ = true;\n this.conn_.markConnectionHealthy();\n }\n else if (this.conn_ &&\n this.conn_.bytesSent > BYTES_SENT_HEALTHY_OVERRIDE) {\n this.log_('Connection exceeded healthy timeout but has sent ' +\n this.conn_.bytesSent +\n ' bytes. Leaving connection alive.');\n // NOTE: We don't want to mark it healthy, since we have no guarantee that the bytes have made it to\n // the server.\n }\n else {\n this.log_('Closing unhealthy connection after timeout.');\n this.close();\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }, Math.floor(healthyTimeoutMS));\n }\n }\n nextTransportId_() {\n return 'c:' + this.id + ':' + this.connectionCount++;\n }\n disconnReceiver_(conn) {\n return everConnected => {\n if (conn === this.conn_) {\n this.onConnectionLost_(everConnected);\n }\n else if (conn === this.secondaryConn_) {\n this.log_('Secondary connection lost.');\n this.onSecondaryConnectionLost_();\n }\n else {\n this.log_('closing an old connection');\n }\n };\n }\n connReceiver_(conn) {\n return (message) => {\n if (this.state_ !== 2 /* RealtimeState.DISCONNECTED */) {\n if (conn === this.rx_) {\n this.onPrimaryMessageReceived_(message);\n }\n else if (conn === this.secondaryConn_) {\n this.onSecondaryMessageReceived_(message);\n }\n else {\n this.log_('message on old connection');\n }\n }\n };\n }\n /**\n * @param dataMsg - An arbitrary data message to be sent to the server\n */\n sendRequest(dataMsg) {\n // wrap in a data message envelope and send it on\n const msg = { t: 'd', d: dataMsg };\n this.sendData_(msg);\n }\n tryCleanupConnection() {\n if (this.tx_ === this.secondaryConn_ && this.rx_ === this.secondaryConn_) {\n this.log_('cleaning up and promoting a connection: ' + this.secondaryConn_.connId);\n this.conn_ = this.secondaryConn_;\n this.secondaryConn_ = null;\n // the server will shutdown the old connection\n }\n }\n onSecondaryControl_(controlData) {\n if (MESSAGE_TYPE in controlData) {\n const cmd = controlData[MESSAGE_TYPE];\n if (cmd === SWITCH_ACK) {\n this.upgradeIfSecondaryHealthy_();\n }\n else if (cmd === CONTROL_RESET) {\n // Most likely the session wasn't valid. Abandon the switch attempt\n this.log_('Got a reset on secondary, closing it');\n this.secondaryConn_.close();\n // If we were already using this connection for something, than we need to fully close\n if (this.tx_ === this.secondaryConn_ ||\n this.rx_ === this.secondaryConn_) {\n this.close();\n }\n }\n else if (cmd === CONTROL_PONG) {\n this.log_('got pong on secondary.');\n this.secondaryResponsesRequired_--;\n this.upgradeIfSecondaryHealthy_();\n }\n }\n }\n onSecondaryMessageReceived_(parsedData) {\n const layer = requireKey('t', parsedData);\n const data = requireKey('d', parsedData);\n if (layer === 'c') {\n this.onSecondaryControl_(data);\n }\n else if (layer === 'd') {\n // got a data message, but we're still second connection. Need to buffer it up\n this.pendingDataMessages.push(data);\n }\n else {\n throw new Error('Unknown protocol layer: ' + layer);\n }\n }\n upgradeIfSecondaryHealthy_() {\n if (this.secondaryResponsesRequired_ <= 0) {\n this.log_('Secondary connection is healthy.');\n this.isHealthy_ = true;\n this.secondaryConn_.markConnectionHealthy();\n this.proceedWithUpgrade_();\n }\n else {\n // Send a ping to make sure the connection is healthy.\n this.log_('sending ping on secondary.');\n this.secondaryConn_.send({ t: 'c', d: { t: PING, d: {} } });\n }\n }\n proceedWithUpgrade_() {\n // tell this connection to consider itself open\n this.secondaryConn_.start();\n // send ack\n this.log_('sending client ack on secondary');\n this.secondaryConn_.send({ t: 'c', d: { t: SWITCH_ACK, d: {} } });\n // send end packet on primary transport, switch to sending on this one\n // can receive on this one, buffer responses until end received on primary transport\n this.log_('Ending transmission on primary');\n this.conn_.send({ t: 'c', d: { t: END_TRANSMISSION, d: {} } });\n this.tx_ = this.secondaryConn_;\n this.tryCleanupConnection();\n }\n onPrimaryMessageReceived_(parsedData) {\n // Must refer to parsedData properties in quotes, so closure doesn't touch them.\n const layer = requireKey('t', parsedData);\n const data = requireKey('d', parsedData);\n if (layer === 'c') {\n this.onControl_(data);\n }\n else if (layer === 'd') {\n this.onDataMessage_(data);\n }\n }\n onDataMessage_(message) {\n this.onPrimaryResponse_();\n // We don't do anything with data messages, just kick them up a level\n this.onMessage_(message);\n }\n onPrimaryResponse_() {\n if (!this.isHealthy_) {\n this.primaryResponsesRequired_--;\n if (this.primaryResponsesRequired_ <= 0) {\n this.log_('Primary connection is healthy.');\n this.isHealthy_ = true;\n this.conn_.markConnectionHealthy();\n }\n }\n }\n onControl_(controlData) {\n const cmd = requireKey(MESSAGE_TYPE, controlData);\n if (MESSAGE_DATA in controlData) {\n const payload = controlData[MESSAGE_DATA];\n if (cmd === SERVER_HELLO) {\n const handshakePayload = Object.assign({}, payload);\n if (this.repoInfo_.isUsingEmulator) {\n // Upon connecting, the emulator will pass the hostname that it's aware of, but we prefer the user's set hostname via `connectDatabaseEmulator` over what the emulator passes.\n handshakePayload.h = this.repoInfo_.host;\n }\n this.onHandshake_(handshakePayload);\n }\n else if (cmd === END_TRANSMISSION) {\n this.log_('recvd end transmission on primary');\n this.rx_ = this.secondaryConn_;\n for (let i = 0; i < this.pendingDataMessages.length; ++i) {\n this.onDataMessage_(this.pendingDataMessages[i]);\n }\n this.pendingDataMessages = [];\n this.tryCleanupConnection();\n }\n else if (cmd === CONTROL_SHUTDOWN) {\n // This was previously the 'onKill' callback passed to the lower-level connection\n // payload in this case is the reason for the shutdown. Generally a human-readable error\n this.onConnectionShutdown_(payload);\n }\n else if (cmd === CONTROL_RESET) {\n // payload in this case is the host we should contact\n this.onReset_(payload);\n }\n else if (cmd === CONTROL_ERROR) {\n error('Server Error: ' + payload);\n }\n else if (cmd === CONTROL_PONG) {\n this.log_('got pong on primary.');\n this.onPrimaryResponse_();\n this.sendPingOnPrimaryIfNecessary_();\n }\n else {\n error('Unknown control packet command: ' + cmd);\n }\n }\n }\n /**\n * @param handshake - The handshake data returned from the server\n */\n onHandshake_(handshake) {\n const timestamp = handshake.ts;\n const version = handshake.v;\n const host = handshake.h;\n this.sessionId = handshake.s;\n this.repoInfo_.host = host;\n // if we've already closed the connection, then don't bother trying to progress further\n if (this.state_ === 0 /* RealtimeState.CONNECTING */) {\n this.conn_.start();\n this.onConnectionEstablished_(this.conn_, timestamp);\n if (PROTOCOL_VERSION !== version) {\n warn('Protocol version mismatch detected');\n }\n // TODO: do we want to upgrade? when? maybe a delay?\n this.tryStartUpgrade_();\n }\n }\n tryStartUpgrade_() {\n const conn = this.transportManager_.upgradeTransport();\n if (conn) {\n this.startUpgrade_(conn);\n }\n }\n startUpgrade_(conn) {\n this.secondaryConn_ = new conn(this.nextTransportId_(), this.repoInfo_, this.applicationId_, this.appCheckToken_, this.authToken_, this.sessionId);\n // For certain transports (WebSockets), we need to send and receive several messages back and forth before we\n // can consider the transport healthy.\n this.secondaryResponsesRequired_ =\n conn['responsesRequiredToBeHealthy'] || 0;\n const onMessage = this.connReceiver_(this.secondaryConn_);\n const onDisconnect = this.disconnReceiver_(this.secondaryConn_);\n this.secondaryConn_.open(onMessage, onDisconnect);\n // If we haven't successfully upgraded after UPGRADE_TIMEOUT, give up and kill the secondary.\n setTimeoutNonBlocking(() => {\n if (this.secondaryConn_) {\n this.log_('Timed out trying to upgrade.');\n this.secondaryConn_.close();\n }\n }, Math.floor(UPGRADE_TIMEOUT));\n }\n onReset_(host) {\n this.log_('Reset packet received. New host: ' + host);\n this.repoInfo_.host = host;\n // TODO: if we're already \"connected\", we need to trigger a disconnect at the next layer up.\n // We don't currently support resets after the connection has already been established\n if (this.state_ === 1 /* RealtimeState.CONNECTED */) {\n this.close();\n }\n else {\n // Close whatever connections we have open and start again.\n this.closeConnections_();\n this.start_();\n }\n }\n onConnectionEstablished_(conn, timestamp) {\n this.log_('Realtime connection established.');\n this.conn_ = conn;\n this.state_ = 1 /* RealtimeState.CONNECTED */;\n if (this.onReady_) {\n this.onReady_(timestamp, this.sessionId);\n this.onReady_ = null;\n }\n // If after 5 seconds we haven't sent enough requests to the server to get the connection healthy,\n // send some pings.\n if (this.primaryResponsesRequired_ === 0) {\n this.log_('Primary connection is healthy.');\n this.isHealthy_ = true;\n }\n else {\n setTimeoutNonBlocking(() => {\n this.sendPingOnPrimaryIfNecessary_();\n }, Math.floor(DELAY_BEFORE_SENDING_EXTRA_REQUESTS));\n }\n }\n sendPingOnPrimaryIfNecessary_() {\n // If the connection isn't considered healthy yet, we'll send a noop ping packet request.\n if (!this.isHealthy_ && this.state_ === 1 /* RealtimeState.CONNECTED */) {\n this.log_('sending ping on primary.');\n this.sendData_({ t: 'c', d: { t: PING, d: {} } });\n }\n }\n onSecondaryConnectionLost_() {\n const conn = this.secondaryConn_;\n this.secondaryConn_ = null;\n if (this.tx_ === conn || this.rx_ === conn) {\n // we are relying on this connection already in some capacity. Therefore, a failure is real\n this.close();\n }\n }\n /**\n * @param everConnected - Whether or not the connection ever reached a server. Used to determine if\n * we should flush the host cache\n */\n onConnectionLost_(everConnected) {\n this.conn_ = null;\n // NOTE: IF you're seeing a Firefox error for this line, I think it might be because it's getting\n // called on window close and RealtimeState.CONNECTING is no longer defined. Just a guess.\n if (!everConnected && this.state_ === 0 /* RealtimeState.CONNECTING */) {\n this.log_('Realtime connection failed.');\n // Since we failed to connect at all, clear any cached entry for this namespace in case the machine went away\n if (this.repoInfo_.isCacheableHost()) {\n PersistentStorage.remove('host:' + this.repoInfo_.host);\n // reset the internal host to what we would show the user, i.e. .firebaseio.com\n this.repoInfo_.internalHost = this.repoInfo_.host;\n }\n }\n else if (this.state_ === 1 /* RealtimeState.CONNECTED */) {\n this.log_('Realtime connection lost.');\n }\n this.close();\n }\n onConnectionShutdown_(reason) {\n this.log_('Connection shutdown command received. Shutting down...');\n if (this.onKill_) {\n this.onKill_(reason);\n this.onKill_ = null;\n }\n // We intentionally don't want to fire onDisconnect (kill is a different case),\n // so clear the callback.\n this.onDisconnect_ = null;\n this.close();\n }\n sendData_(data) {\n if (this.state_ !== 1 /* RealtimeState.CONNECTED */) {\n throw 'Connection is not connected';\n }\n else {\n this.tx_.send(data);\n }\n }\n /**\n * Cleans up this connection, calling the appropriate callbacks\n */\n close() {\n if (this.state_ !== 2 /* RealtimeState.DISCONNECTED */) {\n this.log_('Closing realtime connection.');\n this.state_ = 2 /* RealtimeState.DISCONNECTED */;\n this.closeConnections_();\n if (this.onDisconnect_) {\n this.onDisconnect_();\n this.onDisconnect_ = null;\n }\n }\n }\n closeConnections_() {\n this.log_('Shutting down all connections');\n if (this.conn_) {\n this.conn_.close();\n this.conn_ = null;\n }\n if (this.secondaryConn_) {\n this.secondaryConn_.close();\n this.secondaryConn_ = null;\n }\n if (this.healthyTimeout_) {\n clearTimeout(this.healthyTimeout_);\n this.healthyTimeout_ = null;\n }\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Interface defining the set of actions that can be performed against the Firebase server\n * (basically corresponds to our wire protocol).\n *\n * @interface\n */\nclass ServerActions {\n put(pathString, data, onComplete, hash) { }\n merge(pathString, data, onComplete, hash) { }\n /**\n * Refreshes the auth token for the current connection.\n * @param token - The authentication token\n */\n refreshAuthToken(token) { }\n /**\n * Refreshes the app check token for the current connection.\n * @param token The app check token\n */\n refreshAppCheckToken(token) { }\n onDisconnectPut(pathString, data, onComplete) { }\n onDisconnectMerge(pathString, data, onComplete) { }\n onDisconnectCancel(pathString, onComplete) { }\n reportStats(stats) { }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Base class to be used if you want to emit events. Call the constructor with\n * the set of allowed event names.\n */\nclass EventEmitter {\n constructor(allowedEvents_) {\n this.allowedEvents_ = allowedEvents_;\n this.listeners_ = {};\n assert(Array.isArray(allowedEvents_) && allowedEvents_.length > 0, 'Requires a non-empty array');\n }\n /**\n * To be called by derived classes to trigger events.\n */\n trigger(eventType, ...varArgs) {\n if (Array.isArray(this.listeners_[eventType])) {\n // Clone the list, since callbacks could add/remove listeners.\n const listeners = [...this.listeners_[eventType]];\n for (let i = 0; i < listeners.length; i++) {\n listeners[i].callback.apply(listeners[i].context, varArgs);\n }\n }\n }\n on(eventType, callback, context) {\n this.validateEventType_(eventType);\n this.listeners_[eventType] = this.listeners_[eventType] || [];\n this.listeners_[eventType].push({ callback, context });\n const eventData = this.getInitialEvent(eventType);\n if (eventData) {\n callback.apply(context, eventData);\n }\n }\n off(eventType, callback, context) {\n this.validateEventType_(eventType);\n const listeners = this.listeners_[eventType] || [];\n for (let i = 0; i < listeners.length; i++) {\n if (listeners[i].callback === callback &&\n (!context || context === listeners[i].context)) {\n listeners.splice(i, 1);\n return;\n }\n }\n }\n validateEventType_(eventType) {\n assert(this.allowedEvents_.find(et => {\n return et === eventType;\n }), 'Unknown event: ' + eventType);\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Monitors online state (as reported by window.online/offline events).\n *\n * The expectation is that this could have many false positives (thinks we are online\n * when we're not), but no false negatives. So we can safely use it to determine when\n * we definitely cannot reach the internet.\n */\nclass OnlineMonitor extends EventEmitter {\n static getInstance() {\n return new OnlineMonitor();\n }\n constructor() {\n super(['online']);\n this.online_ = true;\n // We've had repeated complaints that Cordova apps can get stuck \"offline\", e.g.\n // https://forum.ionicframework.com/t/firebase-connection-is-lost-and-never-come-back/43810\n // It would seem that the 'online' event does not always fire consistently. So we disable it\n // for Cordova.\n if (typeof window !== 'undefined' &&\n typeof window.addEventListener !== 'undefined' &&\n !isMobileCordova()) {\n window.addEventListener('online', () => {\n if (!this.online_) {\n this.online_ = true;\n this.trigger('online', true);\n }\n }, false);\n window.addEventListener('offline', () => {\n if (this.online_) {\n this.online_ = false;\n this.trigger('online', false);\n }\n }, false);\n }\n }\n getInitialEvent(eventType) {\n assert(eventType === 'online', 'Unknown event type: ' + eventType);\n return [this.online_];\n }\n currentlyOnline() {\n return this.online_;\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/** Maximum key depth. */\nconst MAX_PATH_DEPTH = 32;\n/** Maximum number of (UTF8) bytes in a Firebase path. */\nconst MAX_PATH_LENGTH_BYTES = 768;\n/**\n * An immutable object representing a parsed path. It's immutable so that you\n * can pass them around to other functions without worrying about them changing\n * it.\n */\nclass Path {\n /**\n * @param pathOrString - Path string to parse, or another path, or the raw\n * tokens array\n */\n constructor(pathOrString, pieceNum) {\n if (pieceNum === void 0) {\n this.pieces_ = pathOrString.split('/');\n // Remove empty pieces.\n let copyTo = 0;\n for (let i = 0; i < this.pieces_.length; i++) {\n if (this.pieces_[i].length > 0) {\n this.pieces_[copyTo] = this.pieces_[i];\n copyTo++;\n }\n }\n this.pieces_.length = copyTo;\n this.pieceNum_ = 0;\n }\n else {\n this.pieces_ = pathOrString;\n this.pieceNum_ = pieceNum;\n }\n }\n toString() {\n let pathString = '';\n for (let i = this.pieceNum_; i < this.pieces_.length; i++) {\n if (this.pieces_[i] !== '') {\n pathString += '/' + this.pieces_[i];\n }\n }\n return pathString || '/';\n }\n}\nfunction newEmptyPath() {\n return new Path('');\n}\nfunction pathGetFront(path) {\n if (path.pieceNum_ >= path.pieces_.length) {\n return null;\n }\n return path.pieces_[path.pieceNum_];\n}\n/**\n * @returns The number of segments in this path\n */\nfunction pathGetLength(path) {\n return path.pieces_.length - path.pieceNum_;\n}\nfunction pathPopFront(path) {\n let pieceNum = path.pieceNum_;\n if (pieceNum < path.pieces_.length) {\n pieceNum++;\n }\n return new Path(path.pieces_, pieceNum);\n}\nfunction pathGetBack(path) {\n if (path.pieceNum_ < path.pieces_.length) {\n return path.pieces_[path.pieces_.length - 1];\n }\n return null;\n}\nfunction pathToUrlEncodedString(path) {\n let pathString = '';\n for (let i = path.pieceNum_; i < path.pieces_.length; i++) {\n if (path.pieces_[i] !== '') {\n pathString += '/' + encodeURIComponent(String(path.pieces_[i]));\n }\n }\n return pathString || '/';\n}\n/**\n * Shallow copy of the parts of the path.\n *\n */\nfunction pathSlice(path, begin = 0) {\n return path.pieces_.slice(path.pieceNum_ + begin);\n}\nfunction pathParent(path) {\n if (path.pieceNum_ >= path.pieces_.length) {\n return null;\n }\n const pieces = [];\n for (let i = path.pieceNum_; i < path.pieces_.length - 1; i++) {\n pieces.push(path.pieces_[i]);\n }\n return new Path(pieces, 0);\n}\nfunction pathChild(path, childPathObj) {\n const pieces = [];\n for (let i = path.pieceNum_; i < path.pieces_.length; i++) {\n pieces.push(path.pieces_[i]);\n }\n if (childPathObj instanceof Path) {\n for (let i = childPathObj.pieceNum_; i < childPathObj.pieces_.length; i++) {\n pieces.push(childPathObj.pieces_[i]);\n }\n }\n else {\n const childPieces = childPathObj.split('/');\n for (let i = 0; i < childPieces.length; i++) {\n if (childPieces[i].length > 0) {\n pieces.push(childPieces[i]);\n }\n }\n }\n return new Path(pieces, 0);\n}\n/**\n * @returns True if there are no segments in this path\n */\nfunction pathIsEmpty(path) {\n return path.pieceNum_ >= path.pieces_.length;\n}\n/**\n * @returns The path from outerPath to innerPath\n */\nfunction newRelativePath(outerPath, innerPath) {\n const outer = pathGetFront(outerPath), inner = pathGetFront(innerPath);\n if (outer === null) {\n return innerPath;\n }\n else if (outer === inner) {\n return newRelativePath(pathPopFront(outerPath), pathPopFront(innerPath));\n }\n else {\n throw new Error('INTERNAL ERROR: innerPath (' +\n innerPath +\n ') is not within ' +\n 'outerPath (' +\n outerPath +\n ')');\n }\n}\n/**\n * @returns -1, 0, 1 if left is less, equal, or greater than the right.\n */\nfunction pathCompare(left, right) {\n const leftKeys = pathSlice(left, 0);\n const rightKeys = pathSlice(right, 0);\n for (let i = 0; i < leftKeys.length && i < rightKeys.length; i++) {\n const cmp = nameCompare(leftKeys[i], rightKeys[i]);\n if (cmp !== 0) {\n return cmp;\n }\n }\n if (leftKeys.length === rightKeys.length) {\n return 0;\n }\n return leftKeys.length < rightKeys.length ? -1 : 1;\n}\n/**\n * @returns true if paths are the same.\n */\nfunction pathEquals(path, other) {\n if (pathGetLength(path) !== pathGetLength(other)) {\n return false;\n }\n for (let i = path.pieceNum_, j = other.pieceNum_; i <= path.pieces_.length; i++, j++) {\n if (path.pieces_[i] !== other.pieces_[j]) {\n return false;\n }\n }\n return true;\n}\n/**\n * @returns True if this path is a parent of (or the same as) other\n */\nfunction pathContains(path, other) {\n let i = path.pieceNum_;\n let j = other.pieceNum_;\n if (pathGetLength(path) > pathGetLength(other)) {\n return false;\n }\n while (i < path.pieces_.length) {\n if (path.pieces_[i] !== other.pieces_[j]) {\n return false;\n }\n ++i;\n ++j;\n }\n return true;\n}\n/**\n * Dynamic (mutable) path used to count path lengths.\n *\n * This class is used to efficiently check paths for valid\n * length (in UTF8 bytes) and depth (used in path validation).\n *\n * Throws Error exception if path is ever invalid.\n *\n * The definition of a path always begins with '/'.\n */\nclass ValidationPath {\n /**\n * @param path - Initial Path.\n * @param errorPrefix_ - Prefix for any error messages.\n */\n constructor(path, errorPrefix_) {\n this.errorPrefix_ = errorPrefix_;\n this.parts_ = pathSlice(path, 0);\n /** Initialize to number of '/' chars needed in path. */\n this.byteLength_ = Math.max(1, this.parts_.length);\n for (let i = 0; i < this.parts_.length; i++) {\n this.byteLength_ += stringLength(this.parts_[i]);\n }\n validationPathCheckValid(this);\n }\n}\nfunction validationPathPush(validationPath, child) {\n // Count the needed '/'\n if (validationPath.parts_.length > 0) {\n validationPath.byteLength_ += 1;\n }\n validationPath.parts_.push(child);\n validationPath.byteLength_ += stringLength(child);\n validationPathCheckValid(validationPath);\n}\nfunction validationPathPop(validationPath) {\n const last = validationPath.parts_.pop();\n validationPath.byteLength_ -= stringLength(last);\n // Un-count the previous '/'\n if (validationPath.parts_.length > 0) {\n validationPath.byteLength_ -= 1;\n }\n}\nfunction validationPathCheckValid(validationPath) {\n if (validationPath.byteLength_ > MAX_PATH_LENGTH_BYTES) {\n throw new Error(validationPath.errorPrefix_ +\n 'has a key path longer than ' +\n MAX_PATH_LENGTH_BYTES +\n ' bytes (' +\n validationPath.byteLength_ +\n ').');\n }\n if (validationPath.parts_.length > MAX_PATH_DEPTH) {\n throw new Error(validationPath.errorPrefix_ +\n 'path specified exceeds the maximum depth that can be written (' +\n MAX_PATH_DEPTH +\n ') or object contains a cycle ' +\n validationPathToErrorString(validationPath));\n }\n}\n/**\n * String for use in error messages - uses '.' notation for path.\n */\nfunction validationPathToErrorString(validationPath) {\n if (validationPath.parts_.length === 0) {\n return '';\n }\n return \"in property '\" + validationPath.parts_.join('.') + \"'\";\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass VisibilityMonitor extends EventEmitter {\n static getInstance() {\n return new VisibilityMonitor();\n }\n constructor() {\n super(['visible']);\n let hidden;\n let visibilityChange;\n if (typeof document !== 'undefined' &&\n typeof document.addEventListener !== 'undefined') {\n if (typeof document['hidden'] !== 'undefined') {\n // Opera 12.10 and Firefox 18 and later support\n visibilityChange = 'visibilitychange';\n hidden = 'hidden';\n }\n else if (typeof document['mozHidden'] !== 'undefined') {\n visibilityChange = 'mozvisibilitychange';\n hidden = 'mozHidden';\n }\n else if (typeof document['msHidden'] !== 'undefined') {\n visibilityChange = 'msvisibilitychange';\n hidden = 'msHidden';\n }\n else if (typeof document['webkitHidden'] !== 'undefined') {\n visibilityChange = 'webkitvisibilitychange';\n hidden = 'webkitHidden';\n }\n }\n // Initially, we always assume we are visible. This ensures that in browsers\n // without page visibility support or in cases where we are never visible\n // (e.g. chrome extension), we act as if we are visible, i.e. don't delay\n // reconnects\n this.visible_ = true;\n if (visibilityChange) {\n document.addEventListener(visibilityChange, () => {\n const visible = !document[hidden];\n if (visible !== this.visible_) {\n this.visible_ = visible;\n this.trigger('visible', visible);\n }\n }, false);\n }\n }\n getInitialEvent(eventType) {\n assert(eventType === 'visible', 'Unknown event type: ' + eventType);\n return [this.visible_];\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst RECONNECT_MIN_DELAY = 1000;\nconst RECONNECT_MAX_DELAY_DEFAULT = 60 * 5 * 1000; // 5 minutes in milliseconds (Case: 1858)\nconst RECONNECT_MAX_DELAY_FOR_ADMINS = 30 * 1000; // 30 seconds for admin clients (likely to be a backend server)\nconst RECONNECT_DELAY_MULTIPLIER = 1.3;\nconst RECONNECT_DELAY_RESET_TIMEOUT = 30000; // Reset delay back to MIN_DELAY after being connected for 30sec.\nconst SERVER_KILL_INTERRUPT_REASON = 'server_kill';\n// If auth fails repeatedly, we'll assume something is wrong and log a warning / back off.\nconst INVALID_TOKEN_THRESHOLD = 3;\n/**\n * Firebase connection. Abstracts wire protocol and handles reconnecting.\n *\n * NOTE: All JSON objects sent to the realtime connection must have property names enclosed\n * in quotes to make sure the closure compiler does not minify them.\n */\nclass PersistentConnection extends ServerActions {\n /**\n * @param repoInfo_ - Data about the namespace we are connecting to\n * @param applicationId_ - The Firebase App ID for this project\n * @param onDataUpdate_ - A callback for new data from the server\n */\n constructor(repoInfo_, applicationId_, onDataUpdate_, onConnectStatus_, onServerInfoUpdate_, authTokenProvider_, appCheckTokenProvider_, authOverride_) {\n super();\n this.repoInfo_ = repoInfo_;\n this.applicationId_ = applicationId_;\n this.onDataUpdate_ = onDataUpdate_;\n this.onConnectStatus_ = onConnectStatus_;\n this.onServerInfoUpdate_ = onServerInfoUpdate_;\n this.authTokenProvider_ = authTokenProvider_;\n this.appCheckTokenProvider_ = appCheckTokenProvider_;\n this.authOverride_ = authOverride_;\n // Used for diagnostic logging.\n this.id = PersistentConnection.nextPersistentConnectionId_++;\n this.log_ = logWrapper('p:' + this.id + ':');\n this.interruptReasons_ = {};\n this.listens = new Map();\n this.outstandingPuts_ = [];\n this.outstandingGets_ = [];\n this.outstandingPutCount_ = 0;\n this.outstandingGetCount_ = 0;\n this.onDisconnectRequestQueue_ = [];\n this.connected_ = false;\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\n this.maxReconnectDelay_ = RECONNECT_MAX_DELAY_DEFAULT;\n this.securityDebugCallback_ = null;\n this.lastSessionId = null;\n this.establishConnectionTimer_ = null;\n this.visible_ = false;\n // Before we get connected, we keep a queue of pending messages to send.\n this.requestCBHash_ = {};\n this.requestNumber_ = 0;\n this.realtime_ = null;\n this.authToken_ = null;\n this.appCheckToken_ = null;\n this.forceTokenRefresh_ = false;\n this.invalidAuthTokenCount_ = 0;\n this.invalidAppCheckTokenCount_ = 0;\n this.firstConnection_ = true;\n this.lastConnectionAttemptTime_ = null;\n this.lastConnectionEstablishedTime_ = null;\n if (authOverride_ && !isNodeSdk()) {\n throw new Error('Auth override specified in options, but not supported on non Node.js platforms');\n }\n VisibilityMonitor.getInstance().on('visible', this.onVisible_, this);\n if (repoInfo_.host.indexOf('fblocal') === -1) {\n OnlineMonitor.getInstance().on('online', this.onOnline_, this);\n }\n }\n sendRequest(action, body, onResponse) {\n const curReqNum = ++this.requestNumber_;\n const msg = { r: curReqNum, a: action, b: body };\n this.log_(stringify(msg));\n assert(this.connected_, \"sendRequest call when we're not connected not allowed.\");\n this.realtime_.sendRequest(msg);\n if (onResponse) {\n this.requestCBHash_[curReqNum] = onResponse;\n }\n }\n get(query) {\n this.initConnection_();\n const deferred = new Deferred();\n const request = {\n p: query._path.toString(),\n q: query._queryObject\n };\n const outstandingGet = {\n action: 'g',\n request,\n onComplete: (message) => {\n const payload = message['d'];\n if (message['s'] === 'ok') {\n deferred.resolve(payload);\n }\n else {\n deferred.reject(payload);\n }\n }\n };\n this.outstandingGets_.push(outstandingGet);\n this.outstandingGetCount_++;\n const index = this.outstandingGets_.length - 1;\n if (this.connected_) {\n this.sendGet_(index);\n }\n return deferred.promise;\n }\n listen(query, currentHashFn, tag, onComplete) {\n this.initConnection_();\n const queryId = query._queryIdentifier;\n const pathString = query._path.toString();\n this.log_('Listen called for ' + pathString + ' ' + queryId);\n if (!this.listens.has(pathString)) {\n this.listens.set(pathString, new Map());\n }\n assert(query._queryParams.isDefault() || !query._queryParams.loadsAllData(), 'listen() called for non-default but complete query');\n assert(!this.listens.get(pathString).has(queryId), `listen() called twice for same path/queryId.`);\n const listenSpec = {\n onComplete,\n hashFn: currentHashFn,\n query,\n tag\n };\n this.listens.get(pathString).set(queryId, listenSpec);\n if (this.connected_) {\n this.sendListen_(listenSpec);\n }\n }\n sendGet_(index) {\n const get = this.outstandingGets_[index];\n this.sendRequest('g', get.request, (message) => {\n delete this.outstandingGets_[index];\n this.outstandingGetCount_--;\n if (this.outstandingGetCount_ === 0) {\n this.outstandingGets_ = [];\n }\n if (get.onComplete) {\n get.onComplete(message);\n }\n });\n }\n sendListen_(listenSpec) {\n const query = listenSpec.query;\n const pathString = query._path.toString();\n const queryId = query._queryIdentifier;\n this.log_('Listen on ' + pathString + ' for ' + queryId);\n const req = { /*path*/ p: pathString };\n const action = 'q';\n // Only bother to send query if it's non-default.\n if (listenSpec.tag) {\n req['q'] = query._queryObject;\n req['t'] = listenSpec.tag;\n }\n req[ /*hash*/'h'] = listenSpec.hashFn();\n this.sendRequest(action, req, (message) => {\n const payload = message[ /*data*/'d'];\n const status = message[ /*status*/'s'];\n // print warnings in any case...\n PersistentConnection.warnOnListenWarnings_(payload, query);\n const currentListenSpec = this.listens.get(pathString) &&\n this.listens.get(pathString).get(queryId);\n // only trigger actions if the listen hasn't been removed and readded\n if (currentListenSpec === listenSpec) {\n this.log_('listen response', message);\n if (status !== 'ok') {\n this.removeListen_(pathString, queryId);\n }\n if (listenSpec.onComplete) {\n listenSpec.onComplete(status, payload);\n }\n }\n });\n }\n static warnOnListenWarnings_(payload, query) {\n if (payload && typeof payload === 'object' && contains(payload, 'w')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const warnings = safeGet(payload, 'w');\n if (Array.isArray(warnings) && ~warnings.indexOf('no_index')) {\n const indexSpec = '\".indexOn\": \"' + query._queryParams.getIndex().toString() + '\"';\n const indexPath = query._path.toString();\n warn(`Using an unspecified index. Your data will be downloaded and ` +\n `filtered on the client. Consider adding ${indexSpec} at ` +\n `${indexPath} to your security rules for better performance.`);\n }\n }\n }\n refreshAuthToken(token) {\n this.authToken_ = token;\n this.log_('Auth token refreshed');\n if (this.authToken_) {\n this.tryAuth();\n }\n else {\n //If we're connected we want to let the server know to unauthenticate us. If we're not connected, simply delete\n //the credential so we dont become authenticated next time we connect.\n if (this.connected_) {\n this.sendRequest('unauth', {}, () => { });\n }\n }\n this.reduceReconnectDelayIfAdminCredential_(token);\n }\n reduceReconnectDelayIfAdminCredential_(credential) {\n // NOTE: This isn't intended to be bulletproof (a malicious developer can always just modify the client).\n // Additionally, we don't bother resetting the max delay back to the default if auth fails / expires.\n const isFirebaseSecret = credential && credential.length === 40;\n if (isFirebaseSecret || isAdmin(credential)) {\n this.log_('Admin auth credential detected. Reducing max reconnect time.');\n this.maxReconnectDelay_ = RECONNECT_MAX_DELAY_FOR_ADMINS;\n }\n }\n refreshAppCheckToken(token) {\n this.appCheckToken_ = token;\n this.log_('App check token refreshed');\n if (this.appCheckToken_) {\n this.tryAppCheck();\n }\n else {\n //If we're connected we want to let the server know to unauthenticate us.\n //If we're not connected, simply delete the credential so we dont become\n // authenticated next time we connect.\n if (this.connected_) {\n this.sendRequest('unappeck', {}, () => { });\n }\n }\n }\n /**\n * Attempts to authenticate with the given credentials. If the authentication attempt fails, it's triggered like\n * a auth revoked (the connection is closed).\n */\n tryAuth() {\n if (this.connected_ && this.authToken_) {\n const token = this.authToken_;\n const authMethod = isValidFormat(token) ? 'auth' : 'gauth';\n const requestData = { cred: token };\n if (this.authOverride_ === null) {\n requestData['noauth'] = true;\n }\n else if (typeof this.authOverride_ === 'object') {\n requestData['authvar'] = this.authOverride_;\n }\n this.sendRequest(authMethod, requestData, (res) => {\n const status = res[ /*status*/'s'];\n const data = res[ /*data*/'d'] || 'error';\n if (this.authToken_ === token) {\n if (status === 'ok') {\n this.invalidAuthTokenCount_ = 0;\n }\n else {\n // Triggers reconnect and force refresh for auth token\n this.onAuthRevoked_(status, data);\n }\n }\n });\n }\n }\n /**\n * Attempts to authenticate with the given token. If the authentication\n * attempt fails, it's triggered like the token was revoked (the connection is\n * closed).\n */\n tryAppCheck() {\n if (this.connected_ && this.appCheckToken_) {\n this.sendRequest('appcheck', { 'token': this.appCheckToken_ }, (res) => {\n const status = res[ /*status*/'s'];\n const data = res[ /*data*/'d'] || 'error';\n if (status === 'ok') {\n this.invalidAppCheckTokenCount_ = 0;\n }\n else {\n this.onAppCheckRevoked_(status, data);\n }\n });\n }\n }\n /**\n * @inheritDoc\n */\n unlisten(query, tag) {\n const pathString = query._path.toString();\n const queryId = query._queryIdentifier;\n this.log_('Unlisten called for ' + pathString + ' ' + queryId);\n assert(query._queryParams.isDefault() || !query._queryParams.loadsAllData(), 'unlisten() called for non-default but complete query');\n const listen = this.removeListen_(pathString, queryId);\n if (listen && this.connected_) {\n this.sendUnlisten_(pathString, queryId, query._queryObject, tag);\n }\n }\n sendUnlisten_(pathString, queryId, queryObj, tag) {\n this.log_('Unlisten on ' + pathString + ' for ' + queryId);\n const req = { /*path*/ p: pathString };\n const action = 'n';\n // Only bother sending queryId if it's non-default.\n if (tag) {\n req['q'] = queryObj;\n req['t'] = tag;\n }\n this.sendRequest(action, req);\n }\n onDisconnectPut(pathString, data, onComplete) {\n this.initConnection_();\n if (this.connected_) {\n this.sendOnDisconnect_('o', pathString, data, onComplete);\n }\n else {\n this.onDisconnectRequestQueue_.push({\n pathString,\n action: 'o',\n data,\n onComplete\n });\n }\n }\n onDisconnectMerge(pathString, data, onComplete) {\n this.initConnection_();\n if (this.connected_) {\n this.sendOnDisconnect_('om', pathString, data, onComplete);\n }\n else {\n this.onDisconnectRequestQueue_.push({\n pathString,\n action: 'om',\n data,\n onComplete\n });\n }\n }\n onDisconnectCancel(pathString, onComplete) {\n this.initConnection_();\n if (this.connected_) {\n this.sendOnDisconnect_('oc', pathString, null, onComplete);\n }\n else {\n this.onDisconnectRequestQueue_.push({\n pathString,\n action: 'oc',\n data: null,\n onComplete\n });\n }\n }\n sendOnDisconnect_(action, pathString, data, onComplete) {\n const request = { /*path*/ p: pathString, /*data*/ d: data };\n this.log_('onDisconnect ' + action, request);\n this.sendRequest(action, request, (response) => {\n if (onComplete) {\n setTimeout(() => {\n onComplete(response[ /*status*/'s'], response[ /* data */'d']);\n }, Math.floor(0));\n }\n });\n }\n put(pathString, data, onComplete, hash) {\n this.putInternal('p', pathString, data, onComplete, hash);\n }\n merge(pathString, data, onComplete, hash) {\n this.putInternal('m', pathString, data, onComplete, hash);\n }\n putInternal(action, pathString, data, onComplete, hash) {\n this.initConnection_();\n const request = {\n /*path*/ p: pathString,\n /*data*/ d: data\n };\n if (hash !== undefined) {\n request[ /*hash*/'h'] = hash;\n }\n // TODO: Only keep track of the most recent put for a given path?\n this.outstandingPuts_.push({\n action,\n request,\n onComplete\n });\n this.outstandingPutCount_++;\n const index = this.outstandingPuts_.length - 1;\n if (this.connected_) {\n this.sendPut_(index);\n }\n else {\n this.log_('Buffering put: ' + pathString);\n }\n }\n sendPut_(index) {\n const action = this.outstandingPuts_[index].action;\n const request = this.outstandingPuts_[index].request;\n const onComplete = this.outstandingPuts_[index].onComplete;\n this.outstandingPuts_[index].queued = this.connected_;\n this.sendRequest(action, request, (message) => {\n this.log_(action + ' response', message);\n delete this.outstandingPuts_[index];\n this.outstandingPutCount_--;\n // Clean up array occasionally.\n if (this.outstandingPutCount_ === 0) {\n this.outstandingPuts_ = [];\n }\n if (onComplete) {\n onComplete(message[ /*status*/'s'], message[ /* data */'d']);\n }\n });\n }\n reportStats(stats) {\n // If we're not connected, we just drop the stats.\n if (this.connected_) {\n const request = { /*counters*/ c: stats };\n this.log_('reportStats', request);\n this.sendRequest(/*stats*/ 's', request, result => {\n const status = result[ /*status*/'s'];\n if (status !== 'ok') {\n const errorReason = result[ /* data */'d'];\n this.log_('reportStats', 'Error sending stats: ' + errorReason);\n }\n });\n }\n }\n onDataMessage_(message) {\n if ('r' in message) {\n // this is a response\n this.log_('from server: ' + stringify(message));\n const reqNum = message['r'];\n const onResponse = this.requestCBHash_[reqNum];\n if (onResponse) {\n delete this.requestCBHash_[reqNum];\n onResponse(message[ /*body*/'b']);\n }\n }\n else if ('error' in message) {\n throw 'A server-side error has occurred: ' + message['error'];\n }\n else if ('a' in message) {\n // a and b are action and body, respectively\n this.onDataPush_(message['a'], message['b']);\n }\n }\n onDataPush_(action, body) {\n this.log_('handleServerMessage', action, body);\n if (action === 'd') {\n this.onDataUpdate_(body[ /*path*/'p'], body[ /*data*/'d'], \n /*isMerge*/ false, body['t']);\n }\n else if (action === 'm') {\n this.onDataUpdate_(body[ /*path*/'p'], body[ /*data*/'d'], \n /*isMerge=*/ true, body['t']);\n }\n else if (action === 'c') {\n this.onListenRevoked_(body[ /*path*/'p'], body[ /*query*/'q']);\n }\n else if (action === 'ac') {\n this.onAuthRevoked_(body[ /*status code*/'s'], body[ /* explanation */'d']);\n }\n else if (action === 'apc') {\n this.onAppCheckRevoked_(body[ /*status code*/'s'], body[ /* explanation */'d']);\n }\n else if (action === 'sd') {\n this.onSecurityDebugPacket_(body);\n }\n else {\n error('Unrecognized action received from server: ' +\n stringify(action) +\n '\\nAre you using the latest client?');\n }\n }\n onReady_(timestamp, sessionId) {\n this.log_('connection ready');\n this.connected_ = true;\n this.lastConnectionEstablishedTime_ = new Date().getTime();\n this.handleTimestamp_(timestamp);\n this.lastSessionId = sessionId;\n if (this.firstConnection_) {\n this.sendConnectStats_();\n }\n this.restoreState_();\n this.firstConnection_ = false;\n this.onConnectStatus_(true);\n }\n scheduleConnect_(timeout) {\n assert(!this.realtime_, \"Scheduling a connect when we're already connected/ing?\");\n if (this.establishConnectionTimer_) {\n clearTimeout(this.establishConnectionTimer_);\n }\n // NOTE: Even when timeout is 0, it's important to do a setTimeout to work around an infuriating \"Security Error\" in\n // Firefox when trying to write to our long-polling iframe in some scenarios (e.g. Forge or our unit tests).\n this.establishConnectionTimer_ = setTimeout(() => {\n this.establishConnectionTimer_ = null;\n this.establishConnection_();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }, Math.floor(timeout));\n }\n initConnection_() {\n if (!this.realtime_ && this.firstConnection_) {\n this.scheduleConnect_(0);\n }\n }\n onVisible_(visible) {\n // NOTE: Tabbing away and back to a window will defeat our reconnect backoff, but I think that's fine.\n if (visible &&\n !this.visible_ &&\n this.reconnectDelay_ === this.maxReconnectDelay_) {\n this.log_('Window became visible. Reducing delay.');\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\n if (!this.realtime_) {\n this.scheduleConnect_(0);\n }\n }\n this.visible_ = visible;\n }\n onOnline_(online) {\n if (online) {\n this.log_('Browser went online.');\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\n if (!this.realtime_) {\n this.scheduleConnect_(0);\n }\n }\n else {\n this.log_('Browser went offline. Killing connection.');\n if (this.realtime_) {\n this.realtime_.close();\n }\n }\n }\n onRealtimeDisconnect_() {\n this.log_('data client disconnected');\n this.connected_ = false;\n this.realtime_ = null;\n // Since we don't know if our sent transactions succeeded or not, we need to cancel them.\n this.cancelSentTransactions_();\n // Clear out the pending requests.\n this.requestCBHash_ = {};\n if (this.shouldReconnect_()) {\n if (!this.visible_) {\n this.log_(\"Window isn't visible. Delaying reconnect.\");\n this.reconnectDelay_ = this.maxReconnectDelay_;\n this.lastConnectionAttemptTime_ = new Date().getTime();\n }\n else if (this.lastConnectionEstablishedTime_) {\n // If we've been connected long enough, reset reconnect delay to minimum.\n const timeSinceLastConnectSucceeded = new Date().getTime() - this.lastConnectionEstablishedTime_;\n if (timeSinceLastConnectSucceeded > RECONNECT_DELAY_RESET_TIMEOUT) {\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\n }\n this.lastConnectionEstablishedTime_ = null;\n }\n const timeSinceLastConnectAttempt = new Date().getTime() - this.lastConnectionAttemptTime_;\n let reconnectDelay = Math.max(0, this.reconnectDelay_ - timeSinceLastConnectAttempt);\n reconnectDelay = Math.random() * reconnectDelay;\n this.log_('Trying to reconnect in ' + reconnectDelay + 'ms');\n this.scheduleConnect_(reconnectDelay);\n // Adjust reconnect delay for next time.\n this.reconnectDelay_ = Math.min(this.maxReconnectDelay_, this.reconnectDelay_ * RECONNECT_DELAY_MULTIPLIER);\n }\n this.onConnectStatus_(false);\n }\n async establishConnection_() {\n if (this.shouldReconnect_()) {\n this.log_('Making a connection attempt');\n this.lastConnectionAttemptTime_ = new Date().getTime();\n this.lastConnectionEstablishedTime_ = null;\n const onDataMessage = this.onDataMessage_.bind(this);\n const onReady = this.onReady_.bind(this);\n const onDisconnect = this.onRealtimeDisconnect_.bind(this);\n const connId = this.id + ':' + PersistentConnection.nextConnectionId_++;\n const lastSessionId = this.lastSessionId;\n let canceled = false;\n let connection = null;\n const closeFn = function () {\n if (connection) {\n connection.close();\n }\n else {\n canceled = true;\n onDisconnect();\n }\n };\n const sendRequestFn = function (msg) {\n assert(connection, \"sendRequest call when we're not connected not allowed.\");\n connection.sendRequest(msg);\n };\n this.realtime_ = {\n close: closeFn,\n sendRequest: sendRequestFn\n };\n const forceRefresh = this.forceTokenRefresh_;\n this.forceTokenRefresh_ = false;\n try {\n // First fetch auth and app check token, and establish connection after\n // fetching the token was successful\n const [authToken, appCheckToken] = await Promise.all([\n this.authTokenProvider_.getToken(forceRefresh),\n this.appCheckTokenProvider_.getToken(forceRefresh)\n ]);\n if (!canceled) {\n log('getToken() completed. Creating connection.');\n this.authToken_ = authToken && authToken.accessToken;\n this.appCheckToken_ = appCheckToken && appCheckToken.token;\n connection = new Connection(connId, this.repoInfo_, this.applicationId_, this.appCheckToken_, this.authToken_, onDataMessage, onReady, onDisconnect, \n /* onKill= */ reason => {\n warn(reason + ' (' + this.repoInfo_.toString() + ')');\n this.interrupt(SERVER_KILL_INTERRUPT_REASON);\n }, lastSessionId);\n }\n else {\n log('getToken() completed but was canceled');\n }\n }\n catch (error) {\n this.log_('Failed to get token: ' + error);\n if (!canceled) {\n if (this.repoInfo_.nodeAdmin) {\n // This may be a critical error for the Admin Node.js SDK, so log a warning.\n // But getToken() may also just have temporarily failed, so we still want to\n // continue retrying.\n warn(error);\n }\n closeFn();\n }\n }\n }\n }\n interrupt(reason) {\n log('Interrupting connection for reason: ' + reason);\n this.interruptReasons_[reason] = true;\n if (this.realtime_) {\n this.realtime_.close();\n }\n else {\n if (this.establishConnectionTimer_) {\n clearTimeout(this.establishConnectionTimer_);\n this.establishConnectionTimer_ = null;\n }\n if (this.connected_) {\n this.onRealtimeDisconnect_();\n }\n }\n }\n resume(reason) {\n log('Resuming connection for reason: ' + reason);\n delete this.interruptReasons_[reason];\n if (isEmpty(this.interruptReasons_)) {\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\n if (!this.realtime_) {\n this.scheduleConnect_(0);\n }\n }\n }\n handleTimestamp_(timestamp) {\n const delta = timestamp - new Date().getTime();\n this.onServerInfoUpdate_({ serverTimeOffset: delta });\n }\n cancelSentTransactions_() {\n for (let i = 0; i < this.outstandingPuts_.length; i++) {\n const put = this.outstandingPuts_[i];\n if (put && /*hash*/ 'h' in put.request && put.queued) {\n if (put.onComplete) {\n put.onComplete('disconnect');\n }\n delete this.outstandingPuts_[i];\n this.outstandingPutCount_--;\n }\n }\n // Clean up array occasionally.\n if (this.outstandingPutCount_ === 0) {\n this.outstandingPuts_ = [];\n }\n }\n onListenRevoked_(pathString, query) {\n // Remove the listen and manufacture a \"permission_denied\" error for the failed listen.\n let queryId;\n if (!query) {\n queryId = 'default';\n }\n else {\n queryId = query.map(q => ObjectToUniqueKey(q)).join('$');\n }\n const listen = this.removeListen_(pathString, queryId);\n if (listen && listen.onComplete) {\n listen.onComplete('permission_denied');\n }\n }\n removeListen_(pathString, queryId) {\n const normalizedPathString = new Path(pathString).toString(); // normalize path.\n let listen;\n if (this.listens.has(normalizedPathString)) {\n const map = this.listens.get(normalizedPathString);\n listen = map.get(queryId);\n map.delete(queryId);\n if (map.size === 0) {\n this.listens.delete(normalizedPathString);\n }\n }\n else {\n // all listens for this path has already been removed\n listen = undefined;\n }\n return listen;\n }\n onAuthRevoked_(statusCode, explanation) {\n log('Auth token revoked: ' + statusCode + '/' + explanation);\n this.authToken_ = null;\n this.forceTokenRefresh_ = true;\n this.realtime_.close();\n if (statusCode === 'invalid_token' || statusCode === 'permission_denied') {\n // We'll wait a couple times before logging the warning / increasing the\n // retry period since oauth tokens will report as \"invalid\" if they're\n // just expired. Plus there may be transient issues that resolve themselves.\n this.invalidAuthTokenCount_++;\n if (this.invalidAuthTokenCount_ >= INVALID_TOKEN_THRESHOLD) {\n // Set a long reconnect delay because recovery is unlikely\n this.reconnectDelay_ = RECONNECT_MAX_DELAY_FOR_ADMINS;\n // Notify the auth token provider that the token is invalid, which will log\n // a warning\n this.authTokenProvider_.notifyForInvalidToken();\n }\n }\n }\n onAppCheckRevoked_(statusCode, explanation) {\n log('App check token revoked: ' + statusCode + '/' + explanation);\n this.appCheckToken_ = null;\n this.forceTokenRefresh_ = true;\n // Note: We don't close the connection as the developer may not have\n // enforcement enabled. The backend closes connections with enforcements.\n if (statusCode === 'invalid_token' || statusCode === 'permission_denied') {\n // We'll wait a couple times before logging the warning / increasing the\n // retry period since oauth tokens will report as \"invalid\" if they're\n // just expired. Plus there may be transient issues that resolve themselves.\n this.invalidAppCheckTokenCount_++;\n if (this.invalidAppCheckTokenCount_ >= INVALID_TOKEN_THRESHOLD) {\n this.appCheckTokenProvider_.notifyForInvalidToken();\n }\n }\n }\n onSecurityDebugPacket_(body) {\n if (this.securityDebugCallback_) {\n this.securityDebugCallback_(body);\n }\n else {\n if ('msg' in body) {\n console.log('FIREBASE: ' + body['msg'].replace('\\n', '\\nFIREBASE: '));\n }\n }\n }\n restoreState_() {\n //Re-authenticate ourselves if we have a credential stored.\n this.tryAuth();\n this.tryAppCheck();\n // Puts depend on having received the corresponding data update from the server before they complete, so we must\n // make sure to send listens before puts.\n for (const queries of this.listens.values()) {\n for (const listenSpec of queries.values()) {\n this.sendListen_(listenSpec);\n }\n }\n for (let i = 0; i < this.outstandingPuts_.length; i++) {\n if (this.outstandingPuts_[i]) {\n this.sendPut_(i);\n }\n }\n while (this.onDisconnectRequestQueue_.length) {\n const request = this.onDisconnectRequestQueue_.shift();\n this.sendOnDisconnect_(request.action, request.pathString, request.data, request.onComplete);\n }\n for (let i = 0; i < this.outstandingGets_.length; i++) {\n if (this.outstandingGets_[i]) {\n this.sendGet_(i);\n }\n }\n }\n /**\n * Sends client stats for first connection\n */\n sendConnectStats_() {\n const stats = {};\n let clientName = 'js';\n if (isNodeSdk()) {\n if (this.repoInfo_.nodeAdmin) {\n clientName = 'admin_node';\n }\n else {\n clientName = 'node';\n }\n }\n stats['sdk.' + clientName + '.' + SDK_VERSION.replace(/\\./g, '-')] = 1;\n if (isMobileCordova()) {\n stats['framework.cordova'] = 1;\n }\n else if (isReactNative()) {\n stats['framework.reactnative'] = 1;\n }\n this.reportStats(stats);\n }\n shouldReconnect_() {\n const online = OnlineMonitor.getInstance().currentlyOnline();\n return isEmpty(this.interruptReasons_) && online;\n }\n}\nPersistentConnection.nextPersistentConnectionId_ = 0;\n/**\n * Counter for number of connections created. Mainly used for tagging in the logs\n */\nPersistentConnection.nextConnectionId_ = 0;\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass NamedNode {\n constructor(name, node) {\n this.name = name;\n this.node = node;\n }\n static Wrap(name, node) {\n return new NamedNode(name, node);\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass Index {\n /**\n * @returns A standalone comparison function for\n * this index\n */\n getCompare() {\n return this.compare.bind(this);\n }\n /**\n * Given a before and after value for a node, determine if the indexed value has changed. Even if they are different,\n * it's possible that the changes are isolated to parts of the snapshot that are not indexed.\n *\n *\n * @returns True if the portion of the snapshot being indexed changed between oldNode and newNode\n */\n indexedValueChanged(oldNode, newNode) {\n const oldWrapped = new NamedNode(MIN_NAME, oldNode);\n const newWrapped = new NamedNode(MIN_NAME, newNode);\n return this.compare(oldWrapped, newWrapped) !== 0;\n }\n /**\n * @returns a node wrapper that will sort equal to or less than\n * any other node wrapper, using this index\n */\n minPost() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return NamedNode.MIN;\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nlet __EMPTY_NODE;\nclass KeyIndex extends Index {\n static get __EMPTY_NODE() {\n return __EMPTY_NODE;\n }\n static set __EMPTY_NODE(val) {\n __EMPTY_NODE = val;\n }\n compare(a, b) {\n return nameCompare(a.name, b.name);\n }\n isDefinedOn(node) {\n // We could probably return true here (since every node has a key), but it's never called\n // so just leaving unimplemented for now.\n throw assertionError('KeyIndex.isDefinedOn not expected to be called.');\n }\n indexedValueChanged(oldNode, newNode) {\n return false; // The key for a node never changes.\n }\n minPost() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return NamedNode.MIN;\n }\n maxPost() {\n // TODO: This should really be created once and cached in a static property, but\n // NamedNode isn't defined yet, so I can't use it in a static. Bleh.\n return new NamedNode(MAX_NAME, __EMPTY_NODE);\n }\n makePost(indexValue, name) {\n assert(typeof indexValue === 'string', 'KeyIndex indexValue must always be a string.');\n // We just use empty node, but it'll never be compared, since our comparator only looks at name.\n return new NamedNode(indexValue, __EMPTY_NODE);\n }\n /**\n * @returns String representation for inclusion in a query spec\n */\n toString() {\n return '.key';\n }\n}\nconst KEY_INDEX = new KeyIndex();\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * An iterator over an LLRBNode.\n */\nclass SortedMapIterator {\n /**\n * @param node - Node to iterate.\n * @param isReverse_ - Whether or not to iterate in reverse\n */\n constructor(node, startKey, comparator, isReverse_, resultGenerator_ = null) {\n this.isReverse_ = isReverse_;\n this.resultGenerator_ = resultGenerator_;\n this.nodeStack_ = [];\n let cmp = 1;\n while (!node.isEmpty()) {\n node = node;\n cmp = startKey ? comparator(node.key, startKey) : 1;\n // flip the comparison if we're going in reverse\n if (isReverse_) {\n cmp *= -1;\n }\n if (cmp < 0) {\n // This node is less than our start key. ignore it\n if (this.isReverse_) {\n node = node.left;\n }\n else {\n node = node.right;\n }\n }\n else if (cmp === 0) {\n // This node is exactly equal to our start key. Push it on the stack, but stop iterating;\n this.nodeStack_.push(node);\n break;\n }\n else {\n // This node is greater than our start key, add it to the stack and move to the next one\n this.nodeStack_.push(node);\n if (this.isReverse_) {\n node = node.right;\n }\n else {\n node = node.left;\n }\n }\n }\n }\n getNext() {\n if (this.nodeStack_.length === 0) {\n return null;\n }\n let node = this.nodeStack_.pop();\n let result;\n if (this.resultGenerator_) {\n result = this.resultGenerator_(node.key, node.value);\n }\n else {\n result = { key: node.key, value: node.value };\n }\n if (this.isReverse_) {\n node = node.left;\n while (!node.isEmpty()) {\n this.nodeStack_.push(node);\n node = node.right;\n }\n }\n else {\n node = node.right;\n while (!node.isEmpty()) {\n this.nodeStack_.push(node);\n node = node.left;\n }\n }\n return result;\n }\n hasNext() {\n return this.nodeStack_.length > 0;\n }\n peek() {\n if (this.nodeStack_.length === 0) {\n return null;\n }\n const node = this.nodeStack_[this.nodeStack_.length - 1];\n if (this.resultGenerator_) {\n return this.resultGenerator_(node.key, node.value);\n }\n else {\n return { key: node.key, value: node.value };\n }\n }\n}\n/**\n * Represents a node in a Left-leaning Red-Black tree.\n */\nclass LLRBNode {\n /**\n * @param key - Key associated with this node.\n * @param value - Value associated with this node.\n * @param color - Whether this node is red.\n * @param left - Left child.\n * @param right - Right child.\n */\n constructor(key, value, color, left, right) {\n this.key = key;\n this.value = value;\n this.color = color != null ? color : LLRBNode.RED;\n this.left =\n left != null ? left : SortedMap.EMPTY_NODE;\n this.right =\n right != null ? right : SortedMap.EMPTY_NODE;\n }\n /**\n * Returns a copy of the current node, optionally replacing pieces of it.\n *\n * @param key - New key for the node, or null.\n * @param value - New value for the node, or null.\n * @param color - New color for the node, or null.\n * @param left - New left child for the node, or null.\n * @param right - New right child for the node, or null.\n * @returns The node copy.\n */\n copy(key, value, color, left, right) {\n return new LLRBNode(key != null ? key : this.key, value != null ? value : this.value, color != null ? color : this.color, left != null ? left : this.left, right != null ? right : this.right);\n }\n /**\n * @returns The total number of nodes in the tree.\n */\n count() {\n return this.left.count() + 1 + this.right.count();\n }\n /**\n * @returns True if the tree is empty.\n */\n isEmpty() {\n return false;\n }\n /**\n * Traverses the tree in key order and calls the specified action function\n * for each node.\n *\n * @param action - Callback function to be called for each\n * node. If it returns true, traversal is aborted.\n * @returns The first truthy value returned by action, or the last falsey\n * value returned by action\n */\n inorderTraversal(action) {\n return (this.left.inorderTraversal(action) ||\n !!action(this.key, this.value) ||\n this.right.inorderTraversal(action));\n }\n /**\n * Traverses the tree in reverse key order and calls the specified action function\n * for each node.\n *\n * @param action - Callback function to be called for each\n * node. If it returns true, traversal is aborted.\n * @returns True if traversal was aborted.\n */\n reverseTraversal(action) {\n return (this.right.reverseTraversal(action) ||\n action(this.key, this.value) ||\n this.left.reverseTraversal(action));\n }\n /**\n * @returns The minimum node in the tree.\n */\n min_() {\n if (this.left.isEmpty()) {\n return this;\n }\n else {\n return this.left.min_();\n }\n }\n /**\n * @returns The maximum key in the tree.\n */\n minKey() {\n return this.min_().key;\n }\n /**\n * @returns The maximum key in the tree.\n */\n maxKey() {\n if (this.right.isEmpty()) {\n return this.key;\n }\n else {\n return this.right.maxKey();\n }\n }\n /**\n * @param key - Key to insert.\n * @param value - Value to insert.\n * @param comparator - Comparator.\n * @returns New tree, with the key/value added.\n */\n insert(key, value, comparator) {\n let n = this;\n const cmp = comparator(key, n.key);\n if (cmp < 0) {\n n = n.copy(null, null, null, n.left.insert(key, value, comparator), null);\n }\n else if (cmp === 0) {\n n = n.copy(null, value, null, null, null);\n }\n else {\n n = n.copy(null, null, null, null, n.right.insert(key, value, comparator));\n }\n return n.fixUp_();\n }\n /**\n * @returns New tree, with the minimum key removed.\n */\n removeMin_() {\n if (this.left.isEmpty()) {\n return SortedMap.EMPTY_NODE;\n }\n let n = this;\n if (!n.left.isRed_() && !n.left.left.isRed_()) {\n n = n.moveRedLeft_();\n }\n n = n.copy(null, null, null, n.left.removeMin_(), null);\n return n.fixUp_();\n }\n /**\n * @param key - The key of the item to remove.\n * @param comparator - Comparator.\n * @returns New tree, with the specified item removed.\n */\n remove(key, comparator) {\n let n, smallest;\n n = this;\n if (comparator(key, n.key) < 0) {\n if (!n.left.isEmpty() && !n.left.isRed_() && !n.left.left.isRed_()) {\n n = n.moveRedLeft_();\n }\n n = n.copy(null, null, null, n.left.remove(key, comparator), null);\n }\n else {\n if (n.left.isRed_()) {\n n = n.rotateRight_();\n }\n if (!n.right.isEmpty() && !n.right.isRed_() && !n.right.left.isRed_()) {\n n = n.moveRedRight_();\n }\n if (comparator(key, n.key) === 0) {\n if (n.right.isEmpty()) {\n return SortedMap.EMPTY_NODE;\n }\n else {\n smallest = n.right.min_();\n n = n.copy(smallest.key, smallest.value, null, null, n.right.removeMin_());\n }\n }\n n = n.copy(null, null, null, null, n.right.remove(key, comparator));\n }\n return n.fixUp_();\n }\n /**\n * @returns Whether this is a RED node.\n */\n isRed_() {\n return this.color;\n }\n /**\n * @returns New tree after performing any needed rotations.\n */\n fixUp_() {\n let n = this;\n if (n.right.isRed_() && !n.left.isRed_()) {\n n = n.rotateLeft_();\n }\n if (n.left.isRed_() && n.left.left.isRed_()) {\n n = n.rotateRight_();\n }\n if (n.left.isRed_() && n.right.isRed_()) {\n n = n.colorFlip_();\n }\n return n;\n }\n /**\n * @returns New tree, after moveRedLeft.\n */\n moveRedLeft_() {\n let n = this.colorFlip_();\n if (n.right.left.isRed_()) {\n n = n.copy(null, null, null, null, n.right.rotateRight_());\n n = n.rotateLeft_();\n n = n.colorFlip_();\n }\n return n;\n }\n /**\n * @returns New tree, after moveRedRight.\n */\n moveRedRight_() {\n let n = this.colorFlip_();\n if (n.left.left.isRed_()) {\n n = n.rotateRight_();\n n = n.colorFlip_();\n }\n return n;\n }\n /**\n * @returns New tree, after rotateLeft.\n */\n rotateLeft_() {\n const nl = this.copy(null, null, LLRBNode.RED, null, this.right.left);\n return this.right.copy(null, null, this.color, nl, null);\n }\n /**\n * @returns New tree, after rotateRight.\n */\n rotateRight_() {\n const nr = this.copy(null, null, LLRBNode.RED, this.left.right, null);\n return this.left.copy(null, null, this.color, null, nr);\n }\n /**\n * @returns Newt ree, after colorFlip.\n */\n colorFlip_() {\n const left = this.left.copy(null, null, !this.left.color, null, null);\n const right = this.right.copy(null, null, !this.right.color, null, null);\n return this.copy(null, null, !this.color, left, right);\n }\n /**\n * For testing.\n *\n * @returns True if all is well.\n */\n checkMaxDepth_() {\n const blackDepth = this.check_();\n return Math.pow(2.0, blackDepth) <= this.count() + 1;\n }\n check_() {\n if (this.isRed_() && this.left.isRed_()) {\n throw new Error('Red node has red child(' + this.key + ',' + this.value + ')');\n }\n if (this.right.isRed_()) {\n throw new Error('Right child of (' + this.key + ',' + this.value + ') is red');\n }\n const blackDepth = this.left.check_();\n if (blackDepth !== this.right.check_()) {\n throw new Error('Black depths differ');\n }\n else {\n return blackDepth + (this.isRed_() ? 0 : 1);\n }\n }\n}\nLLRBNode.RED = true;\nLLRBNode.BLACK = false;\n/**\n * Represents an empty node (a leaf node in the Red-Black Tree).\n */\nclass LLRBEmptyNode {\n /**\n * Returns a copy of the current node.\n *\n * @returns The node copy.\n */\n copy(key, value, color, left, right) {\n return this;\n }\n /**\n * Returns a copy of the tree, with the specified key/value added.\n *\n * @param key - Key to be added.\n * @param value - Value to be added.\n * @param comparator - Comparator.\n * @returns New tree, with item added.\n */\n insert(key, value, comparator) {\n return new LLRBNode(key, value, null);\n }\n /**\n * Returns a copy of the tree, with the specified key removed.\n *\n * @param key - The key to remove.\n * @param comparator - Comparator.\n * @returns New tree, with item removed.\n */\n remove(key, comparator) {\n return this;\n }\n /**\n * @returns The total number of nodes in the tree.\n */\n count() {\n return 0;\n }\n /**\n * @returns True if the tree is empty.\n */\n isEmpty() {\n return true;\n }\n /**\n * Traverses the tree in key order and calls the specified action function\n * for each node.\n *\n * @param action - Callback function to be called for each\n * node. If it returns true, traversal is aborted.\n * @returns True if traversal was aborted.\n */\n inorderTraversal(action) {\n return false;\n }\n /**\n * Traverses the tree in reverse key order and calls the specified action function\n * for each node.\n *\n * @param action - Callback function to be called for each\n * node. If it returns true, traversal is aborted.\n * @returns True if traversal was aborted.\n */\n reverseTraversal(action) {\n return false;\n }\n minKey() {\n return null;\n }\n maxKey() {\n return null;\n }\n check_() {\n return 0;\n }\n /**\n * @returns Whether this node is red.\n */\n isRed_() {\n return false;\n }\n}\n/**\n * An immutable sorted map implementation, based on a Left-leaning Red-Black\n * tree.\n */\nclass SortedMap {\n /**\n * @param comparator_ - Key comparator.\n * @param root_ - Optional root node for the map.\n */\n constructor(comparator_, root_ = SortedMap.EMPTY_NODE) {\n this.comparator_ = comparator_;\n this.root_ = root_;\n }\n /**\n * Returns a copy of the map, with the specified key/value added or replaced.\n * (TODO: We should perhaps rename this method to 'put')\n *\n * @param key - Key to be added.\n * @param value - Value to be added.\n * @returns New map, with item added.\n */\n insert(key, value) {\n return new SortedMap(this.comparator_, this.root_\n .insert(key, value, this.comparator_)\n .copy(null, null, LLRBNode.BLACK, null, null));\n }\n /**\n * Returns a copy of the map, with the specified key removed.\n *\n * @param key - The key to remove.\n * @returns New map, with item removed.\n */\n remove(key) {\n return new SortedMap(this.comparator_, this.root_\n .remove(key, this.comparator_)\n .copy(null, null, LLRBNode.BLACK, null, null));\n }\n /**\n * Returns the value of the node with the given key, or null.\n *\n * @param key - The key to look up.\n * @returns The value of the node with the given key, or null if the\n * key doesn't exist.\n */\n get(key) {\n let cmp;\n let node = this.root_;\n while (!node.isEmpty()) {\n cmp = this.comparator_(key, node.key);\n if (cmp === 0) {\n return node.value;\n }\n else if (cmp < 0) {\n node = node.left;\n }\n else if (cmp > 0) {\n node = node.right;\n }\n }\n return null;\n }\n /**\n * Returns the key of the item *before* the specified key, or null if key is the first item.\n * @param key - The key to find the predecessor of\n * @returns The predecessor key.\n */\n getPredecessorKey(key) {\n let cmp, node = this.root_, rightParent = null;\n while (!node.isEmpty()) {\n cmp = this.comparator_(key, node.key);\n if (cmp === 0) {\n if (!node.left.isEmpty()) {\n node = node.left;\n while (!node.right.isEmpty()) {\n node = node.right;\n }\n return node.key;\n }\n else if (rightParent) {\n return rightParent.key;\n }\n else {\n return null; // first item.\n }\n }\n else if (cmp < 0) {\n node = node.left;\n }\n else if (cmp > 0) {\n rightParent = node;\n node = node.right;\n }\n }\n throw new Error('Attempted to find predecessor key for a nonexistent key. What gives?');\n }\n /**\n * @returns True if the map is empty.\n */\n isEmpty() {\n return this.root_.isEmpty();\n }\n /**\n * @returns The total number of nodes in the map.\n */\n count() {\n return this.root_.count();\n }\n /**\n * @returns The minimum key in the map.\n */\n minKey() {\n return this.root_.minKey();\n }\n /**\n * @returns The maximum key in the map.\n */\n maxKey() {\n return this.root_.maxKey();\n }\n /**\n * Traverses the map in key order and calls the specified action function\n * for each key/value pair.\n *\n * @param action - Callback function to be called\n * for each key/value pair. If action returns true, traversal is aborted.\n * @returns The first truthy value returned by action, or the last falsey\n * value returned by action\n */\n inorderTraversal(action) {\n return this.root_.inorderTraversal(action);\n }\n /**\n * Traverses the map in reverse key order and calls the specified action function\n * for each key/value pair.\n *\n * @param action - Callback function to be called\n * for each key/value pair. If action returns true, traversal is aborted.\n * @returns True if the traversal was aborted.\n */\n reverseTraversal(action) {\n return this.root_.reverseTraversal(action);\n }\n /**\n * Returns an iterator over the SortedMap.\n * @returns The iterator.\n */\n getIterator(resultGenerator) {\n return new SortedMapIterator(this.root_, null, this.comparator_, false, resultGenerator);\n }\n getIteratorFrom(key, resultGenerator) {\n return new SortedMapIterator(this.root_, key, this.comparator_, false, resultGenerator);\n }\n getReverseIteratorFrom(key, resultGenerator) {\n return new SortedMapIterator(this.root_, key, this.comparator_, true, resultGenerator);\n }\n getReverseIterator(resultGenerator) {\n return new SortedMapIterator(this.root_, null, this.comparator_, true, resultGenerator);\n }\n}\n/**\n * Always use the same empty node, to reduce memory.\n */\nSortedMap.EMPTY_NODE = new LLRBEmptyNode();\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction NAME_ONLY_COMPARATOR(left, right) {\n return nameCompare(left.name, right.name);\n}\nfunction NAME_COMPARATOR(left, right) {\n return nameCompare(left, right);\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nlet MAX_NODE$2;\nfunction setMaxNode$1(val) {\n MAX_NODE$2 = val;\n}\nconst priorityHashText = function (priority) {\n if (typeof priority === 'number') {\n return 'number:' + doubleToIEEE754String(priority);\n }\n else {\n return 'string:' + priority;\n }\n};\n/**\n * Validates that a priority snapshot Node is valid.\n */\nconst validatePriorityNode = function (priorityNode) {\n if (priorityNode.isLeafNode()) {\n const val = priorityNode.val();\n assert(typeof val === 'string' ||\n typeof val === 'number' ||\n (typeof val === 'object' && contains(val, '.sv')), 'Priority must be a string or number.');\n }\n else {\n assert(priorityNode === MAX_NODE$2 || priorityNode.isEmpty(), 'priority of unexpected type.');\n }\n // Don't call getPriority() on MAX_NODE to avoid hitting assertion.\n assert(priorityNode === MAX_NODE$2 || priorityNode.getPriority().isEmpty(), \"Priority nodes can't have a priority of their own.\");\n};\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nlet __childrenNodeConstructor;\n/**\n * LeafNode is a class for storing leaf nodes in a DataSnapshot. It\n * implements Node and stores the value of the node (a string,\n * number, or boolean) accessible via getValue().\n */\nclass LeafNode {\n static set __childrenNodeConstructor(val) {\n __childrenNodeConstructor = val;\n }\n static get __childrenNodeConstructor() {\n return __childrenNodeConstructor;\n }\n /**\n * @param value_ - The value to store in this leaf node. The object type is\n * possible in the event of a deferred value\n * @param priorityNode_ - The priority of this node.\n */\n constructor(value_, priorityNode_ = LeafNode.__childrenNodeConstructor.EMPTY_NODE) {\n this.value_ = value_;\n this.priorityNode_ = priorityNode_;\n this.lazyHash_ = null;\n assert(this.value_ !== undefined && this.value_ !== null, \"LeafNode shouldn't be created with null/undefined value.\");\n validatePriorityNode(this.priorityNode_);\n }\n /** @inheritDoc */\n isLeafNode() {\n return true;\n }\n /** @inheritDoc */\n getPriority() {\n return this.priorityNode_;\n }\n /** @inheritDoc */\n updatePriority(newPriorityNode) {\n return new LeafNode(this.value_, newPriorityNode);\n }\n /** @inheritDoc */\n getImmediateChild(childName) {\n // Hack to treat priority as a regular child\n if (childName === '.priority') {\n return this.priorityNode_;\n }\n else {\n return LeafNode.__childrenNodeConstructor.EMPTY_NODE;\n }\n }\n /** @inheritDoc */\n getChild(path) {\n if (pathIsEmpty(path)) {\n return this;\n }\n else if (pathGetFront(path) === '.priority') {\n return this.priorityNode_;\n }\n else {\n return LeafNode.__childrenNodeConstructor.EMPTY_NODE;\n }\n }\n hasChild() {\n return false;\n }\n /** @inheritDoc */\n getPredecessorChildName(childName, childNode) {\n return null;\n }\n /** @inheritDoc */\n updateImmediateChild(childName, newChildNode) {\n if (childName === '.priority') {\n return this.updatePriority(newChildNode);\n }\n else if (newChildNode.isEmpty() && childName !== '.priority') {\n return this;\n }\n else {\n return LeafNode.__childrenNodeConstructor.EMPTY_NODE.updateImmediateChild(childName, newChildNode).updatePriority(this.priorityNode_);\n }\n }\n /** @inheritDoc */\n updateChild(path, newChildNode) {\n const front = pathGetFront(path);\n if (front === null) {\n return newChildNode;\n }\n else if (newChildNode.isEmpty() && front !== '.priority') {\n return this;\n }\n else {\n assert(front !== '.priority' || pathGetLength(path) === 1, '.priority must be the last token in a path');\n return this.updateImmediateChild(front, LeafNode.__childrenNodeConstructor.EMPTY_NODE.updateChild(pathPopFront(path), newChildNode));\n }\n }\n /** @inheritDoc */\n isEmpty() {\n return false;\n }\n /** @inheritDoc */\n numChildren() {\n return 0;\n }\n /** @inheritDoc */\n forEachChild(index, action) {\n return false;\n }\n val(exportFormat) {\n if (exportFormat && !this.getPriority().isEmpty()) {\n return {\n '.value': this.getValue(),\n '.priority': this.getPriority().val()\n };\n }\n else {\n return this.getValue();\n }\n }\n /** @inheritDoc */\n hash() {\n if (this.lazyHash_ === null) {\n let toHash = '';\n if (!this.priorityNode_.isEmpty()) {\n toHash +=\n 'priority:' +\n priorityHashText(this.priorityNode_.val()) +\n ':';\n }\n const type = typeof this.value_;\n toHash += type + ':';\n if (type === 'number') {\n toHash += doubleToIEEE754String(this.value_);\n }\n else {\n toHash += this.value_;\n }\n this.lazyHash_ = sha1(toHash);\n }\n return this.lazyHash_;\n }\n /**\n * Returns the value of the leaf node.\n * @returns The value of the node.\n */\n getValue() {\n return this.value_;\n }\n compareTo(other) {\n if (other === LeafNode.__childrenNodeConstructor.EMPTY_NODE) {\n return 1;\n }\n else if (other instanceof LeafNode.__childrenNodeConstructor) {\n return -1;\n }\n else {\n assert(other.isLeafNode(), 'Unknown node type');\n return this.compareToLeafNode_(other);\n }\n }\n /**\n * Comparison specifically for two leaf nodes\n */\n compareToLeafNode_(otherLeaf) {\n const otherLeafType = typeof otherLeaf.value_;\n const thisLeafType = typeof this.value_;\n const otherIndex = LeafNode.VALUE_TYPE_ORDER.indexOf(otherLeafType);\n const thisIndex = LeafNode.VALUE_TYPE_ORDER.indexOf(thisLeafType);\n assert(otherIndex >= 0, 'Unknown leaf type: ' + otherLeafType);\n assert(thisIndex >= 0, 'Unknown leaf type: ' + thisLeafType);\n if (otherIndex === thisIndex) {\n // Same type, compare values\n if (thisLeafType === 'object') {\n // Deferred value nodes are all equal, but we should also never get to this point...\n return 0;\n }\n else {\n // Note that this works because true > false, all others are number or string comparisons\n if (this.value_ < otherLeaf.value_) {\n return -1;\n }\n else if (this.value_ === otherLeaf.value_) {\n return 0;\n }\n else {\n return 1;\n }\n }\n }\n else {\n return thisIndex - otherIndex;\n }\n }\n withIndex() {\n return this;\n }\n isIndexed() {\n return true;\n }\n equals(other) {\n if (other === this) {\n return true;\n }\n else if (other.isLeafNode()) {\n const otherLeaf = other;\n return (this.value_ === otherLeaf.value_ &&\n this.priorityNode_.equals(otherLeaf.priorityNode_));\n }\n else {\n return false;\n }\n }\n}\n/**\n * The sort order for comparing leaf nodes of different types. If two leaf nodes have\n * the same type, the comparison falls back to their value\n */\nLeafNode.VALUE_TYPE_ORDER = ['object', 'boolean', 'number', 'string'];\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nlet nodeFromJSON$1;\nlet MAX_NODE$1;\nfunction setNodeFromJSON(val) {\n nodeFromJSON$1 = val;\n}\nfunction setMaxNode(val) {\n MAX_NODE$1 = val;\n}\nclass PriorityIndex extends Index {\n compare(a, b) {\n const aPriority = a.node.getPriority();\n const bPriority = b.node.getPriority();\n const indexCmp = aPriority.compareTo(bPriority);\n if (indexCmp === 0) {\n return nameCompare(a.name, b.name);\n }\n else {\n return indexCmp;\n }\n }\n isDefinedOn(node) {\n return !node.getPriority().isEmpty();\n }\n indexedValueChanged(oldNode, newNode) {\n return !oldNode.getPriority().equals(newNode.getPriority());\n }\n minPost() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return NamedNode.MIN;\n }\n maxPost() {\n return new NamedNode(MAX_NAME, new LeafNode('[PRIORITY-POST]', MAX_NODE$1));\n }\n makePost(indexValue, name) {\n const priorityNode = nodeFromJSON$1(indexValue);\n return new NamedNode(name, new LeafNode('[PRIORITY-POST]', priorityNode));\n }\n /**\n * @returns String representation for inclusion in a query spec\n */\n toString() {\n return '.priority';\n }\n}\nconst PRIORITY_INDEX = new PriorityIndex();\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst LOG_2 = Math.log(2);\nclass Base12Num {\n constructor(length) {\n const logBase2 = (num) => \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n parseInt((Math.log(num) / LOG_2), 10);\n const bitMask = (bits) => parseInt(Array(bits + 1).join('1'), 2);\n this.count = logBase2(length + 1);\n this.current_ = this.count - 1;\n const mask = bitMask(this.count);\n this.bits_ = (length + 1) & mask;\n }\n nextBitIsOne() {\n //noinspection JSBitwiseOperatorUsage\n const result = !(this.bits_ & (0x1 << this.current_));\n this.current_--;\n return result;\n }\n}\n/**\n * Takes a list of child nodes and constructs a SortedSet using the given comparison\n * function\n *\n * Uses the algorithm described in the paper linked here:\n * http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.46.1458\n *\n * @param childList - Unsorted list of children\n * @param cmp - The comparison method to be used\n * @param keyFn - An optional function to extract K from a node wrapper, if K's\n * type is not NamedNode\n * @param mapSortFn - An optional override for comparator used by the generated sorted map\n */\nconst buildChildSet = function (childList, cmp, keyFn, mapSortFn) {\n childList.sort(cmp);\n const buildBalancedTree = function (low, high) {\n const length = high - low;\n let namedNode;\n let key;\n if (length === 0) {\n return null;\n }\n else if (length === 1) {\n namedNode = childList[low];\n key = keyFn ? keyFn(namedNode) : namedNode;\n return new LLRBNode(key, namedNode.node, LLRBNode.BLACK, null, null);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const middle = parseInt((length / 2), 10) + low;\n const left = buildBalancedTree(low, middle);\n const right = buildBalancedTree(middle + 1, high);\n namedNode = childList[middle];\n key = keyFn ? keyFn(namedNode) : namedNode;\n return new LLRBNode(key, namedNode.node, LLRBNode.BLACK, left, right);\n }\n };\n const buildFrom12Array = function (base12) {\n let node = null;\n let root = null;\n let index = childList.length;\n const buildPennant = function (chunkSize, color) {\n const low = index - chunkSize;\n const high = index;\n index -= chunkSize;\n const childTree = buildBalancedTree(low + 1, high);\n const namedNode = childList[low];\n const key = keyFn ? keyFn(namedNode) : namedNode;\n attachPennant(new LLRBNode(key, namedNode.node, color, null, childTree));\n };\n const attachPennant = function (pennant) {\n if (node) {\n node.left = pennant;\n node = pennant;\n }\n else {\n root = pennant;\n node = pennant;\n }\n };\n for (let i = 0; i < base12.count; ++i) {\n const isOne = base12.nextBitIsOne();\n // The number of nodes taken in each slice is 2^(arr.length - (i + 1))\n const chunkSize = Math.pow(2, base12.count - (i + 1));\n if (isOne) {\n buildPennant(chunkSize, LLRBNode.BLACK);\n }\n else {\n // current == 2\n buildPennant(chunkSize, LLRBNode.BLACK);\n buildPennant(chunkSize, LLRBNode.RED);\n }\n }\n return root;\n };\n const base12 = new Base12Num(childList.length);\n const root = buildFrom12Array(base12);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new SortedMap(mapSortFn || cmp, root);\n};\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nlet _defaultIndexMap;\nconst fallbackObject = {};\nclass IndexMap {\n /**\n * The default IndexMap for nodes without a priority\n */\n static get Default() {\n assert(fallbackObject && PRIORITY_INDEX, 'ChildrenNode.ts has not been loaded');\n _defaultIndexMap =\n _defaultIndexMap ||\n new IndexMap({ '.priority': fallbackObject }, { '.priority': PRIORITY_INDEX });\n return _defaultIndexMap;\n }\n constructor(indexes_, indexSet_) {\n this.indexes_ = indexes_;\n this.indexSet_ = indexSet_;\n }\n get(indexKey) {\n const sortedMap = safeGet(this.indexes_, indexKey);\n if (!sortedMap) {\n throw new Error('No index defined for ' + indexKey);\n }\n if (sortedMap instanceof SortedMap) {\n return sortedMap;\n }\n else {\n // The index exists, but it falls back to just name comparison. Return null so that the calling code uses the\n // regular child map\n return null;\n }\n }\n hasIndex(indexDefinition) {\n return contains(this.indexSet_, indexDefinition.toString());\n }\n addIndex(indexDefinition, existingChildren) {\n assert(indexDefinition !== KEY_INDEX, \"KeyIndex always exists and isn't meant to be added to the IndexMap.\");\n const childList = [];\n let sawIndexedValue = false;\n const iter = existingChildren.getIterator(NamedNode.Wrap);\n let next = iter.getNext();\n while (next) {\n sawIndexedValue =\n sawIndexedValue || indexDefinition.isDefinedOn(next.node);\n childList.push(next);\n next = iter.getNext();\n }\n let newIndex;\n if (sawIndexedValue) {\n newIndex = buildChildSet(childList, indexDefinition.getCompare());\n }\n else {\n newIndex = fallbackObject;\n }\n const indexName = indexDefinition.toString();\n const newIndexSet = Object.assign({}, this.indexSet_);\n newIndexSet[indexName] = indexDefinition;\n const newIndexes = Object.assign({}, this.indexes_);\n newIndexes[indexName] = newIndex;\n return new IndexMap(newIndexes, newIndexSet);\n }\n /**\n * Ensure that this node is properly tracked in any indexes that we're maintaining\n */\n addToIndexes(namedNode, existingChildren) {\n const newIndexes = map(this.indexes_, (indexedChildren, indexName) => {\n const index = safeGet(this.indexSet_, indexName);\n assert(index, 'Missing index implementation for ' + indexName);\n if (indexedChildren === fallbackObject) {\n // Check to see if we need to index everything\n if (index.isDefinedOn(namedNode.node)) {\n // We need to build this index\n const childList = [];\n const iter = existingChildren.getIterator(NamedNode.Wrap);\n let next = iter.getNext();\n while (next) {\n if (next.name !== namedNode.name) {\n childList.push(next);\n }\n next = iter.getNext();\n }\n childList.push(namedNode);\n return buildChildSet(childList, index.getCompare());\n }\n else {\n // No change, this remains a fallback\n return fallbackObject;\n }\n }\n else {\n const existingSnap = existingChildren.get(namedNode.name);\n let newChildren = indexedChildren;\n if (existingSnap) {\n newChildren = newChildren.remove(new NamedNode(namedNode.name, existingSnap));\n }\n return newChildren.insert(namedNode, namedNode.node);\n }\n });\n return new IndexMap(newIndexes, this.indexSet_);\n }\n /**\n * Create a new IndexMap instance with the given value removed\n */\n removeFromIndexes(namedNode, existingChildren) {\n const newIndexes = map(this.indexes_, (indexedChildren) => {\n if (indexedChildren === fallbackObject) {\n // This is the fallback. Just return it, nothing to do in this case\n return indexedChildren;\n }\n else {\n const existingSnap = existingChildren.get(namedNode.name);\n if (existingSnap) {\n return indexedChildren.remove(new NamedNode(namedNode.name, existingSnap));\n }\n else {\n // No record of this child\n return indexedChildren;\n }\n }\n });\n return new IndexMap(newIndexes, this.indexSet_);\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// TODO: For memory savings, don't store priorityNode_ if it's empty.\nlet EMPTY_NODE;\n/**\n * ChildrenNode is a class for storing internal nodes in a DataSnapshot\n * (i.e. nodes with children). It implements Node and stores the\n * list of children in the children property, sorted by child name.\n */\nclass ChildrenNode {\n static get EMPTY_NODE() {\n return (EMPTY_NODE ||\n (EMPTY_NODE = new ChildrenNode(new SortedMap(NAME_COMPARATOR), null, IndexMap.Default)));\n }\n /**\n * @param children_ - List of children of this node..\n * @param priorityNode_ - The priority of this node (as a snapshot node).\n */\n constructor(children_, priorityNode_, indexMap_) {\n this.children_ = children_;\n this.priorityNode_ = priorityNode_;\n this.indexMap_ = indexMap_;\n this.lazyHash_ = null;\n /**\n * Note: The only reason we allow null priority is for EMPTY_NODE, since we can't use\n * EMPTY_NODE as the priority of EMPTY_NODE. We might want to consider making EMPTY_NODE its own\n * class instead of an empty ChildrenNode.\n */\n if (this.priorityNode_) {\n validatePriorityNode(this.priorityNode_);\n }\n if (this.children_.isEmpty()) {\n assert(!this.priorityNode_ || this.priorityNode_.isEmpty(), 'An empty node cannot have a priority');\n }\n }\n /** @inheritDoc */\n isLeafNode() {\n return false;\n }\n /** @inheritDoc */\n getPriority() {\n return this.priorityNode_ || EMPTY_NODE;\n }\n /** @inheritDoc */\n updatePriority(newPriorityNode) {\n if (this.children_.isEmpty()) {\n // Don't allow priorities on empty nodes\n return this;\n }\n else {\n return new ChildrenNode(this.children_, newPriorityNode, this.indexMap_);\n }\n }\n /** @inheritDoc */\n getImmediateChild(childName) {\n // Hack to treat priority as a regular child\n if (childName === '.priority') {\n return this.getPriority();\n }\n else {\n const child = this.children_.get(childName);\n return child === null ? EMPTY_NODE : child;\n }\n }\n /** @inheritDoc */\n getChild(path) {\n const front = pathGetFront(path);\n if (front === null) {\n return this;\n }\n return this.getImmediateChild(front).getChild(pathPopFront(path));\n }\n /** @inheritDoc */\n hasChild(childName) {\n return this.children_.get(childName) !== null;\n }\n /** @inheritDoc */\n updateImmediateChild(childName, newChildNode) {\n assert(newChildNode, 'We should always be passing snapshot nodes');\n if (childName === '.priority') {\n return this.updatePriority(newChildNode);\n }\n else {\n const namedNode = new NamedNode(childName, newChildNode);\n let newChildren, newIndexMap;\n if (newChildNode.isEmpty()) {\n newChildren = this.children_.remove(childName);\n newIndexMap = this.indexMap_.removeFromIndexes(namedNode, this.children_);\n }\n else {\n newChildren = this.children_.insert(childName, newChildNode);\n newIndexMap = this.indexMap_.addToIndexes(namedNode, this.children_);\n }\n const newPriority = newChildren.isEmpty()\n ? EMPTY_NODE\n : this.priorityNode_;\n return new ChildrenNode(newChildren, newPriority, newIndexMap);\n }\n }\n /** @inheritDoc */\n updateChild(path, newChildNode) {\n const front = pathGetFront(path);\n if (front === null) {\n return newChildNode;\n }\n else {\n assert(pathGetFront(path) !== '.priority' || pathGetLength(path) === 1, '.priority must be the last token in a path');\n const newImmediateChild = this.getImmediateChild(front).updateChild(pathPopFront(path), newChildNode);\n return this.updateImmediateChild(front, newImmediateChild);\n }\n }\n /** @inheritDoc */\n isEmpty() {\n return this.children_.isEmpty();\n }\n /** @inheritDoc */\n numChildren() {\n return this.children_.count();\n }\n /** @inheritDoc */\n val(exportFormat) {\n if (this.isEmpty()) {\n return null;\n }\n const obj = {};\n let numKeys = 0, maxKey = 0, allIntegerKeys = true;\n this.forEachChild(PRIORITY_INDEX, (key, childNode) => {\n obj[key] = childNode.val(exportFormat);\n numKeys++;\n if (allIntegerKeys && ChildrenNode.INTEGER_REGEXP_.test(key)) {\n maxKey = Math.max(maxKey, Number(key));\n }\n else {\n allIntegerKeys = false;\n }\n });\n if (!exportFormat && allIntegerKeys && maxKey < 2 * numKeys) {\n // convert to array.\n const array = [];\n // eslint-disable-next-line guard-for-in\n for (const key in obj) {\n array[key] = obj[key];\n }\n return array;\n }\n else {\n if (exportFormat && !this.getPriority().isEmpty()) {\n obj['.priority'] = this.getPriority().val();\n }\n return obj;\n }\n }\n /** @inheritDoc */\n hash() {\n if (this.lazyHash_ === null) {\n let toHash = '';\n if (!this.getPriority().isEmpty()) {\n toHash +=\n 'priority:' +\n priorityHashText(this.getPriority().val()) +\n ':';\n }\n this.forEachChild(PRIORITY_INDEX, (key, childNode) => {\n const childHash = childNode.hash();\n if (childHash !== '') {\n toHash += ':' + key + ':' + childHash;\n }\n });\n this.lazyHash_ = toHash === '' ? '' : sha1(toHash);\n }\n return this.lazyHash_;\n }\n /** @inheritDoc */\n getPredecessorChildName(childName, childNode, index) {\n const idx = this.resolveIndex_(index);\n if (idx) {\n const predecessor = idx.getPredecessorKey(new NamedNode(childName, childNode));\n return predecessor ? predecessor.name : null;\n }\n else {\n return this.children_.getPredecessorKey(childName);\n }\n }\n getFirstChildName(indexDefinition) {\n const idx = this.resolveIndex_(indexDefinition);\n if (idx) {\n const minKey = idx.minKey();\n return minKey && minKey.name;\n }\n else {\n return this.children_.minKey();\n }\n }\n getFirstChild(indexDefinition) {\n const minKey = this.getFirstChildName(indexDefinition);\n if (minKey) {\n return new NamedNode(minKey, this.children_.get(minKey));\n }\n else {\n return null;\n }\n }\n /**\n * Given an index, return the key name of the largest value we have, according to that index\n */\n getLastChildName(indexDefinition) {\n const idx = this.resolveIndex_(indexDefinition);\n if (idx) {\n const maxKey = idx.maxKey();\n return maxKey && maxKey.name;\n }\n else {\n return this.children_.maxKey();\n }\n }\n getLastChild(indexDefinition) {\n const maxKey = this.getLastChildName(indexDefinition);\n if (maxKey) {\n return new NamedNode(maxKey, this.children_.get(maxKey));\n }\n else {\n return null;\n }\n }\n forEachChild(index, action) {\n const idx = this.resolveIndex_(index);\n if (idx) {\n return idx.inorderTraversal(wrappedNode => {\n return action(wrappedNode.name, wrappedNode.node);\n });\n }\n else {\n return this.children_.inorderTraversal(action);\n }\n }\n getIterator(indexDefinition) {\n return this.getIteratorFrom(indexDefinition.minPost(), indexDefinition);\n }\n getIteratorFrom(startPost, indexDefinition) {\n const idx = this.resolveIndex_(indexDefinition);\n if (idx) {\n return idx.getIteratorFrom(startPost, key => key);\n }\n else {\n const iterator = this.children_.getIteratorFrom(startPost.name, NamedNode.Wrap);\n let next = iterator.peek();\n while (next != null && indexDefinition.compare(next, startPost) < 0) {\n iterator.getNext();\n next = iterator.peek();\n }\n return iterator;\n }\n }\n getReverseIterator(indexDefinition) {\n return this.getReverseIteratorFrom(indexDefinition.maxPost(), indexDefinition);\n }\n getReverseIteratorFrom(endPost, indexDefinition) {\n const idx = this.resolveIndex_(indexDefinition);\n if (idx) {\n return idx.getReverseIteratorFrom(endPost, key => {\n return key;\n });\n }\n else {\n const iterator = this.children_.getReverseIteratorFrom(endPost.name, NamedNode.Wrap);\n let next = iterator.peek();\n while (next != null && indexDefinition.compare(next, endPost) > 0) {\n iterator.getNext();\n next = iterator.peek();\n }\n return iterator;\n }\n }\n compareTo(other) {\n if (this.isEmpty()) {\n if (other.isEmpty()) {\n return 0;\n }\n else {\n return -1;\n }\n }\n else if (other.isLeafNode() || other.isEmpty()) {\n return 1;\n }\n else if (other === MAX_NODE) {\n return -1;\n }\n else {\n // Must be another node with children.\n return 0;\n }\n }\n withIndex(indexDefinition) {\n if (indexDefinition === KEY_INDEX ||\n this.indexMap_.hasIndex(indexDefinition)) {\n return this;\n }\n else {\n const newIndexMap = this.indexMap_.addIndex(indexDefinition, this.children_);\n return new ChildrenNode(this.children_, this.priorityNode_, newIndexMap);\n }\n }\n isIndexed(index) {\n return index === KEY_INDEX || this.indexMap_.hasIndex(index);\n }\n equals(other) {\n if (other === this) {\n return true;\n }\n else if (other.isLeafNode()) {\n return false;\n }\n else {\n const otherChildrenNode = other;\n if (!this.getPriority().equals(otherChildrenNode.getPriority())) {\n return false;\n }\n else if (this.children_.count() === otherChildrenNode.children_.count()) {\n const thisIter = this.getIterator(PRIORITY_INDEX);\n const otherIter = otherChildrenNode.getIterator(PRIORITY_INDEX);\n let thisCurrent = thisIter.getNext();\n let otherCurrent = otherIter.getNext();\n while (thisCurrent && otherCurrent) {\n if (thisCurrent.name !== otherCurrent.name ||\n !thisCurrent.node.equals(otherCurrent.node)) {\n return false;\n }\n thisCurrent = thisIter.getNext();\n otherCurrent = otherIter.getNext();\n }\n return thisCurrent === null && otherCurrent === null;\n }\n else {\n return false;\n }\n }\n }\n /**\n * Returns a SortedMap ordered by index, or null if the default (by-key) ordering can be used\n * instead.\n *\n */\n resolveIndex_(indexDefinition) {\n if (indexDefinition === KEY_INDEX) {\n return null;\n }\n else {\n return this.indexMap_.get(indexDefinition.toString());\n }\n }\n}\nChildrenNode.INTEGER_REGEXP_ = /^(0|[1-9]\\d*)$/;\nclass MaxNode extends ChildrenNode {\n constructor() {\n super(new SortedMap(NAME_COMPARATOR), ChildrenNode.EMPTY_NODE, IndexMap.Default);\n }\n compareTo(other) {\n if (other === this) {\n return 0;\n }\n else {\n return 1;\n }\n }\n equals(other) {\n // Not that we every compare it, but MAX_NODE is only ever equal to itself\n return other === this;\n }\n getPriority() {\n return this;\n }\n getImmediateChild(childName) {\n return ChildrenNode.EMPTY_NODE;\n }\n isEmpty() {\n return false;\n }\n}\n/**\n * Marker that will sort higher than any other snapshot.\n */\nconst MAX_NODE = new MaxNode();\nObject.defineProperties(NamedNode, {\n MIN: {\n value: new NamedNode(MIN_NAME, ChildrenNode.EMPTY_NODE)\n },\n MAX: {\n value: new NamedNode(MAX_NAME, MAX_NODE)\n }\n});\n/**\n * Reference Extensions\n */\nKeyIndex.__EMPTY_NODE = ChildrenNode.EMPTY_NODE;\nLeafNode.__childrenNodeConstructor = ChildrenNode;\nsetMaxNode$1(MAX_NODE);\nsetMaxNode(MAX_NODE);\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst USE_HINZE = true;\n/**\n * Constructs a snapshot node representing the passed JSON and returns it.\n * @param json - JSON to create a node for.\n * @param priority - Optional priority to use. This will be ignored if the\n * passed JSON contains a .priority property.\n */\nfunction nodeFromJSON(json, priority = null) {\n if (json === null) {\n return ChildrenNode.EMPTY_NODE;\n }\n if (typeof json === 'object' && '.priority' in json) {\n priority = json['.priority'];\n }\n assert(priority === null ||\n typeof priority === 'string' ||\n typeof priority === 'number' ||\n (typeof priority === 'object' && '.sv' in priority), 'Invalid priority type found: ' + typeof priority);\n if (typeof json === 'object' && '.value' in json && json['.value'] !== null) {\n json = json['.value'];\n }\n // Valid leaf nodes include non-objects or server-value wrapper objects\n if (typeof json !== 'object' || '.sv' in json) {\n const jsonLeaf = json;\n return new LeafNode(jsonLeaf, nodeFromJSON(priority));\n }\n if (!(json instanceof Array) && USE_HINZE) {\n const children = [];\n let childrenHavePriority = false;\n const hinzeJsonObj = json;\n each(hinzeJsonObj, (key, child) => {\n if (key.substring(0, 1) !== '.') {\n // Ignore metadata nodes\n const childNode = nodeFromJSON(child);\n if (!childNode.isEmpty()) {\n childrenHavePriority =\n childrenHavePriority || !childNode.getPriority().isEmpty();\n children.push(new NamedNode(key, childNode));\n }\n }\n });\n if (children.length === 0) {\n return ChildrenNode.EMPTY_NODE;\n }\n const childSet = buildChildSet(children, NAME_ONLY_COMPARATOR, namedNode => namedNode.name, NAME_COMPARATOR);\n if (childrenHavePriority) {\n const sortedChildSet = buildChildSet(children, PRIORITY_INDEX.getCompare());\n return new ChildrenNode(childSet, nodeFromJSON(priority), new IndexMap({ '.priority': sortedChildSet }, { '.priority': PRIORITY_INDEX }));\n }\n else {\n return new ChildrenNode(childSet, nodeFromJSON(priority), IndexMap.Default);\n }\n }\n else {\n let node = ChildrenNode.EMPTY_NODE;\n each(json, (key, childData) => {\n if (contains(json, key)) {\n if (key.substring(0, 1) !== '.') {\n // ignore metadata nodes.\n const childNode = nodeFromJSON(childData);\n if (childNode.isLeafNode() || !childNode.isEmpty()) {\n node = node.updateImmediateChild(key, childNode);\n }\n }\n }\n });\n return node.updatePriority(nodeFromJSON(priority));\n }\n}\nsetNodeFromJSON(nodeFromJSON);\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass PathIndex extends Index {\n constructor(indexPath_) {\n super();\n this.indexPath_ = indexPath_;\n assert(!pathIsEmpty(indexPath_) && pathGetFront(indexPath_) !== '.priority', \"Can't create PathIndex with empty path or .priority key\");\n }\n extractChild(snap) {\n return snap.getChild(this.indexPath_);\n }\n isDefinedOn(node) {\n return !node.getChild(this.indexPath_).isEmpty();\n }\n compare(a, b) {\n const aChild = this.extractChild(a.node);\n const bChild = this.extractChild(b.node);\n const indexCmp = aChild.compareTo(bChild);\n if (indexCmp === 0) {\n return nameCompare(a.name, b.name);\n }\n else {\n return indexCmp;\n }\n }\n makePost(indexValue, name) {\n const valueNode = nodeFromJSON(indexValue);\n const node = ChildrenNode.EMPTY_NODE.updateChild(this.indexPath_, valueNode);\n return new NamedNode(name, node);\n }\n maxPost() {\n const node = ChildrenNode.EMPTY_NODE.updateChild(this.indexPath_, MAX_NODE);\n return new NamedNode(MAX_NAME, node);\n }\n toString() {\n return pathSlice(this.indexPath_, 0).join('/');\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass ValueIndex extends Index {\n compare(a, b) {\n const indexCmp = a.node.compareTo(b.node);\n if (indexCmp === 0) {\n return nameCompare(a.name, b.name);\n }\n else {\n return indexCmp;\n }\n }\n isDefinedOn(node) {\n return true;\n }\n indexedValueChanged(oldNode, newNode) {\n return !oldNode.equals(newNode);\n }\n minPost() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return NamedNode.MIN;\n }\n maxPost() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return NamedNode.MAX;\n }\n makePost(indexValue, name) {\n const valueNode = nodeFromJSON(indexValue);\n return new NamedNode(name, valueNode);\n }\n /**\n * @returns String representation for inclusion in a query spec\n */\n toString() {\n return '.value';\n }\n}\nconst VALUE_INDEX = new ValueIndex();\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction changeValue(snapshotNode) {\n return { type: \"value\" /* ChangeType.VALUE */, snapshotNode };\n}\nfunction changeChildAdded(childName, snapshotNode) {\n return { type: \"child_added\" /* ChangeType.CHILD_ADDED */, snapshotNode, childName };\n}\nfunction changeChildRemoved(childName, snapshotNode) {\n return { type: \"child_removed\" /* ChangeType.CHILD_REMOVED */, snapshotNode, childName };\n}\nfunction changeChildChanged(childName, snapshotNode, oldSnap) {\n return {\n type: \"child_changed\" /* ChangeType.CHILD_CHANGED */,\n snapshotNode,\n childName,\n oldSnap\n };\n}\nfunction changeChildMoved(childName, snapshotNode) {\n return { type: \"child_moved\" /* ChangeType.CHILD_MOVED */, snapshotNode, childName };\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Doesn't really filter nodes but applies an index to the node and keeps track of any changes\n */\nclass IndexedFilter {\n constructor(index_) {\n this.index_ = index_;\n }\n updateChild(snap, key, newChild, affectedPath, source, optChangeAccumulator) {\n assert(snap.isIndexed(this.index_), 'A node must be indexed if only a child is updated');\n const oldChild = snap.getImmediateChild(key);\n // Check if anything actually changed.\n if (oldChild.getChild(affectedPath).equals(newChild.getChild(affectedPath))) {\n // There's an edge case where a child can enter or leave the view because affectedPath was set to null.\n // In this case, affectedPath will appear null in both the old and new snapshots. So we need\n // to avoid treating these cases as \"nothing changed.\"\n if (oldChild.isEmpty() === newChild.isEmpty()) {\n // Nothing changed.\n // This assert should be valid, but it's expensive (can dominate perf testing) so don't actually do it.\n //assert(oldChild.equals(newChild), 'Old and new snapshots should be equal.');\n return snap;\n }\n }\n if (optChangeAccumulator != null) {\n if (newChild.isEmpty()) {\n if (snap.hasChild(key)) {\n optChangeAccumulator.trackChildChange(changeChildRemoved(key, oldChild));\n }\n else {\n assert(snap.isLeafNode(), 'A child remove without an old child only makes sense on a leaf node');\n }\n }\n else if (oldChild.isEmpty()) {\n optChangeAccumulator.trackChildChange(changeChildAdded(key, newChild));\n }\n else {\n optChangeAccumulator.trackChildChange(changeChildChanged(key, newChild, oldChild));\n }\n }\n if (snap.isLeafNode() && newChild.isEmpty()) {\n return snap;\n }\n else {\n // Make sure the node is indexed\n return snap.updateImmediateChild(key, newChild).withIndex(this.index_);\n }\n }\n updateFullNode(oldSnap, newSnap, optChangeAccumulator) {\n if (optChangeAccumulator != null) {\n if (!oldSnap.isLeafNode()) {\n oldSnap.forEachChild(PRIORITY_INDEX, (key, childNode) => {\n if (!newSnap.hasChild(key)) {\n optChangeAccumulator.trackChildChange(changeChildRemoved(key, childNode));\n }\n });\n }\n if (!newSnap.isLeafNode()) {\n newSnap.forEachChild(PRIORITY_INDEX, (key, childNode) => {\n if (oldSnap.hasChild(key)) {\n const oldChild = oldSnap.getImmediateChild(key);\n if (!oldChild.equals(childNode)) {\n optChangeAccumulator.trackChildChange(changeChildChanged(key, childNode, oldChild));\n }\n }\n else {\n optChangeAccumulator.trackChildChange(changeChildAdded(key, childNode));\n }\n });\n }\n }\n return newSnap.withIndex(this.index_);\n }\n updatePriority(oldSnap, newPriority) {\n if (oldSnap.isEmpty()) {\n return ChildrenNode.EMPTY_NODE;\n }\n else {\n return oldSnap.updatePriority(newPriority);\n }\n }\n filtersNodes() {\n return false;\n }\n getIndexedFilter() {\n return this;\n }\n getIndex() {\n return this.index_;\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Filters nodes by range and uses an IndexFilter to track any changes after filtering the node\n */\nclass RangedFilter {\n constructor(params) {\n this.indexedFilter_ = new IndexedFilter(params.getIndex());\n this.index_ = params.getIndex();\n this.startPost_ = RangedFilter.getStartPost_(params);\n this.endPost_ = RangedFilter.getEndPost_(params);\n this.startIsInclusive_ = !params.startAfterSet_;\n this.endIsInclusive_ = !params.endBeforeSet_;\n }\n getStartPost() {\n return this.startPost_;\n }\n getEndPost() {\n return this.endPost_;\n }\n matches(node) {\n const isWithinStart = this.startIsInclusive_\n ? this.index_.compare(this.getStartPost(), node) <= 0\n : this.index_.compare(this.getStartPost(), node) < 0;\n const isWithinEnd = this.endIsInclusive_\n ? this.index_.compare(node, this.getEndPost()) <= 0\n : this.index_.compare(node, this.getEndPost()) < 0;\n return isWithinStart && isWithinEnd;\n }\n updateChild(snap, key, newChild, affectedPath, source, optChangeAccumulator) {\n if (!this.matches(new NamedNode(key, newChild))) {\n newChild = ChildrenNode.EMPTY_NODE;\n }\n return this.indexedFilter_.updateChild(snap, key, newChild, affectedPath, source, optChangeAccumulator);\n }\n updateFullNode(oldSnap, newSnap, optChangeAccumulator) {\n if (newSnap.isLeafNode()) {\n // Make sure we have a children node with the correct index, not a leaf node;\n newSnap = ChildrenNode.EMPTY_NODE;\n }\n let filtered = newSnap.withIndex(this.index_);\n // Don't support priorities on queries\n filtered = filtered.updatePriority(ChildrenNode.EMPTY_NODE);\n const self = this;\n newSnap.forEachChild(PRIORITY_INDEX, (key, childNode) => {\n if (!self.matches(new NamedNode(key, childNode))) {\n filtered = filtered.updateImmediateChild(key, ChildrenNode.EMPTY_NODE);\n }\n });\n return this.indexedFilter_.updateFullNode(oldSnap, filtered, optChangeAccumulator);\n }\n updatePriority(oldSnap, newPriority) {\n // Don't support priorities on queries\n return oldSnap;\n }\n filtersNodes() {\n return true;\n }\n getIndexedFilter() {\n return this.indexedFilter_;\n }\n getIndex() {\n return this.index_;\n }\n static getStartPost_(params) {\n if (params.hasStart()) {\n const startName = params.getIndexStartName();\n return params.getIndex().makePost(params.getIndexStartValue(), startName);\n }\n else {\n return params.getIndex().minPost();\n }\n }\n static getEndPost_(params) {\n if (params.hasEnd()) {\n const endName = params.getIndexEndName();\n return params.getIndex().makePost(params.getIndexEndValue(), endName);\n }\n else {\n return params.getIndex().maxPost();\n }\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Applies a limit and a range to a node and uses RangedFilter to do the heavy lifting where possible\n */\nclass LimitedFilter {\n constructor(params) {\n this.withinDirectionalStart = (node) => this.reverse_ ? this.withinEndPost(node) : this.withinStartPost(node);\n this.withinDirectionalEnd = (node) => this.reverse_ ? this.withinStartPost(node) : this.withinEndPost(node);\n this.withinStartPost = (node) => {\n const compareRes = this.index_.compare(this.rangedFilter_.getStartPost(), node);\n return this.startIsInclusive_ ? compareRes <= 0 : compareRes < 0;\n };\n this.withinEndPost = (node) => {\n const compareRes = this.index_.compare(node, this.rangedFilter_.getEndPost());\n return this.endIsInclusive_ ? compareRes <= 0 : compareRes < 0;\n };\n this.rangedFilter_ = new RangedFilter(params);\n this.index_ = params.getIndex();\n this.limit_ = params.getLimit();\n this.reverse_ = !params.isViewFromLeft();\n this.startIsInclusive_ = !params.startAfterSet_;\n this.endIsInclusive_ = !params.endBeforeSet_;\n }\n updateChild(snap, key, newChild, affectedPath, source, optChangeAccumulator) {\n if (!this.rangedFilter_.matches(new NamedNode(key, newChild))) {\n newChild = ChildrenNode.EMPTY_NODE;\n }\n if (snap.getImmediateChild(key).equals(newChild)) {\n // No change\n return snap;\n }\n else if (snap.numChildren() < this.limit_) {\n return this.rangedFilter_\n .getIndexedFilter()\n .updateChild(snap, key, newChild, affectedPath, source, optChangeAccumulator);\n }\n else {\n return this.fullLimitUpdateChild_(snap, key, newChild, source, optChangeAccumulator);\n }\n }\n updateFullNode(oldSnap, newSnap, optChangeAccumulator) {\n let filtered;\n if (newSnap.isLeafNode() || newSnap.isEmpty()) {\n // Make sure we have a children node with the correct index, not a leaf node;\n filtered = ChildrenNode.EMPTY_NODE.withIndex(this.index_);\n }\n else {\n if (this.limit_ * 2 < newSnap.numChildren() &&\n newSnap.isIndexed(this.index_)) {\n // Easier to build up a snapshot, since what we're given has more than twice the elements we want\n filtered = ChildrenNode.EMPTY_NODE.withIndex(this.index_);\n // anchor to the startPost, endPost, or last element as appropriate\n let iterator;\n if (this.reverse_) {\n iterator = newSnap.getReverseIteratorFrom(this.rangedFilter_.getEndPost(), this.index_);\n }\n else {\n iterator = newSnap.getIteratorFrom(this.rangedFilter_.getStartPost(), this.index_);\n }\n let count = 0;\n while (iterator.hasNext() && count < this.limit_) {\n const next = iterator.getNext();\n if (!this.withinDirectionalStart(next)) {\n // if we have not reached the start, skip to the next element\n continue;\n }\n else if (!this.withinDirectionalEnd(next)) {\n // if we have reached the end, stop adding elements\n break;\n }\n else {\n filtered = filtered.updateImmediateChild(next.name, next.node);\n count++;\n }\n }\n }\n else {\n // The snap contains less than twice the limit. Faster to delete from the snap than build up a new one\n filtered = newSnap.withIndex(this.index_);\n // Don't support priorities on queries\n filtered = filtered.updatePriority(ChildrenNode.EMPTY_NODE);\n let iterator;\n if (this.reverse_) {\n iterator = filtered.getReverseIterator(this.index_);\n }\n else {\n iterator = filtered.getIterator(this.index_);\n }\n let count = 0;\n while (iterator.hasNext()) {\n const next = iterator.getNext();\n const inRange = count < this.limit_ &&\n this.withinDirectionalStart(next) &&\n this.withinDirectionalEnd(next);\n if (inRange) {\n count++;\n }\n else {\n filtered = filtered.updateImmediateChild(next.name, ChildrenNode.EMPTY_NODE);\n }\n }\n }\n }\n return this.rangedFilter_\n .getIndexedFilter()\n .updateFullNode(oldSnap, filtered, optChangeAccumulator);\n }\n updatePriority(oldSnap, newPriority) {\n // Don't support priorities on queries\n return oldSnap;\n }\n filtersNodes() {\n return true;\n }\n getIndexedFilter() {\n return this.rangedFilter_.getIndexedFilter();\n }\n getIndex() {\n return this.index_;\n }\n fullLimitUpdateChild_(snap, childKey, childSnap, source, changeAccumulator) {\n // TODO: rename all cache stuff etc to general snap terminology\n let cmp;\n if (this.reverse_) {\n const indexCmp = this.index_.getCompare();\n cmp = (a, b) => indexCmp(b, a);\n }\n else {\n cmp = this.index_.getCompare();\n }\n const oldEventCache = snap;\n assert(oldEventCache.numChildren() === this.limit_, '');\n const newChildNamedNode = new NamedNode(childKey, childSnap);\n const windowBoundary = this.reverse_\n ? oldEventCache.getFirstChild(this.index_)\n : oldEventCache.getLastChild(this.index_);\n const inRange = this.rangedFilter_.matches(newChildNamedNode);\n if (oldEventCache.hasChild(childKey)) {\n const oldChildSnap = oldEventCache.getImmediateChild(childKey);\n let nextChild = source.getChildAfterChild(this.index_, windowBoundary, this.reverse_);\n while (nextChild != null &&\n (nextChild.name === childKey || oldEventCache.hasChild(nextChild.name))) {\n // There is a weird edge case where a node is updated as part of a merge in the write tree, but hasn't\n // been applied to the limited filter yet. Ignore this next child which will be updated later in\n // the limited filter...\n nextChild = source.getChildAfterChild(this.index_, nextChild, this.reverse_);\n }\n const compareNext = nextChild == null ? 1 : cmp(nextChild, newChildNamedNode);\n const remainsInWindow = inRange && !childSnap.isEmpty() && compareNext >= 0;\n if (remainsInWindow) {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(changeChildChanged(childKey, childSnap, oldChildSnap));\n }\n return oldEventCache.updateImmediateChild(childKey, childSnap);\n }\n else {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(changeChildRemoved(childKey, oldChildSnap));\n }\n const newEventCache = oldEventCache.updateImmediateChild(childKey, ChildrenNode.EMPTY_NODE);\n const nextChildInRange = nextChild != null && this.rangedFilter_.matches(nextChild);\n if (nextChildInRange) {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(changeChildAdded(nextChild.name, nextChild.node));\n }\n return newEventCache.updateImmediateChild(nextChild.name, nextChild.node);\n }\n else {\n return newEventCache;\n }\n }\n }\n else if (childSnap.isEmpty()) {\n // we're deleting a node, but it was not in the window, so ignore it\n return snap;\n }\n else if (inRange) {\n if (cmp(windowBoundary, newChildNamedNode) >= 0) {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(changeChildRemoved(windowBoundary.name, windowBoundary.node));\n changeAccumulator.trackChildChange(changeChildAdded(childKey, childSnap));\n }\n return oldEventCache\n .updateImmediateChild(childKey, childSnap)\n .updateImmediateChild(windowBoundary.name, ChildrenNode.EMPTY_NODE);\n }\n else {\n return snap;\n }\n }\n else {\n return snap;\n }\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * This class is an immutable-from-the-public-api struct containing a set of query parameters defining a\n * range to be returned for a particular location. It is assumed that validation of parameters is done at the\n * user-facing API level, so it is not done here.\n *\n * @internal\n */\nclass QueryParams {\n constructor() {\n this.limitSet_ = false;\n this.startSet_ = false;\n this.startNameSet_ = false;\n this.startAfterSet_ = false; // can only be true if startSet_ is true\n this.endSet_ = false;\n this.endNameSet_ = false;\n this.endBeforeSet_ = false; // can only be true if endSet_ is true\n this.limit_ = 0;\n this.viewFrom_ = '';\n this.indexStartValue_ = null;\n this.indexStartName_ = '';\n this.indexEndValue_ = null;\n this.indexEndName_ = '';\n this.index_ = PRIORITY_INDEX;\n }\n hasStart() {\n return this.startSet_;\n }\n /**\n * @returns True if it would return from left.\n */\n isViewFromLeft() {\n if (this.viewFrom_ === '') {\n // limit(), rather than limitToFirst or limitToLast was called.\n // This means that only one of startSet_ and endSet_ is true. Use them\n // to calculate which side of the view to anchor to. If neither is set,\n // anchor to the end.\n return this.startSet_;\n }\n else {\n return this.viewFrom_ === \"l\" /* WIRE_PROTOCOL_CONSTANTS.VIEW_FROM_LEFT */;\n }\n }\n /**\n * Only valid to call if hasStart() returns true\n */\n getIndexStartValue() {\n assert(this.startSet_, 'Only valid if start has been set');\n return this.indexStartValue_;\n }\n /**\n * Only valid to call if hasStart() returns true.\n * Returns the starting key name for the range defined by these query parameters\n */\n getIndexStartName() {\n assert(this.startSet_, 'Only valid if start has been set');\n if (this.startNameSet_) {\n return this.indexStartName_;\n }\n else {\n return MIN_NAME;\n }\n }\n hasEnd() {\n return this.endSet_;\n }\n /**\n * Only valid to call if hasEnd() returns true.\n */\n getIndexEndValue() {\n assert(this.endSet_, 'Only valid if end has been set');\n return this.indexEndValue_;\n }\n /**\n * Only valid to call if hasEnd() returns true.\n * Returns the end key name for the range defined by these query parameters\n */\n getIndexEndName() {\n assert(this.endSet_, 'Only valid if end has been set');\n if (this.endNameSet_) {\n return this.indexEndName_;\n }\n else {\n return MAX_NAME;\n }\n }\n hasLimit() {\n return this.limitSet_;\n }\n /**\n * @returns True if a limit has been set and it has been explicitly anchored\n */\n hasAnchoredLimit() {\n return this.limitSet_ && this.viewFrom_ !== '';\n }\n /**\n * Only valid to call if hasLimit() returns true\n */\n getLimit() {\n assert(this.limitSet_, 'Only valid if limit has been set');\n return this.limit_;\n }\n getIndex() {\n return this.index_;\n }\n loadsAllData() {\n return !(this.startSet_ || this.endSet_ || this.limitSet_);\n }\n isDefault() {\n return this.loadsAllData() && this.index_ === PRIORITY_INDEX;\n }\n copy() {\n const copy = new QueryParams();\n copy.limitSet_ = this.limitSet_;\n copy.limit_ = this.limit_;\n copy.startSet_ = this.startSet_;\n copy.startAfterSet_ = this.startAfterSet_;\n copy.indexStartValue_ = this.indexStartValue_;\n copy.startNameSet_ = this.startNameSet_;\n copy.indexStartName_ = this.indexStartName_;\n copy.endSet_ = this.endSet_;\n copy.endBeforeSet_ = this.endBeforeSet_;\n copy.indexEndValue_ = this.indexEndValue_;\n copy.endNameSet_ = this.endNameSet_;\n copy.indexEndName_ = this.indexEndName_;\n copy.index_ = this.index_;\n copy.viewFrom_ = this.viewFrom_;\n return copy;\n }\n}\nfunction queryParamsGetNodeFilter(queryParams) {\n if (queryParams.loadsAllData()) {\n return new IndexedFilter(queryParams.getIndex());\n }\n else if (queryParams.hasLimit()) {\n return new LimitedFilter(queryParams);\n }\n else {\n return new RangedFilter(queryParams);\n }\n}\nfunction queryParamsLimitToFirst(queryParams, newLimit) {\n const newParams = queryParams.copy();\n newParams.limitSet_ = true;\n newParams.limit_ = newLimit;\n newParams.viewFrom_ = \"l\" /* WIRE_PROTOCOL_CONSTANTS.VIEW_FROM_LEFT */;\n return newParams;\n}\nfunction queryParamsLimitToLast(queryParams, newLimit) {\n const newParams = queryParams.copy();\n newParams.limitSet_ = true;\n newParams.limit_ = newLimit;\n newParams.viewFrom_ = \"r\" /* WIRE_PROTOCOL_CONSTANTS.VIEW_FROM_RIGHT */;\n return newParams;\n}\nfunction queryParamsStartAt(queryParams, indexValue, key) {\n const newParams = queryParams.copy();\n newParams.startSet_ = true;\n if (indexValue === undefined) {\n indexValue = null;\n }\n newParams.indexStartValue_ = indexValue;\n if (key != null) {\n newParams.startNameSet_ = true;\n newParams.indexStartName_ = key;\n }\n else {\n newParams.startNameSet_ = false;\n newParams.indexStartName_ = '';\n }\n return newParams;\n}\nfunction queryParamsStartAfter(queryParams, indexValue, key) {\n let params;\n if (queryParams.index_ === KEY_INDEX || !!key) {\n params = queryParamsStartAt(queryParams, indexValue, key);\n }\n else {\n params = queryParamsStartAt(queryParams, indexValue, MAX_NAME);\n }\n params.startAfterSet_ = true;\n return params;\n}\nfunction queryParamsEndAt(queryParams, indexValue, key) {\n const newParams = queryParams.copy();\n newParams.endSet_ = true;\n if (indexValue === undefined) {\n indexValue = null;\n }\n newParams.indexEndValue_ = indexValue;\n if (key !== undefined) {\n newParams.endNameSet_ = true;\n newParams.indexEndName_ = key;\n }\n else {\n newParams.endNameSet_ = false;\n newParams.indexEndName_ = '';\n }\n return newParams;\n}\nfunction queryParamsEndBefore(queryParams, indexValue, key) {\n let params;\n if (queryParams.index_ === KEY_INDEX || !!key) {\n params = queryParamsEndAt(queryParams, indexValue, key);\n }\n else {\n params = queryParamsEndAt(queryParams, indexValue, MIN_NAME);\n }\n params.endBeforeSet_ = true;\n return params;\n}\nfunction queryParamsOrderBy(queryParams, index) {\n const newParams = queryParams.copy();\n newParams.index_ = index;\n return newParams;\n}\n/**\n * Returns a set of REST query string parameters representing this query.\n *\n * @returns query string parameters\n */\nfunction queryParamsToRestQueryStringParameters(queryParams) {\n const qs = {};\n if (queryParams.isDefault()) {\n return qs;\n }\n let orderBy;\n if (queryParams.index_ === PRIORITY_INDEX) {\n orderBy = \"$priority\" /* REST_QUERY_CONSTANTS.PRIORITY_INDEX */;\n }\n else if (queryParams.index_ === VALUE_INDEX) {\n orderBy = \"$value\" /* REST_QUERY_CONSTANTS.VALUE_INDEX */;\n }\n else if (queryParams.index_ === KEY_INDEX) {\n orderBy = \"$key\" /* REST_QUERY_CONSTANTS.KEY_INDEX */;\n }\n else {\n assert(queryParams.index_ instanceof PathIndex, 'Unrecognized index type!');\n orderBy = queryParams.index_.toString();\n }\n qs[\"orderBy\" /* REST_QUERY_CONSTANTS.ORDER_BY */] = stringify(orderBy);\n if (queryParams.startSet_) {\n const startParam = queryParams.startAfterSet_\n ? \"startAfter\" /* REST_QUERY_CONSTANTS.START_AFTER */\n : \"startAt\" /* REST_QUERY_CONSTANTS.START_AT */;\n qs[startParam] = stringify(queryParams.indexStartValue_);\n if (queryParams.startNameSet_) {\n qs[startParam] += ',' + stringify(queryParams.indexStartName_);\n }\n }\n if (queryParams.endSet_) {\n const endParam = queryParams.endBeforeSet_\n ? \"endBefore\" /* REST_QUERY_CONSTANTS.END_BEFORE */\n : \"endAt\" /* REST_QUERY_CONSTANTS.END_AT */;\n qs[endParam] = stringify(queryParams.indexEndValue_);\n if (queryParams.endNameSet_) {\n qs[endParam] += ',' + stringify(queryParams.indexEndName_);\n }\n }\n if (queryParams.limitSet_) {\n if (queryParams.isViewFromLeft()) {\n qs[\"limitToFirst\" /* REST_QUERY_CONSTANTS.LIMIT_TO_FIRST */] = queryParams.limit_;\n }\n else {\n qs[\"limitToLast\" /* REST_QUERY_CONSTANTS.LIMIT_TO_LAST */] = queryParams.limit_;\n }\n }\n return qs;\n}\nfunction queryParamsGetQueryObject(queryParams) {\n const obj = {};\n if (queryParams.startSet_) {\n obj[\"sp\" /* WIRE_PROTOCOL_CONSTANTS.INDEX_START_VALUE */] =\n queryParams.indexStartValue_;\n if (queryParams.startNameSet_) {\n obj[\"sn\" /* WIRE_PROTOCOL_CONSTANTS.INDEX_START_NAME */] =\n queryParams.indexStartName_;\n }\n obj[\"sin\" /* WIRE_PROTOCOL_CONSTANTS.INDEX_START_IS_INCLUSIVE */] =\n !queryParams.startAfterSet_;\n }\n if (queryParams.endSet_) {\n obj[\"ep\" /* WIRE_PROTOCOL_CONSTANTS.INDEX_END_VALUE */] = queryParams.indexEndValue_;\n if (queryParams.endNameSet_) {\n obj[\"en\" /* WIRE_PROTOCOL_CONSTANTS.INDEX_END_NAME */] = queryParams.indexEndName_;\n }\n obj[\"ein\" /* WIRE_PROTOCOL_CONSTANTS.INDEX_END_IS_INCLUSIVE */] =\n !queryParams.endBeforeSet_;\n }\n if (queryParams.limitSet_) {\n obj[\"l\" /* WIRE_PROTOCOL_CONSTANTS.LIMIT */] = queryParams.limit_;\n let viewFrom = queryParams.viewFrom_;\n if (viewFrom === '') {\n if (queryParams.isViewFromLeft()) {\n viewFrom = \"l\" /* WIRE_PROTOCOL_CONSTANTS.VIEW_FROM_LEFT */;\n }\n else {\n viewFrom = \"r\" /* WIRE_PROTOCOL_CONSTANTS.VIEW_FROM_RIGHT */;\n }\n }\n obj[\"vf\" /* WIRE_PROTOCOL_CONSTANTS.VIEW_FROM */] = viewFrom;\n }\n // For now, priority index is the default, so we only specify if it's some other index\n if (queryParams.index_ !== PRIORITY_INDEX) {\n obj[\"i\" /* WIRE_PROTOCOL_CONSTANTS.INDEX */] = queryParams.index_.toString();\n }\n return obj;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * An implementation of ServerActions that communicates with the server via REST requests.\n * This is mostly useful for compatibility with crawlers, where we don't want to spin up a full\n * persistent connection (using WebSockets or long-polling)\n */\nclass ReadonlyRestClient extends ServerActions {\n reportStats(stats) {\n throw new Error('Method not implemented.');\n }\n static getListenId_(query, tag) {\n if (tag !== undefined) {\n return 'tag$' + tag;\n }\n else {\n assert(query._queryParams.isDefault(), \"should have a tag if it's not a default query.\");\n return query._path.toString();\n }\n }\n /**\n * @param repoInfo_ - Data about the namespace we are connecting to\n * @param onDataUpdate_ - A callback for new data from the server\n */\n constructor(repoInfo_, onDataUpdate_, authTokenProvider_, appCheckTokenProvider_) {\n super();\n this.repoInfo_ = repoInfo_;\n this.onDataUpdate_ = onDataUpdate_;\n this.authTokenProvider_ = authTokenProvider_;\n this.appCheckTokenProvider_ = appCheckTokenProvider_;\n /** @private {function(...[*])} */\n this.log_ = logWrapper('p:rest:');\n /**\n * We don't actually need to track listens, except to prevent us calling an onComplete for a listen\n * that's been removed. :-/\n */\n this.listens_ = {};\n }\n /** @inheritDoc */\n listen(query, currentHashFn, tag, onComplete) {\n const pathString = query._path.toString();\n this.log_('Listen called for ' + pathString + ' ' + query._queryIdentifier);\n // Mark this listener so we can tell if it's removed.\n const listenId = ReadonlyRestClient.getListenId_(query, tag);\n const thisListen = {};\n this.listens_[listenId] = thisListen;\n const queryStringParameters = queryParamsToRestQueryStringParameters(query._queryParams);\n this.restRequest_(pathString + '.json', queryStringParameters, (error, result) => {\n let data = result;\n if (error === 404) {\n data = null;\n error = null;\n }\n if (error === null) {\n this.onDataUpdate_(pathString, data, /*isMerge=*/ false, tag);\n }\n if (safeGet(this.listens_, listenId) === thisListen) {\n let status;\n if (!error) {\n status = 'ok';\n }\n else if (error === 401) {\n status = 'permission_denied';\n }\n else {\n status = 'rest_error:' + error;\n }\n onComplete(status, null);\n }\n });\n }\n /** @inheritDoc */\n unlisten(query, tag) {\n const listenId = ReadonlyRestClient.getListenId_(query, tag);\n delete this.listens_[listenId];\n }\n get(query) {\n const queryStringParameters = queryParamsToRestQueryStringParameters(query._queryParams);\n const pathString = query._path.toString();\n const deferred = new Deferred();\n this.restRequest_(pathString + '.json', queryStringParameters, (error, result) => {\n let data = result;\n if (error === 404) {\n data = null;\n error = null;\n }\n if (error === null) {\n this.onDataUpdate_(pathString, data, \n /*isMerge=*/ false, \n /*tag=*/ null);\n deferred.resolve(data);\n }\n else {\n deferred.reject(new Error(data));\n }\n });\n return deferred.promise;\n }\n /** @inheritDoc */\n refreshAuthToken(token) {\n // no-op since we just always call getToken.\n }\n /**\n * Performs a REST request to the given path, with the provided query string parameters,\n * and any auth credentials we have.\n */\n restRequest_(pathString, queryStringParameters = {}, callback) {\n queryStringParameters['format'] = 'export';\n return Promise.all([\n this.authTokenProvider_.getToken(/*forceRefresh=*/ false),\n this.appCheckTokenProvider_.getToken(/*forceRefresh=*/ false)\n ]).then(([authToken, appCheckToken]) => {\n if (authToken && authToken.accessToken) {\n queryStringParameters['auth'] = authToken.accessToken;\n }\n if (appCheckToken && appCheckToken.token) {\n queryStringParameters['ac'] = appCheckToken.token;\n }\n const url = (this.repoInfo_.secure ? 'https://' : 'http://') +\n this.repoInfo_.host +\n pathString +\n '?' +\n 'ns=' +\n this.repoInfo_.namespace +\n querystring(queryStringParameters);\n this.log_('Sending REST request for ' + url);\n const xhr = new XMLHttpRequest();\n xhr.onreadystatechange = () => {\n if (callback && xhr.readyState === 4) {\n this.log_('REST Response for ' + url + ' received. status:', xhr.status, 'response:', xhr.responseText);\n let res = null;\n if (xhr.status >= 200 && xhr.status < 300) {\n try {\n res = jsonEval(xhr.responseText);\n }\n catch (e) {\n warn('Failed to parse JSON response for ' +\n url +\n ': ' +\n xhr.responseText);\n }\n callback(null, res);\n }\n else {\n // 401 and 404 are expected.\n if (xhr.status !== 401 && xhr.status !== 404) {\n warn('Got unsuccessful REST response for ' +\n url +\n ' Status: ' +\n xhr.status);\n }\n callback(xhr.status);\n }\n callback = null;\n }\n };\n xhr.open('GET', url, /*asynchronous=*/ true);\n xhr.send();\n });\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Mutable object which basically just stores a reference to the \"latest\" immutable snapshot.\n */\nclass SnapshotHolder {\n constructor() {\n this.rootNode_ = ChildrenNode.EMPTY_NODE;\n }\n getNode(path) {\n return this.rootNode_.getChild(path);\n }\n updateSnapshot(path, newSnapshotNode) {\n this.rootNode_ = this.rootNode_.updateChild(path, newSnapshotNode);\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction newSparseSnapshotTree() {\n return {\n value: null,\n children: new Map()\n };\n}\n/**\n * Stores the given node at the specified path. If there is already a node\n * at a shallower path, it merges the new data into that snapshot node.\n *\n * @param path - Path to look up snapshot for.\n * @param data - The new data, or null.\n */\nfunction sparseSnapshotTreeRemember(sparseSnapshotTree, path, data) {\n if (pathIsEmpty(path)) {\n sparseSnapshotTree.value = data;\n sparseSnapshotTree.children.clear();\n }\n else if (sparseSnapshotTree.value !== null) {\n sparseSnapshotTree.value = sparseSnapshotTree.value.updateChild(path, data);\n }\n else {\n const childKey = pathGetFront(path);\n if (!sparseSnapshotTree.children.has(childKey)) {\n sparseSnapshotTree.children.set(childKey, newSparseSnapshotTree());\n }\n const child = sparseSnapshotTree.children.get(childKey);\n path = pathPopFront(path);\n sparseSnapshotTreeRemember(child, path, data);\n }\n}\n/**\n * Purge the data at path from the cache.\n *\n * @param path - Path to look up snapshot for.\n * @returns True if this node should now be removed.\n */\nfunction sparseSnapshotTreeForget(sparseSnapshotTree, path) {\n if (pathIsEmpty(path)) {\n sparseSnapshotTree.value = null;\n sparseSnapshotTree.children.clear();\n return true;\n }\n else {\n if (sparseSnapshotTree.value !== null) {\n if (sparseSnapshotTree.value.isLeafNode()) {\n // We're trying to forget a node that doesn't exist\n return false;\n }\n else {\n const value = sparseSnapshotTree.value;\n sparseSnapshotTree.value = null;\n value.forEachChild(PRIORITY_INDEX, (key, tree) => {\n sparseSnapshotTreeRemember(sparseSnapshotTree, new Path(key), tree);\n });\n return sparseSnapshotTreeForget(sparseSnapshotTree, path);\n }\n }\n else if (sparseSnapshotTree.children.size > 0) {\n const childKey = pathGetFront(path);\n path = pathPopFront(path);\n if (sparseSnapshotTree.children.has(childKey)) {\n const safeToRemove = sparseSnapshotTreeForget(sparseSnapshotTree.children.get(childKey), path);\n if (safeToRemove) {\n sparseSnapshotTree.children.delete(childKey);\n }\n }\n return sparseSnapshotTree.children.size === 0;\n }\n else {\n return true;\n }\n }\n}\n/**\n * Recursively iterates through all of the stored tree and calls the\n * callback on each one.\n *\n * @param prefixPath - Path to look up node for.\n * @param func - The function to invoke for each tree.\n */\nfunction sparseSnapshotTreeForEachTree(sparseSnapshotTree, prefixPath, func) {\n if (sparseSnapshotTree.value !== null) {\n func(prefixPath, sparseSnapshotTree.value);\n }\n else {\n sparseSnapshotTreeForEachChild(sparseSnapshotTree, (key, tree) => {\n const path = new Path(prefixPath.toString() + '/' + key);\n sparseSnapshotTreeForEachTree(tree, path, func);\n });\n }\n}\n/**\n * Iterates through each immediate child and triggers the callback.\n * Only seems to be used in tests.\n *\n * @param func - The function to invoke for each child.\n */\nfunction sparseSnapshotTreeForEachChild(sparseSnapshotTree, func) {\n sparseSnapshotTree.children.forEach((tree, key) => {\n func(key, tree);\n });\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Returns the delta from the previous call to get stats.\n *\n * @param collection_ - The collection to \"listen\" to.\n */\nclass StatsListener {\n constructor(collection_) {\n this.collection_ = collection_;\n this.last_ = null;\n }\n get() {\n const newStats = this.collection_.get();\n const delta = Object.assign({}, newStats);\n if (this.last_) {\n each(this.last_, (stat, value) => {\n delta[stat] = delta[stat] - value;\n });\n }\n this.last_ = newStats;\n return delta;\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Assuming some apps may have a short amount of time on page, and a bulk of firebase operations probably\n// happen on page load, we try to report our first set of stats pretty quickly, but we wait at least 10\n// seconds to try to ensure the Firebase connection is established / settled.\nconst FIRST_STATS_MIN_TIME = 10 * 1000;\nconst FIRST_STATS_MAX_TIME = 30 * 1000;\n// We'll continue to report stats on average every 5 minutes.\nconst REPORT_STATS_INTERVAL = 5 * 60 * 1000;\nclass StatsReporter {\n constructor(collection, server_) {\n this.server_ = server_;\n this.statsToReport_ = {};\n this.statsListener_ = new StatsListener(collection);\n const timeout = FIRST_STATS_MIN_TIME +\n (FIRST_STATS_MAX_TIME - FIRST_STATS_MIN_TIME) * Math.random();\n setTimeoutNonBlocking(this.reportStats_.bind(this), Math.floor(timeout));\n }\n reportStats_() {\n const stats = this.statsListener_.get();\n const reportedStats = {};\n let haveStatsToReport = false;\n each(stats, (stat, value) => {\n if (value > 0 && contains(this.statsToReport_, stat)) {\n reportedStats[stat] = value;\n haveStatsToReport = true;\n }\n });\n if (haveStatsToReport) {\n this.server_.reportStats(reportedStats);\n }\n // queue our next run.\n setTimeoutNonBlocking(this.reportStats_.bind(this), Math.floor(Math.random() * 2 * REPORT_STATS_INTERVAL));\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n *\n * @enum\n */\nvar OperationType;\n(function (OperationType) {\n OperationType[OperationType[\"OVERWRITE\"] = 0] = \"OVERWRITE\";\n OperationType[OperationType[\"MERGE\"] = 1] = \"MERGE\";\n OperationType[OperationType[\"ACK_USER_WRITE\"] = 2] = \"ACK_USER_WRITE\";\n OperationType[OperationType[\"LISTEN_COMPLETE\"] = 3] = \"LISTEN_COMPLETE\";\n})(OperationType || (OperationType = {}));\nfunction newOperationSourceUser() {\n return {\n fromUser: true,\n fromServer: false,\n queryId: null,\n tagged: false\n };\n}\nfunction newOperationSourceServer() {\n return {\n fromUser: false,\n fromServer: true,\n queryId: null,\n tagged: false\n };\n}\nfunction newOperationSourceServerTaggedQuery(queryId) {\n return {\n fromUser: false,\n fromServer: true,\n queryId,\n tagged: true\n };\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass AckUserWrite {\n /**\n * @param affectedTree - A tree containing true for each affected path. Affected paths can't overlap.\n */\n constructor(\n /** @inheritDoc */ path, \n /** @inheritDoc */ affectedTree, \n /** @inheritDoc */ revert) {\n this.path = path;\n this.affectedTree = affectedTree;\n this.revert = revert;\n /** @inheritDoc */\n this.type = OperationType.ACK_USER_WRITE;\n /** @inheritDoc */\n this.source = newOperationSourceUser();\n }\n operationForChild(childName) {\n if (!pathIsEmpty(this.path)) {\n assert(pathGetFront(this.path) === childName, 'operationForChild called for unrelated child.');\n return new AckUserWrite(pathPopFront(this.path), this.affectedTree, this.revert);\n }\n else if (this.affectedTree.value != null) {\n assert(this.affectedTree.children.isEmpty(), 'affectedTree should not have overlapping affected paths.');\n // All child locations are affected as well; just return same operation.\n return this;\n }\n else {\n const childTree = this.affectedTree.subtree(new Path(childName));\n return new AckUserWrite(newEmptyPath(), childTree, this.revert);\n }\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass ListenComplete {\n constructor(source, path) {\n this.source = source;\n this.path = path;\n /** @inheritDoc */\n this.type = OperationType.LISTEN_COMPLETE;\n }\n operationForChild(childName) {\n if (pathIsEmpty(this.path)) {\n return new ListenComplete(this.source, newEmptyPath());\n }\n else {\n return new ListenComplete(this.source, pathPopFront(this.path));\n }\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass Overwrite {\n constructor(source, path, snap) {\n this.source = source;\n this.path = path;\n this.snap = snap;\n /** @inheritDoc */\n this.type = OperationType.OVERWRITE;\n }\n operationForChild(childName) {\n if (pathIsEmpty(this.path)) {\n return new Overwrite(this.source, newEmptyPath(), this.snap.getImmediateChild(childName));\n }\n else {\n return new Overwrite(this.source, pathPopFront(this.path), this.snap);\n }\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass Merge {\n constructor(\n /** @inheritDoc */ source, \n /** @inheritDoc */ path, \n /** @inheritDoc */ children) {\n this.source = source;\n this.path = path;\n this.children = children;\n /** @inheritDoc */\n this.type = OperationType.MERGE;\n }\n operationForChild(childName) {\n if (pathIsEmpty(this.path)) {\n const childTree = this.children.subtree(new Path(childName));\n if (childTree.isEmpty()) {\n // This child is unaffected\n return null;\n }\n else if (childTree.value) {\n // We have a snapshot for the child in question. This becomes an overwrite of the child.\n return new Overwrite(this.source, newEmptyPath(), childTree.value);\n }\n else {\n // This is a merge at a deeper level\n return new Merge(this.source, newEmptyPath(), childTree);\n }\n }\n else {\n assert(pathGetFront(this.path) === childName, \"Can't get a merge for a child not on the path of the operation\");\n return new Merge(this.source, pathPopFront(this.path), this.children);\n }\n }\n toString() {\n return ('Operation(' +\n this.path +\n ': ' +\n this.source.toString() +\n ' merge: ' +\n this.children.toString() +\n ')');\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A cache node only stores complete children. Additionally it holds a flag whether the node can be considered fully\n * initialized in the sense that we know at one point in time this represented a valid state of the world, e.g.\n * initialized with data from the server, or a complete overwrite by the client. The filtered flag also tracks\n * whether a node potentially had children removed due to a filter.\n */\nclass CacheNode {\n constructor(node_, fullyInitialized_, filtered_) {\n this.node_ = node_;\n this.fullyInitialized_ = fullyInitialized_;\n this.filtered_ = filtered_;\n }\n /**\n * Returns whether this node was fully initialized with either server data or a complete overwrite by the client\n */\n isFullyInitialized() {\n return this.fullyInitialized_;\n }\n /**\n * Returns whether this node is potentially missing children due to a filter applied to the node\n */\n isFiltered() {\n return this.filtered_;\n }\n isCompleteForPath(path) {\n if (pathIsEmpty(path)) {\n return this.isFullyInitialized() && !this.filtered_;\n }\n const childKey = pathGetFront(path);\n return this.isCompleteForChild(childKey);\n }\n isCompleteForChild(key) {\n return ((this.isFullyInitialized() && !this.filtered_) || this.node_.hasChild(key));\n }\n getNode() {\n return this.node_;\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * An EventGenerator is used to convert \"raw\" changes (Change) as computed by the\n * CacheDiffer into actual events (Event) that can be raised. See generateEventsForChanges()\n * for details.\n *\n */\nclass EventGenerator {\n constructor(query_) {\n this.query_ = query_;\n this.index_ = this.query_._queryParams.getIndex();\n }\n}\n/**\n * Given a set of raw changes (no moved events and prevName not specified yet), and a set of\n * EventRegistrations that should be notified of these changes, generate the actual events to be raised.\n *\n * Notes:\n * - child_moved events will be synthesized at this time for any child_changed events that affect\n * our index.\n * - prevName will be calculated based on the index ordering.\n */\nfunction eventGeneratorGenerateEventsForChanges(eventGenerator, changes, eventCache, eventRegistrations) {\n const events = [];\n const moves = [];\n changes.forEach(change => {\n if (change.type === \"child_changed\" /* ChangeType.CHILD_CHANGED */ &&\n eventGenerator.index_.indexedValueChanged(change.oldSnap, change.snapshotNode)) {\n moves.push(changeChildMoved(change.childName, change.snapshotNode));\n }\n });\n eventGeneratorGenerateEventsForType(eventGenerator, events, \"child_removed\" /* ChangeType.CHILD_REMOVED */, changes, eventRegistrations, eventCache);\n eventGeneratorGenerateEventsForType(eventGenerator, events, \"child_added\" /* ChangeType.CHILD_ADDED */, changes, eventRegistrations, eventCache);\n eventGeneratorGenerateEventsForType(eventGenerator, events, \"child_moved\" /* ChangeType.CHILD_MOVED */, moves, eventRegistrations, eventCache);\n eventGeneratorGenerateEventsForType(eventGenerator, events, \"child_changed\" /* ChangeType.CHILD_CHANGED */, changes, eventRegistrations, eventCache);\n eventGeneratorGenerateEventsForType(eventGenerator, events, \"value\" /* ChangeType.VALUE */, changes, eventRegistrations, eventCache);\n return events;\n}\n/**\n * Given changes of a single change type, generate the corresponding events.\n */\nfunction eventGeneratorGenerateEventsForType(eventGenerator, events, eventType, changes, registrations, eventCache) {\n const filteredChanges = changes.filter(change => change.type === eventType);\n filteredChanges.sort((a, b) => eventGeneratorCompareChanges(eventGenerator, a, b));\n filteredChanges.forEach(change => {\n const materializedChange = eventGeneratorMaterializeSingleChange(eventGenerator, change, eventCache);\n registrations.forEach(registration => {\n if (registration.respondsTo(change.type)) {\n events.push(registration.createEvent(materializedChange, eventGenerator.query_));\n }\n });\n });\n}\nfunction eventGeneratorMaterializeSingleChange(eventGenerator, change, eventCache) {\n if (change.type === 'value' || change.type === 'child_removed') {\n return change;\n }\n else {\n change.prevName = eventCache.getPredecessorChildName(change.childName, change.snapshotNode, eventGenerator.index_);\n return change;\n }\n}\nfunction eventGeneratorCompareChanges(eventGenerator, a, b) {\n if (a.childName == null || b.childName == null) {\n throw assertionError('Should only compare child_ events.');\n }\n const aWrapped = new NamedNode(a.childName, a.snapshotNode);\n const bWrapped = new NamedNode(b.childName, b.snapshotNode);\n return eventGenerator.index_.compare(aWrapped, bWrapped);\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction newViewCache(eventCache, serverCache) {\n return { eventCache, serverCache };\n}\nfunction viewCacheUpdateEventSnap(viewCache, eventSnap, complete, filtered) {\n return newViewCache(new CacheNode(eventSnap, complete, filtered), viewCache.serverCache);\n}\nfunction viewCacheUpdateServerSnap(viewCache, serverSnap, complete, filtered) {\n return newViewCache(viewCache.eventCache, new CacheNode(serverSnap, complete, filtered));\n}\nfunction viewCacheGetCompleteEventSnap(viewCache) {\n return viewCache.eventCache.isFullyInitialized()\n ? viewCache.eventCache.getNode()\n : null;\n}\nfunction viewCacheGetCompleteServerSnap(viewCache) {\n return viewCache.serverCache.isFullyInitialized()\n ? viewCache.serverCache.getNode()\n : null;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nlet emptyChildrenSingleton;\n/**\n * Singleton empty children collection.\n *\n */\nconst EmptyChildren = () => {\n if (!emptyChildrenSingleton) {\n emptyChildrenSingleton = new SortedMap(stringCompare);\n }\n return emptyChildrenSingleton;\n};\n/**\n * A tree with immutable elements.\n */\nclass ImmutableTree {\n static fromObject(obj) {\n let tree = new ImmutableTree(null);\n each(obj, (childPath, childSnap) => {\n tree = tree.set(new Path(childPath), childSnap);\n });\n return tree;\n }\n constructor(value, children = EmptyChildren()) {\n this.value = value;\n this.children = children;\n }\n /**\n * True if the value is empty and there are no children\n */\n isEmpty() {\n return this.value === null && this.children.isEmpty();\n }\n /**\n * Given a path and predicate, return the first node and the path to that node\n * where the predicate returns true.\n *\n * TODO Do a perf test -- If we're creating a bunch of `{path: value:}`\n * objects on the way back out, it may be better to pass down a pathSoFar obj.\n *\n * @param relativePath - The remainder of the path\n * @param predicate - The predicate to satisfy to return a node\n */\n findRootMostMatchingPathAndValue(relativePath, predicate) {\n if (this.value != null && predicate(this.value)) {\n return { path: newEmptyPath(), value: this.value };\n }\n else {\n if (pathIsEmpty(relativePath)) {\n return null;\n }\n else {\n const front = pathGetFront(relativePath);\n const child = this.children.get(front);\n if (child !== null) {\n const childExistingPathAndValue = child.findRootMostMatchingPathAndValue(pathPopFront(relativePath), predicate);\n if (childExistingPathAndValue != null) {\n const fullPath = pathChild(new Path(front), childExistingPathAndValue.path);\n return { path: fullPath, value: childExistingPathAndValue.value };\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n }\n }\n }\n /**\n * Find, if it exists, the shortest subpath of the given path that points a defined\n * value in the tree\n */\n findRootMostValueAndPath(relativePath) {\n return this.findRootMostMatchingPathAndValue(relativePath, () => true);\n }\n /**\n * @returns The subtree at the given path\n */\n subtree(relativePath) {\n if (pathIsEmpty(relativePath)) {\n return this;\n }\n else {\n const front = pathGetFront(relativePath);\n const childTree = this.children.get(front);\n if (childTree !== null) {\n return childTree.subtree(pathPopFront(relativePath));\n }\n else {\n return new ImmutableTree(null);\n }\n }\n }\n /**\n * Sets a value at the specified path.\n *\n * @param relativePath - Path to set value at.\n * @param toSet - Value to set.\n * @returns Resulting tree.\n */\n set(relativePath, toSet) {\n if (pathIsEmpty(relativePath)) {\n return new ImmutableTree(toSet, this.children);\n }\n else {\n const front = pathGetFront(relativePath);\n const child = this.children.get(front) || new ImmutableTree(null);\n const newChild = child.set(pathPopFront(relativePath), toSet);\n const newChildren = this.children.insert(front, newChild);\n return new ImmutableTree(this.value, newChildren);\n }\n }\n /**\n * Removes the value at the specified path.\n *\n * @param relativePath - Path to value to remove.\n * @returns Resulting tree.\n */\n remove(relativePath) {\n if (pathIsEmpty(relativePath)) {\n if (this.children.isEmpty()) {\n return new ImmutableTree(null);\n }\n else {\n return new ImmutableTree(null, this.children);\n }\n }\n else {\n const front = pathGetFront(relativePath);\n const child = this.children.get(front);\n if (child) {\n const newChild = child.remove(pathPopFront(relativePath));\n let newChildren;\n if (newChild.isEmpty()) {\n newChildren = this.children.remove(front);\n }\n else {\n newChildren = this.children.insert(front, newChild);\n }\n if (this.value === null && newChildren.isEmpty()) {\n return new ImmutableTree(null);\n }\n else {\n return new ImmutableTree(this.value, newChildren);\n }\n }\n else {\n return this;\n }\n }\n }\n /**\n * Gets a value from the tree.\n *\n * @param relativePath - Path to get value for.\n * @returns Value at path, or null.\n */\n get(relativePath) {\n if (pathIsEmpty(relativePath)) {\n return this.value;\n }\n else {\n const front = pathGetFront(relativePath);\n const child = this.children.get(front);\n if (child) {\n return child.get(pathPopFront(relativePath));\n }\n else {\n return null;\n }\n }\n }\n /**\n * Replace the subtree at the specified path with the given new tree.\n *\n * @param relativePath - Path to replace subtree for.\n * @param newTree - New tree.\n * @returns Resulting tree.\n */\n setTree(relativePath, newTree) {\n if (pathIsEmpty(relativePath)) {\n return newTree;\n }\n else {\n const front = pathGetFront(relativePath);\n const child = this.children.get(front) || new ImmutableTree(null);\n const newChild = child.setTree(pathPopFront(relativePath), newTree);\n let newChildren;\n if (newChild.isEmpty()) {\n newChildren = this.children.remove(front);\n }\n else {\n newChildren = this.children.insert(front, newChild);\n }\n return new ImmutableTree(this.value, newChildren);\n }\n }\n /**\n * Performs a depth first fold on this tree. Transforms a tree into a single\n * value, given a function that operates on the path to a node, an optional\n * current value, and a map of child names to folded subtrees\n */\n fold(fn) {\n return this.fold_(newEmptyPath(), fn);\n }\n /**\n * Recursive helper for public-facing fold() method\n */\n fold_(pathSoFar, fn) {\n const accum = {};\n this.children.inorderTraversal((childKey, childTree) => {\n accum[childKey] = childTree.fold_(pathChild(pathSoFar, childKey), fn);\n });\n return fn(pathSoFar, this.value, accum);\n }\n /**\n * Find the first matching value on the given path. Return the result of applying f to it.\n */\n findOnPath(path, f) {\n return this.findOnPath_(path, newEmptyPath(), f);\n }\n findOnPath_(pathToFollow, pathSoFar, f) {\n const result = this.value ? f(pathSoFar, this.value) : false;\n if (result) {\n return result;\n }\n else {\n if (pathIsEmpty(pathToFollow)) {\n return null;\n }\n else {\n const front = pathGetFront(pathToFollow);\n const nextChild = this.children.get(front);\n if (nextChild) {\n return nextChild.findOnPath_(pathPopFront(pathToFollow), pathChild(pathSoFar, front), f);\n }\n else {\n return null;\n }\n }\n }\n }\n foreachOnPath(path, f) {\n return this.foreachOnPath_(path, newEmptyPath(), f);\n }\n foreachOnPath_(pathToFollow, currentRelativePath, f) {\n if (pathIsEmpty(pathToFollow)) {\n return this;\n }\n else {\n if (this.value) {\n f(currentRelativePath, this.value);\n }\n const front = pathGetFront(pathToFollow);\n const nextChild = this.children.get(front);\n if (nextChild) {\n return nextChild.foreachOnPath_(pathPopFront(pathToFollow), pathChild(currentRelativePath, front), f);\n }\n else {\n return new ImmutableTree(null);\n }\n }\n }\n /**\n * Calls the given function for each node in the tree that has a value.\n *\n * @param f - A function to be called with the path from the root of the tree to\n * a node, and the value at that node. Called in depth-first order.\n */\n foreach(f) {\n this.foreach_(newEmptyPath(), f);\n }\n foreach_(currentRelativePath, f) {\n this.children.inorderTraversal((childName, childTree) => {\n childTree.foreach_(pathChild(currentRelativePath, childName), f);\n });\n if (this.value) {\n f(currentRelativePath, this.value);\n }\n }\n foreachChild(f) {\n this.children.inorderTraversal((childName, childTree) => {\n if (childTree.value) {\n f(childName, childTree.value);\n }\n });\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * This class holds a collection of writes that can be applied to nodes in unison. It abstracts away the logic with\n * dealing with priority writes and multiple nested writes. At any given path there is only allowed to be one write\n * modifying that path. Any write to an existing path or shadowing an existing path will modify that existing write\n * to reflect the write added.\n */\nclass CompoundWrite {\n constructor(writeTree_) {\n this.writeTree_ = writeTree_;\n }\n static empty() {\n return new CompoundWrite(new ImmutableTree(null));\n }\n}\nfunction compoundWriteAddWrite(compoundWrite, path, node) {\n if (pathIsEmpty(path)) {\n return new CompoundWrite(new ImmutableTree(node));\n }\n else {\n const rootmost = compoundWrite.writeTree_.findRootMostValueAndPath(path);\n if (rootmost != null) {\n const rootMostPath = rootmost.path;\n let value = rootmost.value;\n const relativePath = newRelativePath(rootMostPath, path);\n value = value.updateChild(relativePath, node);\n return new CompoundWrite(compoundWrite.writeTree_.set(rootMostPath, value));\n }\n else {\n const subtree = new ImmutableTree(node);\n const newWriteTree = compoundWrite.writeTree_.setTree(path, subtree);\n return new CompoundWrite(newWriteTree);\n }\n }\n}\nfunction compoundWriteAddWrites(compoundWrite, path, updates) {\n let newWrite = compoundWrite;\n each(updates, (childKey, node) => {\n newWrite = compoundWriteAddWrite(newWrite, pathChild(path, childKey), node);\n });\n return newWrite;\n}\n/**\n * Will remove a write at the given path and deeper paths. This will not modify a write at a higher\n * location, which must be removed by calling this method with that path.\n *\n * @param compoundWrite - The CompoundWrite to remove.\n * @param path - The path at which a write and all deeper writes should be removed\n * @returns The new CompoundWrite with the removed path\n */\nfunction compoundWriteRemoveWrite(compoundWrite, path) {\n if (pathIsEmpty(path)) {\n return CompoundWrite.empty();\n }\n else {\n const newWriteTree = compoundWrite.writeTree_.setTree(path, new ImmutableTree(null));\n return new CompoundWrite(newWriteTree);\n }\n}\n/**\n * Returns whether this CompoundWrite will fully overwrite a node at a given location and can therefore be\n * considered \"complete\".\n *\n * @param compoundWrite - The CompoundWrite to check.\n * @param path - The path to check for\n * @returns Whether there is a complete write at that path\n */\nfunction compoundWriteHasCompleteWrite(compoundWrite, path) {\n return compoundWriteGetCompleteNode(compoundWrite, path) != null;\n}\n/**\n * Returns a node for a path if and only if the node is a \"complete\" overwrite at that path. This will not aggregate\n * writes from deeper paths, but will return child nodes from a more shallow path.\n *\n * @param compoundWrite - The CompoundWrite to get the node from.\n * @param path - The path to get a complete write\n * @returns The node if complete at that path, or null otherwise.\n */\nfunction compoundWriteGetCompleteNode(compoundWrite, path) {\n const rootmost = compoundWrite.writeTree_.findRootMostValueAndPath(path);\n if (rootmost != null) {\n return compoundWrite.writeTree_\n .get(rootmost.path)\n .getChild(newRelativePath(rootmost.path, path));\n }\n else {\n return null;\n }\n}\n/**\n * Returns all children that are guaranteed to be a complete overwrite.\n *\n * @param compoundWrite - The CompoundWrite to get children from.\n * @returns A list of all complete children.\n */\nfunction compoundWriteGetCompleteChildren(compoundWrite) {\n const children = [];\n const node = compoundWrite.writeTree_.value;\n if (node != null) {\n // If it's a leaf node, it has no children; so nothing to do.\n if (!node.isLeafNode()) {\n node.forEachChild(PRIORITY_INDEX, (childName, childNode) => {\n children.push(new NamedNode(childName, childNode));\n });\n }\n }\n else {\n compoundWrite.writeTree_.children.inorderTraversal((childName, childTree) => {\n if (childTree.value != null) {\n children.push(new NamedNode(childName, childTree.value));\n }\n });\n }\n return children;\n}\nfunction compoundWriteChildCompoundWrite(compoundWrite, path) {\n if (pathIsEmpty(path)) {\n return compoundWrite;\n }\n else {\n const shadowingNode = compoundWriteGetCompleteNode(compoundWrite, path);\n if (shadowingNode != null) {\n return new CompoundWrite(new ImmutableTree(shadowingNode));\n }\n else {\n return new CompoundWrite(compoundWrite.writeTree_.subtree(path));\n }\n }\n}\n/**\n * Returns true if this CompoundWrite is empty and therefore does not modify any nodes.\n * @returns Whether this CompoundWrite is empty\n */\nfunction compoundWriteIsEmpty(compoundWrite) {\n return compoundWrite.writeTree_.isEmpty();\n}\n/**\n * Applies this CompoundWrite to a node. The node is returned with all writes from this CompoundWrite applied to the\n * node\n * @param node - The node to apply this CompoundWrite to\n * @returns The node with all writes applied\n */\nfunction compoundWriteApply(compoundWrite, node) {\n return applySubtreeWrite(newEmptyPath(), compoundWrite.writeTree_, node);\n}\nfunction applySubtreeWrite(relativePath, writeTree, node) {\n if (writeTree.value != null) {\n // Since there a write is always a leaf, we're done here\n return node.updateChild(relativePath, writeTree.value);\n }\n else {\n let priorityWrite = null;\n writeTree.children.inorderTraversal((childKey, childTree) => {\n if (childKey === '.priority') {\n // Apply priorities at the end so we don't update priorities for either empty nodes or forget\n // to apply priorities to empty nodes that are later filled\n assert(childTree.value !== null, 'Priority writes must always be leaf nodes');\n priorityWrite = childTree.value;\n }\n else {\n node = applySubtreeWrite(pathChild(relativePath, childKey), childTree, node);\n }\n });\n // If there was a priority write, we only apply it if the node is not empty\n if (!node.getChild(relativePath).isEmpty() && priorityWrite !== null) {\n node = node.updateChild(pathChild(relativePath, '.priority'), priorityWrite);\n }\n return node;\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Create a new WriteTreeRef for the given path. For use with a new sync point at the given path.\n *\n */\nfunction writeTreeChildWrites(writeTree, path) {\n return newWriteTreeRef(path, writeTree);\n}\n/**\n * Record a new overwrite from user code.\n *\n * @param visible - This is set to false by some transactions. It should be excluded from event caches\n */\nfunction writeTreeAddOverwrite(writeTree, path, snap, writeId, visible) {\n assert(writeId > writeTree.lastWriteId, 'Stacking an older write on top of newer ones');\n if (visible === undefined) {\n visible = true;\n }\n writeTree.allWrites.push({\n path,\n snap,\n writeId,\n visible\n });\n if (visible) {\n writeTree.visibleWrites = compoundWriteAddWrite(writeTree.visibleWrites, path, snap);\n }\n writeTree.lastWriteId = writeId;\n}\n/**\n * Record a new merge from user code.\n */\nfunction writeTreeAddMerge(writeTree, path, changedChildren, writeId) {\n assert(writeId > writeTree.lastWriteId, 'Stacking an older merge on top of newer ones');\n writeTree.allWrites.push({\n path,\n children: changedChildren,\n writeId,\n visible: true\n });\n writeTree.visibleWrites = compoundWriteAddWrites(writeTree.visibleWrites, path, changedChildren);\n writeTree.lastWriteId = writeId;\n}\nfunction writeTreeGetWrite(writeTree, writeId) {\n for (let i = 0; i < writeTree.allWrites.length; i++) {\n const record = writeTree.allWrites[i];\n if (record.writeId === writeId) {\n return record;\n }\n }\n return null;\n}\n/**\n * Remove a write (either an overwrite or merge) that has been successfully acknowledge by the server. Recalculates\n * the tree if necessary. We return true if it may have been visible, meaning views need to reevaluate.\n *\n * @returns true if the write may have been visible (meaning we'll need to reevaluate / raise\n * events as a result).\n */\nfunction writeTreeRemoveWrite(writeTree, writeId) {\n // Note: disabling this check. It could be a transaction that preempted another transaction, and thus was applied\n // out of order.\n //const validClear = revert || this.allWrites_.length === 0 || writeId <= this.allWrites_[0].writeId;\n //assert(validClear, \"Either we don't have this write, or it's the first one in the queue\");\n const idx = writeTree.allWrites.findIndex(s => {\n return s.writeId === writeId;\n });\n assert(idx >= 0, 'removeWrite called with nonexistent writeId.');\n const writeToRemove = writeTree.allWrites[idx];\n writeTree.allWrites.splice(idx, 1);\n let removedWriteWasVisible = writeToRemove.visible;\n let removedWriteOverlapsWithOtherWrites = false;\n let i = writeTree.allWrites.length - 1;\n while (removedWriteWasVisible && i >= 0) {\n const currentWrite = writeTree.allWrites[i];\n if (currentWrite.visible) {\n if (i >= idx &&\n writeTreeRecordContainsPath_(currentWrite, writeToRemove.path)) {\n // The removed write was completely shadowed by a subsequent write.\n removedWriteWasVisible = false;\n }\n else if (pathContains(writeToRemove.path, currentWrite.path)) {\n // Either we're covering some writes or they're covering part of us (depending on which came first).\n removedWriteOverlapsWithOtherWrites = true;\n }\n }\n i--;\n }\n if (!removedWriteWasVisible) {\n return false;\n }\n else if (removedWriteOverlapsWithOtherWrites) {\n // There's some shadowing going on. Just rebuild the visible writes from scratch.\n writeTreeResetTree_(writeTree);\n return true;\n }\n else {\n // There's no shadowing. We can safely just remove the write(s) from visibleWrites.\n if (writeToRemove.snap) {\n writeTree.visibleWrites = compoundWriteRemoveWrite(writeTree.visibleWrites, writeToRemove.path);\n }\n else {\n const children = writeToRemove.children;\n each(children, (childName) => {\n writeTree.visibleWrites = compoundWriteRemoveWrite(writeTree.visibleWrites, pathChild(writeToRemove.path, childName));\n });\n }\n return true;\n }\n}\nfunction writeTreeRecordContainsPath_(writeRecord, path) {\n if (writeRecord.snap) {\n return pathContains(writeRecord.path, path);\n }\n else {\n for (const childName in writeRecord.children) {\n if (writeRecord.children.hasOwnProperty(childName) &&\n pathContains(pathChild(writeRecord.path, childName), path)) {\n return true;\n }\n }\n return false;\n }\n}\n/**\n * Re-layer the writes and merges into a tree so we can efficiently calculate event snapshots\n */\nfunction writeTreeResetTree_(writeTree) {\n writeTree.visibleWrites = writeTreeLayerTree_(writeTree.allWrites, writeTreeDefaultFilter_, newEmptyPath());\n if (writeTree.allWrites.length > 0) {\n writeTree.lastWriteId =\n writeTree.allWrites[writeTree.allWrites.length - 1].writeId;\n }\n else {\n writeTree.lastWriteId = -1;\n }\n}\n/**\n * The default filter used when constructing the tree. Keep everything that's visible.\n */\nfunction writeTreeDefaultFilter_(write) {\n return write.visible;\n}\n/**\n * Static method. Given an array of WriteRecords, a filter for which ones to include, and a path, construct the tree of\n * event data at that path.\n */\nfunction writeTreeLayerTree_(writes, filter, treeRoot) {\n let compoundWrite = CompoundWrite.empty();\n for (let i = 0; i < writes.length; ++i) {\n const write = writes[i];\n // Theory, a later set will either:\n // a) abort a relevant transaction, so no need to worry about excluding it from calculating that transaction\n // b) not be relevant to a transaction (separate branch), so again will not affect the data for that transaction\n if (filter(write)) {\n const writePath = write.path;\n let relativePath;\n if (write.snap) {\n if (pathContains(treeRoot, writePath)) {\n relativePath = newRelativePath(treeRoot, writePath);\n compoundWrite = compoundWriteAddWrite(compoundWrite, relativePath, write.snap);\n }\n else if (pathContains(writePath, treeRoot)) {\n relativePath = newRelativePath(writePath, treeRoot);\n compoundWrite = compoundWriteAddWrite(compoundWrite, newEmptyPath(), write.snap.getChild(relativePath));\n }\n else ;\n }\n else if (write.children) {\n if (pathContains(treeRoot, writePath)) {\n relativePath = newRelativePath(treeRoot, writePath);\n compoundWrite = compoundWriteAddWrites(compoundWrite, relativePath, write.children);\n }\n else if (pathContains(writePath, treeRoot)) {\n relativePath = newRelativePath(writePath, treeRoot);\n if (pathIsEmpty(relativePath)) {\n compoundWrite = compoundWriteAddWrites(compoundWrite, newEmptyPath(), write.children);\n }\n else {\n const child = safeGet(write.children, pathGetFront(relativePath));\n if (child) {\n // There exists a child in this node that matches the root path\n const deepNode = child.getChild(pathPopFront(relativePath));\n compoundWrite = compoundWriteAddWrite(compoundWrite, newEmptyPath(), deepNode);\n }\n }\n }\n else ;\n }\n else {\n throw assertionError('WriteRecord should have .snap or .children');\n }\n }\n }\n return compoundWrite;\n}\n/**\n * Given optional, underlying server data, and an optional set of constraints (exclude some sets, include hidden\n * writes), attempt to calculate a complete snapshot for the given path\n *\n * @param writeIdsToExclude - An optional set to be excluded\n * @param includeHiddenWrites - Defaults to false, whether or not to layer on writes with visible set to false\n */\nfunction writeTreeCalcCompleteEventCache(writeTree, treePath, completeServerCache, writeIdsToExclude, includeHiddenWrites) {\n if (!writeIdsToExclude && !includeHiddenWrites) {\n const shadowingNode = compoundWriteGetCompleteNode(writeTree.visibleWrites, treePath);\n if (shadowingNode != null) {\n return shadowingNode;\n }\n else {\n const subMerge = compoundWriteChildCompoundWrite(writeTree.visibleWrites, treePath);\n if (compoundWriteIsEmpty(subMerge)) {\n return completeServerCache;\n }\n else if (completeServerCache == null &&\n !compoundWriteHasCompleteWrite(subMerge, newEmptyPath())) {\n // We wouldn't have a complete snapshot, since there's no underlying data and no complete shadow\n return null;\n }\n else {\n const layeredCache = completeServerCache || ChildrenNode.EMPTY_NODE;\n return compoundWriteApply(subMerge, layeredCache);\n }\n }\n }\n else {\n const merge = compoundWriteChildCompoundWrite(writeTree.visibleWrites, treePath);\n if (!includeHiddenWrites && compoundWriteIsEmpty(merge)) {\n return completeServerCache;\n }\n else {\n // If the server cache is null, and we don't have a complete cache, we need to return null\n if (!includeHiddenWrites &&\n completeServerCache == null &&\n !compoundWriteHasCompleteWrite(merge, newEmptyPath())) {\n return null;\n }\n else {\n const filter = function (write) {\n return ((write.visible || includeHiddenWrites) &&\n (!writeIdsToExclude ||\n !~writeIdsToExclude.indexOf(write.writeId)) &&\n (pathContains(write.path, treePath) ||\n pathContains(treePath, write.path)));\n };\n const mergeAtPath = writeTreeLayerTree_(writeTree.allWrites, filter, treePath);\n const layeredCache = completeServerCache || ChildrenNode.EMPTY_NODE;\n return compoundWriteApply(mergeAtPath, layeredCache);\n }\n }\n }\n}\n/**\n * With optional, underlying server data, attempt to return a children node of children that we have complete data for.\n * Used when creating new views, to pre-fill their complete event children snapshot.\n */\nfunction writeTreeCalcCompleteEventChildren(writeTree, treePath, completeServerChildren) {\n let completeChildren = ChildrenNode.EMPTY_NODE;\n const topLevelSet = compoundWriteGetCompleteNode(writeTree.visibleWrites, treePath);\n if (topLevelSet) {\n if (!topLevelSet.isLeafNode()) {\n // we're shadowing everything. Return the children.\n topLevelSet.forEachChild(PRIORITY_INDEX, (childName, childSnap) => {\n completeChildren = completeChildren.updateImmediateChild(childName, childSnap);\n });\n }\n return completeChildren;\n }\n else if (completeServerChildren) {\n // Layer any children we have on top of this\n // We know we don't have a top-level set, so just enumerate existing children\n const merge = compoundWriteChildCompoundWrite(writeTree.visibleWrites, treePath);\n completeServerChildren.forEachChild(PRIORITY_INDEX, (childName, childNode) => {\n const node = compoundWriteApply(compoundWriteChildCompoundWrite(merge, new Path(childName)), childNode);\n completeChildren = completeChildren.updateImmediateChild(childName, node);\n });\n // Add any complete children we have from the set\n compoundWriteGetCompleteChildren(merge).forEach(namedNode => {\n completeChildren = completeChildren.updateImmediateChild(namedNode.name, namedNode.node);\n });\n return completeChildren;\n }\n else {\n // We don't have anything to layer on top of. Layer on any children we have\n // Note that we can return an empty snap if we have a defined delete\n const merge = compoundWriteChildCompoundWrite(writeTree.visibleWrites, treePath);\n compoundWriteGetCompleteChildren(merge).forEach(namedNode => {\n completeChildren = completeChildren.updateImmediateChild(namedNode.name, namedNode.node);\n });\n return completeChildren;\n }\n}\n/**\n * Given that the underlying server data has updated, determine what, if anything, needs to be\n * applied to the event cache.\n *\n * Possibilities:\n *\n * 1. No writes are shadowing. Events should be raised, the snap to be applied comes from the server data\n *\n * 2. Some write is completely shadowing. No events to be raised\n *\n * 3. Is partially shadowed. Events\n *\n * Either existingEventSnap or existingServerSnap must exist\n */\nfunction writeTreeCalcEventCacheAfterServerOverwrite(writeTree, treePath, childPath, existingEventSnap, existingServerSnap) {\n assert(existingEventSnap || existingServerSnap, 'Either existingEventSnap or existingServerSnap must exist');\n const path = pathChild(treePath, childPath);\n if (compoundWriteHasCompleteWrite(writeTree.visibleWrites, path)) {\n // At this point we can probably guarantee that we're in case 2, meaning no events\n // May need to check visibility while doing the findRootMostValueAndPath call\n return null;\n }\n else {\n // No complete shadowing. We're either partially shadowing or not shadowing at all.\n const childMerge = compoundWriteChildCompoundWrite(writeTree.visibleWrites, path);\n if (compoundWriteIsEmpty(childMerge)) {\n // We're not shadowing at all. Case 1\n return existingServerSnap.getChild(childPath);\n }\n else {\n // This could be more efficient if the serverNode + updates doesn't change the eventSnap\n // However this is tricky to find out, since user updates don't necessary change the server\n // snap, e.g. priority updates on empty nodes, or deep deletes. Another special case is if the server\n // adds nodes, but doesn't change any existing writes. It is therefore not enough to\n // only check if the updates change the serverNode.\n // Maybe check if the merge tree contains these special cases and only do a full overwrite in that case?\n return compoundWriteApply(childMerge, existingServerSnap.getChild(childPath));\n }\n }\n}\n/**\n * Returns a complete child for a given server snap after applying all user writes or null if there is no\n * complete child for this ChildKey.\n */\nfunction writeTreeCalcCompleteChild(writeTree, treePath, childKey, existingServerSnap) {\n const path = pathChild(treePath, childKey);\n const shadowingNode = compoundWriteGetCompleteNode(writeTree.visibleWrites, path);\n if (shadowingNode != null) {\n return shadowingNode;\n }\n else {\n if (existingServerSnap.isCompleteForChild(childKey)) {\n const childMerge = compoundWriteChildCompoundWrite(writeTree.visibleWrites, path);\n return compoundWriteApply(childMerge, existingServerSnap.getNode().getImmediateChild(childKey));\n }\n else {\n return null;\n }\n }\n}\n/**\n * Returns a node if there is a complete overwrite for this path. More specifically, if there is a write at\n * a higher path, this will return the child of that write relative to the write and this path.\n * Returns null if there is no write at this path.\n */\nfunction writeTreeShadowingWrite(writeTree, path) {\n return compoundWriteGetCompleteNode(writeTree.visibleWrites, path);\n}\n/**\n * This method is used when processing child remove events on a query. If we can, we pull in children that were outside\n * the window, but may now be in the window.\n */\nfunction writeTreeCalcIndexedSlice(writeTree, treePath, completeServerData, startPost, count, reverse, index) {\n let toIterate;\n const merge = compoundWriteChildCompoundWrite(writeTree.visibleWrites, treePath);\n const shadowingNode = compoundWriteGetCompleteNode(merge, newEmptyPath());\n if (shadowingNode != null) {\n toIterate = shadowingNode;\n }\n else if (completeServerData != null) {\n toIterate = compoundWriteApply(merge, completeServerData);\n }\n else {\n // no children to iterate on\n return [];\n }\n toIterate = toIterate.withIndex(index);\n if (!toIterate.isEmpty() && !toIterate.isLeafNode()) {\n const nodes = [];\n const cmp = index.getCompare();\n const iter = reverse\n ? toIterate.getReverseIteratorFrom(startPost, index)\n : toIterate.getIteratorFrom(startPost, index);\n let next = iter.getNext();\n while (next && nodes.length < count) {\n if (cmp(next, startPost) !== 0) {\n nodes.push(next);\n }\n next = iter.getNext();\n }\n return nodes;\n }\n else {\n return [];\n }\n}\nfunction newWriteTree() {\n return {\n visibleWrites: CompoundWrite.empty(),\n allWrites: [],\n lastWriteId: -1\n };\n}\n/**\n * If possible, returns a complete event cache, using the underlying server data if possible. In addition, can be used\n * to get a cache that includes hidden writes, and excludes arbitrary writes. Note that customizing the returned node\n * can lead to a more expensive calculation.\n *\n * @param writeIdsToExclude - Optional writes to exclude.\n * @param includeHiddenWrites - Defaults to false, whether or not to layer on writes with visible set to false\n */\nfunction writeTreeRefCalcCompleteEventCache(writeTreeRef, completeServerCache, writeIdsToExclude, includeHiddenWrites) {\n return writeTreeCalcCompleteEventCache(writeTreeRef.writeTree, writeTreeRef.treePath, completeServerCache, writeIdsToExclude, includeHiddenWrites);\n}\n/**\n * If possible, returns a children node containing all of the complete children we have data for. The returned data is a\n * mix of the given server data and write data.\n *\n */\nfunction writeTreeRefCalcCompleteEventChildren(writeTreeRef, completeServerChildren) {\n return writeTreeCalcCompleteEventChildren(writeTreeRef.writeTree, writeTreeRef.treePath, completeServerChildren);\n}\n/**\n * Given that either the underlying server data has updated or the outstanding writes have updated, determine what,\n * if anything, needs to be applied to the event cache.\n *\n * Possibilities:\n *\n * 1. No writes are shadowing. Events should be raised, the snap to be applied comes from the server data\n *\n * 2. Some write is completely shadowing. No events to be raised\n *\n * 3. Is partially shadowed. Events should be raised\n *\n * Either existingEventSnap or existingServerSnap must exist, this is validated via an assert\n *\n *\n */\nfunction writeTreeRefCalcEventCacheAfterServerOverwrite(writeTreeRef, path, existingEventSnap, existingServerSnap) {\n return writeTreeCalcEventCacheAfterServerOverwrite(writeTreeRef.writeTree, writeTreeRef.treePath, path, existingEventSnap, existingServerSnap);\n}\n/**\n * Returns a node if there is a complete overwrite for this path. More specifically, if there is a write at\n * a higher path, this will return the child of that write relative to the write and this path.\n * Returns null if there is no write at this path.\n *\n */\nfunction writeTreeRefShadowingWrite(writeTreeRef, path) {\n return writeTreeShadowingWrite(writeTreeRef.writeTree, pathChild(writeTreeRef.treePath, path));\n}\n/**\n * This method is used when processing child remove events on a query. If we can, we pull in children that were outside\n * the window, but may now be in the window\n */\nfunction writeTreeRefCalcIndexedSlice(writeTreeRef, completeServerData, startPost, count, reverse, index) {\n return writeTreeCalcIndexedSlice(writeTreeRef.writeTree, writeTreeRef.treePath, completeServerData, startPost, count, reverse, index);\n}\n/**\n * Returns a complete child for a given server snap after applying all user writes or null if there is no\n * complete child for this ChildKey.\n */\nfunction writeTreeRefCalcCompleteChild(writeTreeRef, childKey, existingServerCache) {\n return writeTreeCalcCompleteChild(writeTreeRef.writeTree, writeTreeRef.treePath, childKey, existingServerCache);\n}\n/**\n * Return a WriteTreeRef for a child.\n */\nfunction writeTreeRefChild(writeTreeRef, childName) {\n return newWriteTreeRef(pathChild(writeTreeRef.treePath, childName), writeTreeRef.writeTree);\n}\nfunction newWriteTreeRef(path, writeTree) {\n return {\n treePath: path,\n writeTree\n };\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass ChildChangeAccumulator {\n constructor() {\n this.changeMap = new Map();\n }\n trackChildChange(change) {\n const type = change.type;\n const childKey = change.childName;\n assert(type === \"child_added\" /* ChangeType.CHILD_ADDED */ ||\n type === \"child_changed\" /* ChangeType.CHILD_CHANGED */ ||\n type === \"child_removed\" /* ChangeType.CHILD_REMOVED */, 'Only child changes supported for tracking');\n assert(childKey !== '.priority', 'Only non-priority child changes can be tracked.');\n const oldChange = this.changeMap.get(childKey);\n if (oldChange) {\n const oldType = oldChange.type;\n if (type === \"child_added\" /* ChangeType.CHILD_ADDED */ &&\n oldType === \"child_removed\" /* ChangeType.CHILD_REMOVED */) {\n this.changeMap.set(childKey, changeChildChanged(childKey, change.snapshotNode, oldChange.snapshotNode));\n }\n else if (type === \"child_removed\" /* ChangeType.CHILD_REMOVED */ &&\n oldType === \"child_added\" /* ChangeType.CHILD_ADDED */) {\n this.changeMap.delete(childKey);\n }\n else if (type === \"child_removed\" /* ChangeType.CHILD_REMOVED */ &&\n oldType === \"child_changed\" /* ChangeType.CHILD_CHANGED */) {\n this.changeMap.set(childKey, changeChildRemoved(childKey, oldChange.oldSnap));\n }\n else if (type === \"child_changed\" /* ChangeType.CHILD_CHANGED */ &&\n oldType === \"child_added\" /* ChangeType.CHILD_ADDED */) {\n this.changeMap.set(childKey, changeChildAdded(childKey, change.snapshotNode));\n }\n else if (type === \"child_changed\" /* ChangeType.CHILD_CHANGED */ &&\n oldType === \"child_changed\" /* ChangeType.CHILD_CHANGED */) {\n this.changeMap.set(childKey, changeChildChanged(childKey, change.snapshotNode, oldChange.oldSnap));\n }\n else {\n throw assertionError('Illegal combination of changes: ' +\n change +\n ' occurred after ' +\n oldChange);\n }\n }\n else {\n this.changeMap.set(childKey, change);\n }\n }\n getChanges() {\n return Array.from(this.changeMap.values());\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * An implementation of CompleteChildSource that never returns any additional children\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nclass NoCompleteChildSource_ {\n getCompleteChild(childKey) {\n return null;\n }\n getChildAfterChild(index, child, reverse) {\n return null;\n }\n}\n/**\n * Singleton instance.\n */\nconst NO_COMPLETE_CHILD_SOURCE = new NoCompleteChildSource_();\n/**\n * An implementation of CompleteChildSource that uses a WriteTree in addition to any other server data or\n * old event caches available to calculate complete children.\n */\nclass WriteTreeCompleteChildSource {\n constructor(writes_, viewCache_, optCompleteServerCache_ = null) {\n this.writes_ = writes_;\n this.viewCache_ = viewCache_;\n this.optCompleteServerCache_ = optCompleteServerCache_;\n }\n getCompleteChild(childKey) {\n const node = this.viewCache_.eventCache;\n if (node.isCompleteForChild(childKey)) {\n return node.getNode().getImmediateChild(childKey);\n }\n else {\n const serverNode = this.optCompleteServerCache_ != null\n ? new CacheNode(this.optCompleteServerCache_, true, false)\n : this.viewCache_.serverCache;\n return writeTreeRefCalcCompleteChild(this.writes_, childKey, serverNode);\n }\n }\n getChildAfterChild(index, child, reverse) {\n const completeServerData = this.optCompleteServerCache_ != null\n ? this.optCompleteServerCache_\n : viewCacheGetCompleteServerSnap(this.viewCache_);\n const nodes = writeTreeRefCalcIndexedSlice(this.writes_, completeServerData, child, 1, reverse, index);\n if (nodes.length === 0) {\n return null;\n }\n else {\n return nodes[0];\n }\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction newViewProcessor(filter) {\n return { filter };\n}\nfunction viewProcessorAssertIndexed(viewProcessor, viewCache) {\n assert(viewCache.eventCache.getNode().isIndexed(viewProcessor.filter.getIndex()), 'Event snap not indexed');\n assert(viewCache.serverCache.getNode().isIndexed(viewProcessor.filter.getIndex()), 'Server snap not indexed');\n}\nfunction viewProcessorApplyOperation(viewProcessor, oldViewCache, operation, writesCache, completeCache) {\n const accumulator = new ChildChangeAccumulator();\n let newViewCache, filterServerNode;\n if (operation.type === OperationType.OVERWRITE) {\n const overwrite = operation;\n if (overwrite.source.fromUser) {\n newViewCache = viewProcessorApplyUserOverwrite(viewProcessor, oldViewCache, overwrite.path, overwrite.snap, writesCache, completeCache, accumulator);\n }\n else {\n assert(overwrite.source.fromServer, 'Unknown source.');\n // We filter the node if it's a tagged update or the node has been previously filtered and the\n // update is not at the root in which case it is ok (and necessary) to mark the node unfiltered\n // again\n filterServerNode =\n overwrite.source.tagged ||\n (oldViewCache.serverCache.isFiltered() && !pathIsEmpty(overwrite.path));\n newViewCache = viewProcessorApplyServerOverwrite(viewProcessor, oldViewCache, overwrite.path, overwrite.snap, writesCache, completeCache, filterServerNode, accumulator);\n }\n }\n else if (operation.type === OperationType.MERGE) {\n const merge = operation;\n if (merge.source.fromUser) {\n newViewCache = viewProcessorApplyUserMerge(viewProcessor, oldViewCache, merge.path, merge.children, writesCache, completeCache, accumulator);\n }\n else {\n assert(merge.source.fromServer, 'Unknown source.');\n // We filter the node if it's a tagged update or the node has been previously filtered\n filterServerNode =\n merge.source.tagged || oldViewCache.serverCache.isFiltered();\n newViewCache = viewProcessorApplyServerMerge(viewProcessor, oldViewCache, merge.path, merge.children, writesCache, completeCache, filterServerNode, accumulator);\n }\n }\n else if (operation.type === OperationType.ACK_USER_WRITE) {\n const ackUserWrite = operation;\n if (!ackUserWrite.revert) {\n newViewCache = viewProcessorAckUserWrite(viewProcessor, oldViewCache, ackUserWrite.path, ackUserWrite.affectedTree, writesCache, completeCache, accumulator);\n }\n else {\n newViewCache = viewProcessorRevertUserWrite(viewProcessor, oldViewCache, ackUserWrite.path, writesCache, completeCache, accumulator);\n }\n }\n else if (operation.type === OperationType.LISTEN_COMPLETE) {\n newViewCache = viewProcessorListenComplete(viewProcessor, oldViewCache, operation.path, writesCache, accumulator);\n }\n else {\n throw assertionError('Unknown operation type: ' + operation.type);\n }\n const changes = accumulator.getChanges();\n viewProcessorMaybeAddValueEvent(oldViewCache, newViewCache, changes);\n return { viewCache: newViewCache, changes };\n}\nfunction viewProcessorMaybeAddValueEvent(oldViewCache, newViewCache, accumulator) {\n const eventSnap = newViewCache.eventCache;\n if (eventSnap.isFullyInitialized()) {\n const isLeafOrEmpty = eventSnap.getNode().isLeafNode() || eventSnap.getNode().isEmpty();\n const oldCompleteSnap = viewCacheGetCompleteEventSnap(oldViewCache);\n if (accumulator.length > 0 ||\n !oldViewCache.eventCache.isFullyInitialized() ||\n (isLeafOrEmpty && !eventSnap.getNode().equals(oldCompleteSnap)) ||\n !eventSnap.getNode().getPriority().equals(oldCompleteSnap.getPriority())) {\n accumulator.push(changeValue(viewCacheGetCompleteEventSnap(newViewCache)));\n }\n }\n}\nfunction viewProcessorGenerateEventCacheAfterServerEvent(viewProcessor, viewCache, changePath, writesCache, source, accumulator) {\n const oldEventSnap = viewCache.eventCache;\n if (writeTreeRefShadowingWrite(writesCache, changePath) != null) {\n // we have a shadowing write, ignore changes\n return viewCache;\n }\n else {\n let newEventCache, serverNode;\n if (pathIsEmpty(changePath)) {\n // TODO: figure out how this plays with \"sliding ack windows\"\n assert(viewCache.serverCache.isFullyInitialized(), 'If change path is empty, we must have complete server data');\n if (viewCache.serverCache.isFiltered()) {\n // We need to special case this, because we need to only apply writes to complete children, or\n // we might end up raising events for incomplete children. If the server data is filtered deep\n // writes cannot be guaranteed to be complete\n const serverCache = viewCacheGetCompleteServerSnap(viewCache);\n const completeChildren = serverCache instanceof ChildrenNode\n ? serverCache\n : ChildrenNode.EMPTY_NODE;\n const completeEventChildren = writeTreeRefCalcCompleteEventChildren(writesCache, completeChildren);\n newEventCache = viewProcessor.filter.updateFullNode(viewCache.eventCache.getNode(), completeEventChildren, accumulator);\n }\n else {\n const completeNode = writeTreeRefCalcCompleteEventCache(writesCache, viewCacheGetCompleteServerSnap(viewCache));\n newEventCache = viewProcessor.filter.updateFullNode(viewCache.eventCache.getNode(), completeNode, accumulator);\n }\n }\n else {\n const childKey = pathGetFront(changePath);\n if (childKey === '.priority') {\n assert(pathGetLength(changePath) === 1, \"Can't have a priority with additional path components\");\n const oldEventNode = oldEventSnap.getNode();\n serverNode = viewCache.serverCache.getNode();\n // we might have overwrites for this priority\n const updatedPriority = writeTreeRefCalcEventCacheAfterServerOverwrite(writesCache, changePath, oldEventNode, serverNode);\n if (updatedPriority != null) {\n newEventCache = viewProcessor.filter.updatePriority(oldEventNode, updatedPriority);\n }\n else {\n // priority didn't change, keep old node\n newEventCache = oldEventSnap.getNode();\n }\n }\n else {\n const childChangePath = pathPopFront(changePath);\n // update child\n let newEventChild;\n if (oldEventSnap.isCompleteForChild(childKey)) {\n serverNode = viewCache.serverCache.getNode();\n const eventChildUpdate = writeTreeRefCalcEventCacheAfterServerOverwrite(writesCache, changePath, oldEventSnap.getNode(), serverNode);\n if (eventChildUpdate != null) {\n newEventChild = oldEventSnap\n .getNode()\n .getImmediateChild(childKey)\n .updateChild(childChangePath, eventChildUpdate);\n }\n else {\n // Nothing changed, just keep the old child\n newEventChild = oldEventSnap.getNode().getImmediateChild(childKey);\n }\n }\n else {\n newEventChild = writeTreeRefCalcCompleteChild(writesCache, childKey, viewCache.serverCache);\n }\n if (newEventChild != null) {\n newEventCache = viewProcessor.filter.updateChild(oldEventSnap.getNode(), childKey, newEventChild, childChangePath, source, accumulator);\n }\n else {\n // no complete child available or no change\n newEventCache = oldEventSnap.getNode();\n }\n }\n }\n return viewCacheUpdateEventSnap(viewCache, newEventCache, oldEventSnap.isFullyInitialized() || pathIsEmpty(changePath), viewProcessor.filter.filtersNodes());\n }\n}\nfunction viewProcessorApplyServerOverwrite(viewProcessor, oldViewCache, changePath, changedSnap, writesCache, completeCache, filterServerNode, accumulator) {\n const oldServerSnap = oldViewCache.serverCache;\n let newServerCache;\n const serverFilter = filterServerNode\n ? viewProcessor.filter\n : viewProcessor.filter.getIndexedFilter();\n if (pathIsEmpty(changePath)) {\n newServerCache = serverFilter.updateFullNode(oldServerSnap.getNode(), changedSnap, null);\n }\n else if (serverFilter.filtersNodes() && !oldServerSnap.isFiltered()) {\n // we want to filter the server node, but we didn't filter the server node yet, so simulate a full update\n const newServerNode = oldServerSnap\n .getNode()\n .updateChild(changePath, changedSnap);\n newServerCache = serverFilter.updateFullNode(oldServerSnap.getNode(), newServerNode, null);\n }\n else {\n const childKey = pathGetFront(changePath);\n if (!oldServerSnap.isCompleteForPath(changePath) &&\n pathGetLength(changePath) > 1) {\n // We don't update incomplete nodes with updates intended for other listeners\n return oldViewCache;\n }\n const childChangePath = pathPopFront(changePath);\n const childNode = oldServerSnap.getNode().getImmediateChild(childKey);\n const newChildNode = childNode.updateChild(childChangePath, changedSnap);\n if (childKey === '.priority') {\n newServerCache = serverFilter.updatePriority(oldServerSnap.getNode(), newChildNode);\n }\n else {\n newServerCache = serverFilter.updateChild(oldServerSnap.getNode(), childKey, newChildNode, childChangePath, NO_COMPLETE_CHILD_SOURCE, null);\n }\n }\n const newViewCache = viewCacheUpdateServerSnap(oldViewCache, newServerCache, oldServerSnap.isFullyInitialized() || pathIsEmpty(changePath), serverFilter.filtersNodes());\n const source = new WriteTreeCompleteChildSource(writesCache, newViewCache, completeCache);\n return viewProcessorGenerateEventCacheAfterServerEvent(viewProcessor, newViewCache, changePath, writesCache, source, accumulator);\n}\nfunction viewProcessorApplyUserOverwrite(viewProcessor, oldViewCache, changePath, changedSnap, writesCache, completeCache, accumulator) {\n const oldEventSnap = oldViewCache.eventCache;\n let newViewCache, newEventCache;\n const source = new WriteTreeCompleteChildSource(writesCache, oldViewCache, completeCache);\n if (pathIsEmpty(changePath)) {\n newEventCache = viewProcessor.filter.updateFullNode(oldViewCache.eventCache.getNode(), changedSnap, accumulator);\n newViewCache = viewCacheUpdateEventSnap(oldViewCache, newEventCache, true, viewProcessor.filter.filtersNodes());\n }\n else {\n const childKey = pathGetFront(changePath);\n if (childKey === '.priority') {\n newEventCache = viewProcessor.filter.updatePriority(oldViewCache.eventCache.getNode(), changedSnap);\n newViewCache = viewCacheUpdateEventSnap(oldViewCache, newEventCache, oldEventSnap.isFullyInitialized(), oldEventSnap.isFiltered());\n }\n else {\n const childChangePath = pathPopFront(changePath);\n const oldChild = oldEventSnap.getNode().getImmediateChild(childKey);\n let newChild;\n if (pathIsEmpty(childChangePath)) {\n // Child overwrite, we can replace the child\n newChild = changedSnap;\n }\n else {\n const childNode = source.getCompleteChild(childKey);\n if (childNode != null) {\n if (pathGetBack(childChangePath) === '.priority' &&\n childNode.getChild(pathParent(childChangePath)).isEmpty()) {\n // This is a priority update on an empty node. If this node exists on the server, the\n // server will send down the priority in the update, so ignore for now\n newChild = childNode;\n }\n else {\n newChild = childNode.updateChild(childChangePath, changedSnap);\n }\n }\n else {\n // There is no complete child node available\n newChild = ChildrenNode.EMPTY_NODE;\n }\n }\n if (!oldChild.equals(newChild)) {\n const newEventSnap = viewProcessor.filter.updateChild(oldEventSnap.getNode(), childKey, newChild, childChangePath, source, accumulator);\n newViewCache = viewCacheUpdateEventSnap(oldViewCache, newEventSnap, oldEventSnap.isFullyInitialized(), viewProcessor.filter.filtersNodes());\n }\n else {\n newViewCache = oldViewCache;\n }\n }\n }\n return newViewCache;\n}\nfunction viewProcessorCacheHasChild(viewCache, childKey) {\n return viewCache.eventCache.isCompleteForChild(childKey);\n}\nfunction viewProcessorApplyUserMerge(viewProcessor, viewCache, path, changedChildren, writesCache, serverCache, accumulator) {\n // HACK: In the case of a limit query, there may be some changes that bump things out of the\n // window leaving room for new items. It's important we process these changes first, so we\n // iterate the changes twice, first processing any that affect items currently in view.\n // TODO: I consider an item \"in view\" if cacheHasChild is true, which checks both the server\n // and event snap. I'm not sure if this will result in edge cases when a child is in one but\n // not the other.\n let curViewCache = viewCache;\n changedChildren.foreach((relativePath, childNode) => {\n const writePath = pathChild(path, relativePath);\n if (viewProcessorCacheHasChild(viewCache, pathGetFront(writePath))) {\n curViewCache = viewProcessorApplyUserOverwrite(viewProcessor, curViewCache, writePath, childNode, writesCache, serverCache, accumulator);\n }\n });\n changedChildren.foreach((relativePath, childNode) => {\n const writePath = pathChild(path, relativePath);\n if (!viewProcessorCacheHasChild(viewCache, pathGetFront(writePath))) {\n curViewCache = viewProcessorApplyUserOverwrite(viewProcessor, curViewCache, writePath, childNode, writesCache, serverCache, accumulator);\n }\n });\n return curViewCache;\n}\nfunction viewProcessorApplyMerge(viewProcessor, node, merge) {\n merge.foreach((relativePath, childNode) => {\n node = node.updateChild(relativePath, childNode);\n });\n return node;\n}\nfunction viewProcessorApplyServerMerge(viewProcessor, viewCache, path, changedChildren, writesCache, serverCache, filterServerNode, accumulator) {\n // If we don't have a cache yet, this merge was intended for a previously listen in the same location. Ignore it and\n // wait for the complete data update coming soon.\n if (viewCache.serverCache.getNode().isEmpty() &&\n !viewCache.serverCache.isFullyInitialized()) {\n return viewCache;\n }\n // HACK: In the case of a limit query, there may be some changes that bump things out of the\n // window leaving room for new items. It's important we process these changes first, so we\n // iterate the changes twice, first processing any that affect items currently in view.\n // TODO: I consider an item \"in view\" if cacheHasChild is true, which checks both the server\n // and event snap. I'm not sure if this will result in edge cases when a child is in one but\n // not the other.\n let curViewCache = viewCache;\n let viewMergeTree;\n if (pathIsEmpty(path)) {\n viewMergeTree = changedChildren;\n }\n else {\n viewMergeTree = new ImmutableTree(null).setTree(path, changedChildren);\n }\n const serverNode = viewCache.serverCache.getNode();\n viewMergeTree.children.inorderTraversal((childKey, childTree) => {\n if (serverNode.hasChild(childKey)) {\n const serverChild = viewCache.serverCache\n .getNode()\n .getImmediateChild(childKey);\n const newChild = viewProcessorApplyMerge(viewProcessor, serverChild, childTree);\n curViewCache = viewProcessorApplyServerOverwrite(viewProcessor, curViewCache, new Path(childKey), newChild, writesCache, serverCache, filterServerNode, accumulator);\n }\n });\n viewMergeTree.children.inorderTraversal((childKey, childMergeTree) => {\n const isUnknownDeepMerge = !viewCache.serverCache.isCompleteForChild(childKey) &&\n childMergeTree.value === null;\n if (!serverNode.hasChild(childKey) && !isUnknownDeepMerge) {\n const serverChild = viewCache.serverCache\n .getNode()\n .getImmediateChild(childKey);\n const newChild = viewProcessorApplyMerge(viewProcessor, serverChild, childMergeTree);\n curViewCache = viewProcessorApplyServerOverwrite(viewProcessor, curViewCache, new Path(childKey), newChild, writesCache, serverCache, filterServerNode, accumulator);\n }\n });\n return curViewCache;\n}\nfunction viewProcessorAckUserWrite(viewProcessor, viewCache, ackPath, affectedTree, writesCache, completeCache, accumulator) {\n if (writeTreeRefShadowingWrite(writesCache, ackPath) != null) {\n return viewCache;\n }\n // Only filter server node if it is currently filtered\n const filterServerNode = viewCache.serverCache.isFiltered();\n // Essentially we'll just get our existing server cache for the affected paths and re-apply it as a server update\n // now that it won't be shadowed.\n const serverCache = viewCache.serverCache;\n if (affectedTree.value != null) {\n // This is an overwrite.\n if ((pathIsEmpty(ackPath) && serverCache.isFullyInitialized()) ||\n serverCache.isCompleteForPath(ackPath)) {\n return viewProcessorApplyServerOverwrite(viewProcessor, viewCache, ackPath, serverCache.getNode().getChild(ackPath), writesCache, completeCache, filterServerNode, accumulator);\n }\n else if (pathIsEmpty(ackPath)) {\n // This is a goofy edge case where we are acking data at this location but don't have full data. We\n // should just re-apply whatever we have in our cache as a merge.\n let changedChildren = new ImmutableTree(null);\n serverCache.getNode().forEachChild(KEY_INDEX, (name, node) => {\n changedChildren = changedChildren.set(new Path(name), node);\n });\n return viewProcessorApplyServerMerge(viewProcessor, viewCache, ackPath, changedChildren, writesCache, completeCache, filterServerNode, accumulator);\n }\n else {\n return viewCache;\n }\n }\n else {\n // This is a merge.\n let changedChildren = new ImmutableTree(null);\n affectedTree.foreach((mergePath, value) => {\n const serverCachePath = pathChild(ackPath, mergePath);\n if (serverCache.isCompleteForPath(serverCachePath)) {\n changedChildren = changedChildren.set(mergePath, serverCache.getNode().getChild(serverCachePath));\n }\n });\n return viewProcessorApplyServerMerge(viewProcessor, viewCache, ackPath, changedChildren, writesCache, completeCache, filterServerNode, accumulator);\n }\n}\nfunction viewProcessorListenComplete(viewProcessor, viewCache, path, writesCache, accumulator) {\n const oldServerNode = viewCache.serverCache;\n const newViewCache = viewCacheUpdateServerSnap(viewCache, oldServerNode.getNode(), oldServerNode.isFullyInitialized() || pathIsEmpty(path), oldServerNode.isFiltered());\n return viewProcessorGenerateEventCacheAfterServerEvent(viewProcessor, newViewCache, path, writesCache, NO_COMPLETE_CHILD_SOURCE, accumulator);\n}\nfunction viewProcessorRevertUserWrite(viewProcessor, viewCache, path, writesCache, completeServerCache, accumulator) {\n let complete;\n if (writeTreeRefShadowingWrite(writesCache, path) != null) {\n return viewCache;\n }\n else {\n const source = new WriteTreeCompleteChildSource(writesCache, viewCache, completeServerCache);\n const oldEventCache = viewCache.eventCache.getNode();\n let newEventCache;\n if (pathIsEmpty(path) || pathGetFront(path) === '.priority') {\n let newNode;\n if (viewCache.serverCache.isFullyInitialized()) {\n newNode = writeTreeRefCalcCompleteEventCache(writesCache, viewCacheGetCompleteServerSnap(viewCache));\n }\n else {\n const serverChildren = viewCache.serverCache.getNode();\n assert(serverChildren instanceof ChildrenNode, 'serverChildren would be complete if leaf node');\n newNode = writeTreeRefCalcCompleteEventChildren(writesCache, serverChildren);\n }\n newNode = newNode;\n newEventCache = viewProcessor.filter.updateFullNode(oldEventCache, newNode, accumulator);\n }\n else {\n const childKey = pathGetFront(path);\n let newChild = writeTreeRefCalcCompleteChild(writesCache, childKey, viewCache.serverCache);\n if (newChild == null &&\n viewCache.serverCache.isCompleteForChild(childKey)) {\n newChild = oldEventCache.getImmediateChild(childKey);\n }\n if (newChild != null) {\n newEventCache = viewProcessor.filter.updateChild(oldEventCache, childKey, newChild, pathPopFront(path), source, accumulator);\n }\n else if (viewCache.eventCache.getNode().hasChild(childKey)) {\n // No complete child available, delete the existing one, if any\n newEventCache = viewProcessor.filter.updateChild(oldEventCache, childKey, ChildrenNode.EMPTY_NODE, pathPopFront(path), source, accumulator);\n }\n else {\n newEventCache = oldEventCache;\n }\n if (newEventCache.isEmpty() &&\n viewCache.serverCache.isFullyInitialized()) {\n // We might have reverted all child writes. Maybe the old event was a leaf node\n complete = writeTreeRefCalcCompleteEventCache(writesCache, viewCacheGetCompleteServerSnap(viewCache));\n if (complete.isLeafNode()) {\n newEventCache = viewProcessor.filter.updateFullNode(newEventCache, complete, accumulator);\n }\n }\n }\n complete =\n viewCache.serverCache.isFullyInitialized() ||\n writeTreeRefShadowingWrite(writesCache, newEmptyPath()) != null;\n return viewCacheUpdateEventSnap(viewCache, newEventCache, complete, viewProcessor.filter.filtersNodes());\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A view represents a specific location and query that has 1 or more event registrations.\n *\n * It does several things:\n * - Maintains the list of event registrations for this location/query.\n * - Maintains a cache of the data visible for this location/query.\n * - Applies new operations (via applyOperation), updates the cache, and based on the event\n * registrations returns the set of events to be raised.\n */\nclass View {\n constructor(query_, initialViewCache) {\n this.query_ = query_;\n this.eventRegistrations_ = [];\n const params = this.query_._queryParams;\n const indexFilter = new IndexedFilter(params.getIndex());\n const filter = queryParamsGetNodeFilter(params);\n this.processor_ = newViewProcessor(filter);\n const initialServerCache = initialViewCache.serverCache;\n const initialEventCache = initialViewCache.eventCache;\n // Don't filter server node with other filter than index, wait for tagged listen\n const serverSnap = indexFilter.updateFullNode(ChildrenNode.EMPTY_NODE, initialServerCache.getNode(), null);\n const eventSnap = filter.updateFullNode(ChildrenNode.EMPTY_NODE, initialEventCache.getNode(), null);\n const newServerCache = new CacheNode(serverSnap, initialServerCache.isFullyInitialized(), indexFilter.filtersNodes());\n const newEventCache = new CacheNode(eventSnap, initialEventCache.isFullyInitialized(), filter.filtersNodes());\n this.viewCache_ = newViewCache(newEventCache, newServerCache);\n this.eventGenerator_ = new EventGenerator(this.query_);\n }\n get query() {\n return this.query_;\n }\n}\nfunction viewGetServerCache(view) {\n return view.viewCache_.serverCache.getNode();\n}\nfunction viewGetCompleteNode(view) {\n return viewCacheGetCompleteEventSnap(view.viewCache_);\n}\nfunction viewGetCompleteServerCache(view, path) {\n const cache = viewCacheGetCompleteServerSnap(view.viewCache_);\n if (cache) {\n // If this isn't a \"loadsAllData\" view, then cache isn't actually a complete cache and\n // we need to see if it contains the child we're interested in.\n if (view.query._queryParams.loadsAllData() ||\n (!pathIsEmpty(path) &&\n !cache.getImmediateChild(pathGetFront(path)).isEmpty())) {\n return cache.getChild(path);\n }\n }\n return null;\n}\nfunction viewIsEmpty(view) {\n return view.eventRegistrations_.length === 0;\n}\nfunction viewAddEventRegistration(view, eventRegistration) {\n view.eventRegistrations_.push(eventRegistration);\n}\n/**\n * @param eventRegistration - If null, remove all callbacks.\n * @param cancelError - If a cancelError is provided, appropriate cancel events will be returned.\n * @returns Cancel events, if cancelError was provided.\n */\nfunction viewRemoveEventRegistration(view, eventRegistration, cancelError) {\n const cancelEvents = [];\n if (cancelError) {\n assert(eventRegistration == null, 'A cancel should cancel all event registrations.');\n const path = view.query._path;\n view.eventRegistrations_.forEach(registration => {\n const maybeEvent = registration.createCancelEvent(cancelError, path);\n if (maybeEvent) {\n cancelEvents.push(maybeEvent);\n }\n });\n }\n if (eventRegistration) {\n let remaining = [];\n for (let i = 0; i < view.eventRegistrations_.length; ++i) {\n const existing = view.eventRegistrations_[i];\n if (!existing.matches(eventRegistration)) {\n remaining.push(existing);\n }\n else if (eventRegistration.hasAnyCallback()) {\n // We're removing just this one\n remaining = remaining.concat(view.eventRegistrations_.slice(i + 1));\n break;\n }\n }\n view.eventRegistrations_ = remaining;\n }\n else {\n view.eventRegistrations_ = [];\n }\n return cancelEvents;\n}\n/**\n * Applies the given Operation, updates our cache, and returns the appropriate events.\n */\nfunction viewApplyOperation(view, operation, writesCache, completeServerCache) {\n if (operation.type === OperationType.MERGE &&\n operation.source.queryId !== null) {\n assert(viewCacheGetCompleteServerSnap(view.viewCache_), 'We should always have a full cache before handling merges');\n assert(viewCacheGetCompleteEventSnap(view.viewCache_), 'Missing event cache, even though we have a server cache');\n }\n const oldViewCache = view.viewCache_;\n const result = viewProcessorApplyOperation(view.processor_, oldViewCache, operation, writesCache, completeServerCache);\n viewProcessorAssertIndexed(view.processor_, result.viewCache);\n assert(result.viewCache.serverCache.isFullyInitialized() ||\n !oldViewCache.serverCache.isFullyInitialized(), 'Once a server snap is complete, it should never go back');\n view.viewCache_ = result.viewCache;\n return viewGenerateEventsForChanges_(view, result.changes, result.viewCache.eventCache.getNode(), null);\n}\nfunction viewGetInitialEvents(view, registration) {\n const eventSnap = view.viewCache_.eventCache;\n const initialChanges = [];\n if (!eventSnap.getNode().isLeafNode()) {\n const eventNode = eventSnap.getNode();\n eventNode.forEachChild(PRIORITY_INDEX, (key, childNode) => {\n initialChanges.push(changeChildAdded(key, childNode));\n });\n }\n if (eventSnap.isFullyInitialized()) {\n initialChanges.push(changeValue(eventSnap.getNode()));\n }\n return viewGenerateEventsForChanges_(view, initialChanges, eventSnap.getNode(), registration);\n}\nfunction viewGenerateEventsForChanges_(view, changes, eventCache, eventRegistration) {\n const registrations = eventRegistration\n ? [eventRegistration]\n : view.eventRegistrations_;\n return eventGeneratorGenerateEventsForChanges(view.eventGenerator_, changes, eventCache, registrations);\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nlet referenceConstructor$1;\n/**\n * SyncPoint represents a single location in a SyncTree with 1 or more event registrations, meaning we need to\n * maintain 1 or more Views at this location to cache server data and raise appropriate events for server changes\n * and user writes (set, transaction, update).\n *\n * It's responsible for:\n * - Maintaining the set of 1 or more views necessary at this location (a SyncPoint with 0 views should be removed).\n * - Proxying user / server operations to the views as appropriate (i.e. applyServerOverwrite,\n * applyUserOverwrite, etc.)\n */\nclass SyncPoint {\n constructor() {\n /**\n * The Views being tracked at this location in the tree, stored as a map where the key is a\n * queryId and the value is the View for that query.\n *\n * NOTE: This list will be quite small (usually 1, but perhaps 2 or 3; any more is an odd use case).\n */\n this.views = new Map();\n }\n}\nfunction syncPointSetReferenceConstructor(val) {\n assert(!referenceConstructor$1, '__referenceConstructor has already been defined');\n referenceConstructor$1 = val;\n}\nfunction syncPointGetReferenceConstructor() {\n assert(referenceConstructor$1, 'Reference.ts has not been loaded');\n return referenceConstructor$1;\n}\nfunction syncPointIsEmpty(syncPoint) {\n return syncPoint.views.size === 0;\n}\nfunction syncPointApplyOperation(syncPoint, operation, writesCache, optCompleteServerCache) {\n const queryId = operation.source.queryId;\n if (queryId !== null) {\n const view = syncPoint.views.get(queryId);\n assert(view != null, 'SyncTree gave us an op for an invalid query.');\n return viewApplyOperation(view, operation, writesCache, optCompleteServerCache);\n }\n else {\n let events = [];\n for (const view of syncPoint.views.values()) {\n events = events.concat(viewApplyOperation(view, operation, writesCache, optCompleteServerCache));\n }\n return events;\n }\n}\n/**\n * Get a view for the specified query.\n *\n * @param query - The query to return a view for\n * @param writesCache\n * @param serverCache\n * @param serverCacheComplete\n * @returns Events to raise.\n */\nfunction syncPointGetView(syncPoint, query, writesCache, serverCache, serverCacheComplete) {\n const queryId = query._queryIdentifier;\n const view = syncPoint.views.get(queryId);\n if (!view) {\n // TODO: make writesCache take flag for complete server node\n let eventCache = writeTreeRefCalcCompleteEventCache(writesCache, serverCacheComplete ? serverCache : null);\n let eventCacheComplete = false;\n if (eventCache) {\n eventCacheComplete = true;\n }\n else if (serverCache instanceof ChildrenNode) {\n eventCache = writeTreeRefCalcCompleteEventChildren(writesCache, serverCache);\n eventCacheComplete = false;\n }\n else {\n eventCache = ChildrenNode.EMPTY_NODE;\n eventCacheComplete = false;\n }\n const viewCache = newViewCache(new CacheNode(eventCache, eventCacheComplete, false), new CacheNode(serverCache, serverCacheComplete, false));\n return new View(query, viewCache);\n }\n return view;\n}\n/**\n * Add an event callback for the specified query.\n *\n * @param query\n * @param eventRegistration\n * @param writesCache\n * @param serverCache - Complete server cache, if we have it.\n * @param serverCacheComplete\n * @returns Events to raise.\n */\nfunction syncPointAddEventRegistration(syncPoint, query, eventRegistration, writesCache, serverCache, serverCacheComplete) {\n const view = syncPointGetView(syncPoint, query, writesCache, serverCache, serverCacheComplete);\n if (!syncPoint.views.has(query._queryIdentifier)) {\n syncPoint.views.set(query._queryIdentifier, view);\n }\n // This is guaranteed to exist now, we just created anything that was missing\n viewAddEventRegistration(view, eventRegistration);\n return viewGetInitialEvents(view, eventRegistration);\n}\n/**\n * Remove event callback(s). Return cancelEvents if a cancelError is specified.\n *\n * If query is the default query, we'll check all views for the specified eventRegistration.\n * If eventRegistration is null, we'll remove all callbacks for the specified view(s).\n *\n * @param eventRegistration - If null, remove all callbacks.\n * @param cancelError - If a cancelError is provided, appropriate cancel events will be returned.\n * @returns removed queries and any cancel events\n */\nfunction syncPointRemoveEventRegistration(syncPoint, query, eventRegistration, cancelError) {\n const queryId = query._queryIdentifier;\n const removed = [];\n let cancelEvents = [];\n const hadCompleteView = syncPointHasCompleteView(syncPoint);\n if (queryId === 'default') {\n // When you do ref.off(...), we search all views for the registration to remove.\n for (const [viewQueryId, view] of syncPoint.views.entries()) {\n cancelEvents = cancelEvents.concat(viewRemoveEventRegistration(view, eventRegistration, cancelError));\n if (viewIsEmpty(view)) {\n syncPoint.views.delete(viewQueryId);\n // We'll deal with complete views later.\n if (!view.query._queryParams.loadsAllData()) {\n removed.push(view.query);\n }\n }\n }\n }\n else {\n // remove the callback from the specific view.\n const view = syncPoint.views.get(queryId);\n if (view) {\n cancelEvents = cancelEvents.concat(viewRemoveEventRegistration(view, eventRegistration, cancelError));\n if (viewIsEmpty(view)) {\n syncPoint.views.delete(queryId);\n // We'll deal with complete views later.\n if (!view.query._queryParams.loadsAllData()) {\n removed.push(view.query);\n }\n }\n }\n }\n if (hadCompleteView && !syncPointHasCompleteView(syncPoint)) {\n // We removed our last complete view.\n removed.push(new (syncPointGetReferenceConstructor())(query._repo, query._path));\n }\n return { removed, events: cancelEvents };\n}\nfunction syncPointGetQueryViews(syncPoint) {\n const result = [];\n for (const view of syncPoint.views.values()) {\n if (!view.query._queryParams.loadsAllData()) {\n result.push(view);\n }\n }\n return result;\n}\n/**\n * @param path - The path to the desired complete snapshot\n * @returns A complete cache, if it exists\n */\nfunction syncPointGetCompleteServerCache(syncPoint, path) {\n let serverCache = null;\n for (const view of syncPoint.views.values()) {\n serverCache = serverCache || viewGetCompleteServerCache(view, path);\n }\n return serverCache;\n}\nfunction syncPointViewForQuery(syncPoint, query) {\n const params = query._queryParams;\n if (params.loadsAllData()) {\n return syncPointGetCompleteView(syncPoint);\n }\n else {\n const queryId = query._queryIdentifier;\n return syncPoint.views.get(queryId);\n }\n}\nfunction syncPointViewExistsForQuery(syncPoint, query) {\n return syncPointViewForQuery(syncPoint, query) != null;\n}\nfunction syncPointHasCompleteView(syncPoint) {\n return syncPointGetCompleteView(syncPoint) != null;\n}\nfunction syncPointGetCompleteView(syncPoint) {\n for (const view of syncPoint.views.values()) {\n if (view.query._queryParams.loadsAllData()) {\n return view;\n }\n }\n return null;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nlet referenceConstructor;\nfunction syncTreeSetReferenceConstructor(val) {\n assert(!referenceConstructor, '__referenceConstructor has already been defined');\n referenceConstructor = val;\n}\nfunction syncTreeGetReferenceConstructor() {\n assert(referenceConstructor, 'Reference.ts has not been loaded');\n return referenceConstructor;\n}\n/**\n * Static tracker for next query tag.\n */\nlet syncTreeNextQueryTag_ = 1;\n/**\n * SyncTree is the central class for managing event callback registration, data caching, views\n * (query processing), and event generation. There are typically two SyncTree instances for\n * each Repo, one for the normal Firebase data, and one for the .info data.\n *\n * It has a number of responsibilities, including:\n * - Tracking all user event callbacks (registered via addEventRegistration() and removeEventRegistration()).\n * - Applying and caching data changes for user set(), transaction(), and update() calls\n * (applyUserOverwrite(), applyUserMerge()).\n * - Applying and caching data changes for server data changes (applyServerOverwrite(),\n * applyServerMerge()).\n * - Generating user-facing events for server and user changes (all of the apply* methods\n * return the set of events that need to be raised as a result).\n * - Maintaining the appropriate set of server listens to ensure we are always subscribed\n * to the correct set of paths and queries to satisfy the current set of user event\n * callbacks (listens are started/stopped using the provided listenProvider).\n *\n * NOTE: Although SyncTree tracks event callbacks and calculates events to raise, the actual\n * events are returned to the caller rather than raised synchronously.\n *\n */\nclass SyncTree {\n /**\n * @param listenProvider_ - Used by SyncTree to start / stop listening\n * to server data.\n */\n constructor(listenProvider_) {\n this.listenProvider_ = listenProvider_;\n /**\n * Tree of SyncPoints. There's a SyncPoint at any location that has 1 or more views.\n */\n this.syncPointTree_ = new ImmutableTree(null);\n /**\n * A tree of all pending user writes (user-initiated set()'s, transaction()'s, update()'s, etc.).\n */\n this.pendingWriteTree_ = newWriteTree();\n this.tagToQueryMap = new Map();\n this.queryToTagMap = new Map();\n }\n}\n/**\n * Apply the data changes for a user-generated set() or transaction() call.\n *\n * @returns Events to raise.\n */\nfunction syncTreeApplyUserOverwrite(syncTree, path, newData, writeId, visible) {\n // Record pending write.\n writeTreeAddOverwrite(syncTree.pendingWriteTree_, path, newData, writeId, visible);\n if (!visible) {\n return [];\n }\n else {\n return syncTreeApplyOperationToSyncPoints_(syncTree, new Overwrite(newOperationSourceUser(), path, newData));\n }\n}\n/**\n * Apply the data from a user-generated update() call\n *\n * @returns Events to raise.\n */\nfunction syncTreeApplyUserMerge(syncTree, path, changedChildren, writeId) {\n // Record pending merge.\n writeTreeAddMerge(syncTree.pendingWriteTree_, path, changedChildren, writeId);\n const changeTree = ImmutableTree.fromObject(changedChildren);\n return syncTreeApplyOperationToSyncPoints_(syncTree, new Merge(newOperationSourceUser(), path, changeTree));\n}\n/**\n * Acknowledge a pending user write that was previously registered with applyUserOverwrite() or applyUserMerge().\n *\n * @param revert - True if the given write failed and needs to be reverted\n * @returns Events to raise.\n */\nfunction syncTreeAckUserWrite(syncTree, writeId, revert = false) {\n const write = writeTreeGetWrite(syncTree.pendingWriteTree_, writeId);\n const needToReevaluate = writeTreeRemoveWrite(syncTree.pendingWriteTree_, writeId);\n if (!needToReevaluate) {\n return [];\n }\n else {\n let affectedTree = new ImmutableTree(null);\n if (write.snap != null) {\n // overwrite\n affectedTree = affectedTree.set(newEmptyPath(), true);\n }\n else {\n each(write.children, (pathString) => {\n affectedTree = affectedTree.set(new Path(pathString), true);\n });\n }\n return syncTreeApplyOperationToSyncPoints_(syncTree, new AckUserWrite(write.path, affectedTree, revert));\n }\n}\n/**\n * Apply new server data for the specified path..\n *\n * @returns Events to raise.\n */\nfunction syncTreeApplyServerOverwrite(syncTree, path, newData) {\n return syncTreeApplyOperationToSyncPoints_(syncTree, new Overwrite(newOperationSourceServer(), path, newData));\n}\n/**\n * Apply new server data to be merged in at the specified path.\n *\n * @returns Events to raise.\n */\nfunction syncTreeApplyServerMerge(syncTree, path, changedChildren) {\n const changeTree = ImmutableTree.fromObject(changedChildren);\n return syncTreeApplyOperationToSyncPoints_(syncTree, new Merge(newOperationSourceServer(), path, changeTree));\n}\n/**\n * Apply a listen complete for a query\n *\n * @returns Events to raise.\n */\nfunction syncTreeApplyListenComplete(syncTree, path) {\n return syncTreeApplyOperationToSyncPoints_(syncTree, new ListenComplete(newOperationSourceServer(), path));\n}\n/**\n * Apply a listen complete for a tagged query\n *\n * @returns Events to raise.\n */\nfunction syncTreeApplyTaggedListenComplete(syncTree, path, tag) {\n const queryKey = syncTreeQueryKeyForTag_(syncTree, tag);\n if (queryKey) {\n const r = syncTreeParseQueryKey_(queryKey);\n const queryPath = r.path, queryId = r.queryId;\n const relativePath = newRelativePath(queryPath, path);\n const op = new ListenComplete(newOperationSourceServerTaggedQuery(queryId), relativePath);\n return syncTreeApplyTaggedOperation_(syncTree, queryPath, op);\n }\n else {\n // We've already removed the query. No big deal, ignore the update\n return [];\n }\n}\n/**\n * Remove event callback(s).\n *\n * If query is the default query, we'll check all queries for the specified eventRegistration.\n * If eventRegistration is null, we'll remove all callbacks for the specified query/queries.\n *\n * @param eventRegistration - If null, all callbacks are removed.\n * @param cancelError - If a cancelError is provided, appropriate cancel events will be returned.\n * @param skipListenerDedup - When performing a `get()`, we don't add any new listeners, so no\n * deduping needs to take place. This flag allows toggling of that behavior\n * @returns Cancel events, if cancelError was provided.\n */\nfunction syncTreeRemoveEventRegistration(syncTree, query, eventRegistration, cancelError, skipListenerDedup = false) {\n // Find the syncPoint first. Then deal with whether or not it has matching listeners\n const path = query._path;\n const maybeSyncPoint = syncTree.syncPointTree_.get(path);\n let cancelEvents = [];\n // A removal on a default query affects all queries at that location. A removal on an indexed query, even one without\n // other query constraints, does *not* affect all queries at that location. So this check must be for 'default', and\n // not loadsAllData().\n if (maybeSyncPoint &&\n (query._queryIdentifier === 'default' ||\n syncPointViewExistsForQuery(maybeSyncPoint, query))) {\n const removedAndEvents = syncPointRemoveEventRegistration(maybeSyncPoint, query, eventRegistration, cancelError);\n if (syncPointIsEmpty(maybeSyncPoint)) {\n syncTree.syncPointTree_ = syncTree.syncPointTree_.remove(path);\n }\n const removed = removedAndEvents.removed;\n cancelEvents = removedAndEvents.events;\n if (!skipListenerDedup) {\n /**\n * We may have just removed one of many listeners and can short-circuit this whole process\n * We may also not have removed a default listener, in which case all of the descendant listeners should already be\n * properly set up.\n */\n // Since indexed queries can shadow if they don't have other query constraints, check for loadsAllData(), instead of\n // queryId === 'default'\n const removingDefault = -1 !==\n removed.findIndex(query => {\n return query._queryParams.loadsAllData();\n });\n const covered = syncTree.syncPointTree_.findOnPath(path, (relativePath, parentSyncPoint) => syncPointHasCompleteView(parentSyncPoint));\n if (removingDefault && !covered) {\n const subtree = syncTree.syncPointTree_.subtree(path);\n // There are potentially child listeners. Determine what if any listens we need to send before executing the\n // removal\n if (!subtree.isEmpty()) {\n // We need to fold over our subtree and collect the listeners to send\n const newViews = syncTreeCollectDistinctViewsForSubTree_(subtree);\n // Ok, we've collected all the listens we need. Set them up.\n for (let i = 0; i < newViews.length; ++i) {\n const view = newViews[i], newQuery = view.query;\n const listener = syncTreeCreateListenerForView_(syncTree, view);\n syncTree.listenProvider_.startListening(syncTreeQueryForListening_(newQuery), syncTreeTagForQuery(syncTree, newQuery), listener.hashFn, listener.onComplete);\n }\n }\n // Otherwise there's nothing below us, so nothing we need to start listening on\n }\n // If we removed anything and we're not covered by a higher up listen, we need to stop listening on this query\n // The above block has us covered in terms of making sure we're set up on listens lower in the tree.\n // Also, note that if we have a cancelError, it's already been removed at the provider level.\n if (!covered && removed.length > 0 && !cancelError) {\n // If we removed a default, then we weren't listening on any of the other queries here. Just cancel the one\n // default. Otherwise, we need to iterate through and cancel each individual query\n if (removingDefault) {\n // We don't tag default listeners\n const defaultTag = null;\n syncTree.listenProvider_.stopListening(syncTreeQueryForListening_(query), defaultTag);\n }\n else {\n removed.forEach((queryToRemove) => {\n const tagToRemove = syncTree.queryToTagMap.get(syncTreeMakeQueryKey_(queryToRemove));\n syncTree.listenProvider_.stopListening(syncTreeQueryForListening_(queryToRemove), tagToRemove);\n });\n }\n }\n }\n // Now, clear all of the tags we're tracking for the removed listens\n syncTreeRemoveTags_(syncTree, removed);\n }\n return cancelEvents;\n}\n/**\n * Apply new server data for the specified tagged query.\n *\n * @returns Events to raise.\n */\nfunction syncTreeApplyTaggedQueryOverwrite(syncTree, path, snap, tag) {\n const queryKey = syncTreeQueryKeyForTag_(syncTree, tag);\n if (queryKey != null) {\n const r = syncTreeParseQueryKey_(queryKey);\n const queryPath = r.path, queryId = r.queryId;\n const relativePath = newRelativePath(queryPath, path);\n const op = new Overwrite(newOperationSourceServerTaggedQuery(queryId), relativePath, snap);\n return syncTreeApplyTaggedOperation_(syncTree, queryPath, op);\n }\n else {\n // Query must have been removed already\n return [];\n }\n}\n/**\n * Apply server data to be merged in for the specified tagged query.\n *\n * @returns Events to raise.\n */\nfunction syncTreeApplyTaggedQueryMerge(syncTree, path, changedChildren, tag) {\n const queryKey = syncTreeQueryKeyForTag_(syncTree, tag);\n if (queryKey) {\n const r = syncTreeParseQueryKey_(queryKey);\n const queryPath = r.path, queryId = r.queryId;\n const relativePath = newRelativePath(queryPath, path);\n const changeTree = ImmutableTree.fromObject(changedChildren);\n const op = new Merge(newOperationSourceServerTaggedQuery(queryId), relativePath, changeTree);\n return syncTreeApplyTaggedOperation_(syncTree, queryPath, op);\n }\n else {\n // We've already removed the query. No big deal, ignore the update\n return [];\n }\n}\n/**\n * Add an event callback for the specified query.\n *\n * @returns Events to raise.\n */\nfunction syncTreeAddEventRegistration(syncTree, query, eventRegistration, skipSetupListener = false) {\n const path = query._path;\n let serverCache = null;\n let foundAncestorDefaultView = false;\n // Any covering writes will necessarily be at the root, so really all we need to find is the server cache.\n // Consider optimizing this once there's a better understanding of what actual behavior will be.\n syncTree.syncPointTree_.foreachOnPath(path, (pathToSyncPoint, sp) => {\n const relativePath = newRelativePath(pathToSyncPoint, path);\n serverCache =\n serverCache || syncPointGetCompleteServerCache(sp, relativePath);\n foundAncestorDefaultView =\n foundAncestorDefaultView || syncPointHasCompleteView(sp);\n });\n let syncPoint = syncTree.syncPointTree_.get(path);\n if (!syncPoint) {\n syncPoint = new SyncPoint();\n syncTree.syncPointTree_ = syncTree.syncPointTree_.set(path, syncPoint);\n }\n else {\n foundAncestorDefaultView =\n foundAncestorDefaultView || syncPointHasCompleteView(syncPoint);\n serverCache =\n serverCache || syncPointGetCompleteServerCache(syncPoint, newEmptyPath());\n }\n let serverCacheComplete;\n if (serverCache != null) {\n serverCacheComplete = true;\n }\n else {\n serverCacheComplete = false;\n serverCache = ChildrenNode.EMPTY_NODE;\n const subtree = syncTree.syncPointTree_.subtree(path);\n subtree.foreachChild((childName, childSyncPoint) => {\n const completeCache = syncPointGetCompleteServerCache(childSyncPoint, newEmptyPath());\n if (completeCache) {\n serverCache = serverCache.updateImmediateChild(childName, completeCache);\n }\n });\n }\n const viewAlreadyExists = syncPointViewExistsForQuery(syncPoint, query);\n if (!viewAlreadyExists && !query._queryParams.loadsAllData()) {\n // We need to track a tag for this query\n const queryKey = syncTreeMakeQueryKey_(query);\n assert(!syncTree.queryToTagMap.has(queryKey), 'View does not exist, but we have a tag');\n const tag = syncTreeGetNextQueryTag_();\n syncTree.queryToTagMap.set(queryKey, tag);\n syncTree.tagToQueryMap.set(tag, queryKey);\n }\n const writesCache = writeTreeChildWrites(syncTree.pendingWriteTree_, path);\n let events = syncPointAddEventRegistration(syncPoint, query, eventRegistration, writesCache, serverCache, serverCacheComplete);\n if (!viewAlreadyExists && !foundAncestorDefaultView && !skipSetupListener) {\n const view = syncPointViewForQuery(syncPoint, query);\n events = events.concat(syncTreeSetupListener_(syncTree, query, view));\n }\n return events;\n}\n/**\n * Returns a complete cache, if we have one, of the data at a particular path. If the location does not have a\n * listener above it, we will get a false \"null\". This shouldn't be a problem because transactions will always\n * have a listener above, and atomic operations would correctly show a jitter of ->\n * as the write is applied locally and then acknowledged at the server.\n *\n * Note: this method will *include* hidden writes from transaction with applyLocally set to false.\n *\n * @param path - The path to the data we want\n * @param writeIdsToExclude - A specific set to be excluded\n */\nfunction syncTreeCalcCompleteEventCache(syncTree, path, writeIdsToExclude) {\n const includeHiddenSets = true;\n const writeTree = syncTree.pendingWriteTree_;\n const serverCache = syncTree.syncPointTree_.findOnPath(path, (pathSoFar, syncPoint) => {\n const relativePath = newRelativePath(pathSoFar, path);\n const serverCache = syncPointGetCompleteServerCache(syncPoint, relativePath);\n if (serverCache) {\n return serverCache;\n }\n });\n return writeTreeCalcCompleteEventCache(writeTree, path, serverCache, writeIdsToExclude, includeHiddenSets);\n}\nfunction syncTreeGetServerValue(syncTree, query) {\n const path = query._path;\n let serverCache = null;\n // Any covering writes will necessarily be at the root, so really all we need to find is the server cache.\n // Consider optimizing this once there's a better understanding of what actual behavior will be.\n syncTree.syncPointTree_.foreachOnPath(path, (pathToSyncPoint, sp) => {\n const relativePath = newRelativePath(pathToSyncPoint, path);\n serverCache =\n serverCache || syncPointGetCompleteServerCache(sp, relativePath);\n });\n let syncPoint = syncTree.syncPointTree_.get(path);\n if (!syncPoint) {\n syncPoint = new SyncPoint();\n syncTree.syncPointTree_ = syncTree.syncPointTree_.set(path, syncPoint);\n }\n else {\n serverCache =\n serverCache || syncPointGetCompleteServerCache(syncPoint, newEmptyPath());\n }\n const serverCacheComplete = serverCache != null;\n const serverCacheNode = serverCacheComplete\n ? new CacheNode(serverCache, true, false)\n : null;\n const writesCache = writeTreeChildWrites(syncTree.pendingWriteTree_, query._path);\n const view = syncPointGetView(syncPoint, query, writesCache, serverCacheComplete ? serverCacheNode.getNode() : ChildrenNode.EMPTY_NODE, serverCacheComplete);\n return viewGetCompleteNode(view);\n}\n/**\n * A helper method that visits all descendant and ancestor SyncPoints, applying the operation.\n *\n * NOTES:\n * - Descendant SyncPoints will be visited first (since we raise events depth-first).\n *\n * - We call applyOperation() on each SyncPoint passing three things:\n * 1. A version of the Operation that has been made relative to the SyncPoint location.\n * 2. A WriteTreeRef of any writes we have cached at the SyncPoint location.\n * 3. A snapshot Node with cached server data, if we have it.\n *\n * - We concatenate all of the events returned by each SyncPoint and return the result.\n */\nfunction syncTreeApplyOperationToSyncPoints_(syncTree, operation) {\n return syncTreeApplyOperationHelper_(operation, syncTree.syncPointTree_, \n /*serverCache=*/ null, writeTreeChildWrites(syncTree.pendingWriteTree_, newEmptyPath()));\n}\n/**\n * Recursive helper for applyOperationToSyncPoints_\n */\nfunction syncTreeApplyOperationHelper_(operation, syncPointTree, serverCache, writesCache) {\n if (pathIsEmpty(operation.path)) {\n return syncTreeApplyOperationDescendantsHelper_(operation, syncPointTree, serverCache, writesCache);\n }\n else {\n const syncPoint = syncPointTree.get(newEmptyPath());\n // If we don't have cached server data, see if we can get it from this SyncPoint.\n if (serverCache == null && syncPoint != null) {\n serverCache = syncPointGetCompleteServerCache(syncPoint, newEmptyPath());\n }\n let events = [];\n const childName = pathGetFront(operation.path);\n const childOperation = operation.operationForChild(childName);\n const childTree = syncPointTree.children.get(childName);\n if (childTree && childOperation) {\n const childServerCache = serverCache\n ? serverCache.getImmediateChild(childName)\n : null;\n const childWritesCache = writeTreeRefChild(writesCache, childName);\n events = events.concat(syncTreeApplyOperationHelper_(childOperation, childTree, childServerCache, childWritesCache));\n }\n if (syncPoint) {\n events = events.concat(syncPointApplyOperation(syncPoint, operation, writesCache, serverCache));\n }\n return events;\n }\n}\n/**\n * Recursive helper for applyOperationToSyncPoints_\n */\nfunction syncTreeApplyOperationDescendantsHelper_(operation, syncPointTree, serverCache, writesCache) {\n const syncPoint = syncPointTree.get(newEmptyPath());\n // If we don't have cached server data, see if we can get it from this SyncPoint.\n if (serverCache == null && syncPoint != null) {\n serverCache = syncPointGetCompleteServerCache(syncPoint, newEmptyPath());\n }\n let events = [];\n syncPointTree.children.inorderTraversal((childName, childTree) => {\n const childServerCache = serverCache\n ? serverCache.getImmediateChild(childName)\n : null;\n const childWritesCache = writeTreeRefChild(writesCache, childName);\n const childOperation = operation.operationForChild(childName);\n if (childOperation) {\n events = events.concat(syncTreeApplyOperationDescendantsHelper_(childOperation, childTree, childServerCache, childWritesCache));\n }\n });\n if (syncPoint) {\n events = events.concat(syncPointApplyOperation(syncPoint, operation, writesCache, serverCache));\n }\n return events;\n}\nfunction syncTreeCreateListenerForView_(syncTree, view) {\n const query = view.query;\n const tag = syncTreeTagForQuery(syncTree, query);\n return {\n hashFn: () => {\n const cache = viewGetServerCache(view) || ChildrenNode.EMPTY_NODE;\n return cache.hash();\n },\n onComplete: (status) => {\n if (status === 'ok') {\n if (tag) {\n return syncTreeApplyTaggedListenComplete(syncTree, query._path, tag);\n }\n else {\n return syncTreeApplyListenComplete(syncTree, query._path);\n }\n }\n else {\n // If a listen failed, kill all of the listeners here, not just the one that triggered the error.\n // Note that this may need to be scoped to just this listener if we change permissions on filtered children\n const error = errorForServerCode(status, query);\n return syncTreeRemoveEventRegistration(syncTree, query, \n /*eventRegistration*/ null, error);\n }\n }\n };\n}\n/**\n * Return the tag associated with the given query.\n */\nfunction syncTreeTagForQuery(syncTree, query) {\n const queryKey = syncTreeMakeQueryKey_(query);\n return syncTree.queryToTagMap.get(queryKey);\n}\n/**\n * Given a query, computes a \"queryKey\" suitable for use in our queryToTagMap_.\n */\nfunction syncTreeMakeQueryKey_(query) {\n return query._path.toString() + '$' + query._queryIdentifier;\n}\n/**\n * Return the query associated with the given tag, if we have one\n */\nfunction syncTreeQueryKeyForTag_(syncTree, tag) {\n return syncTree.tagToQueryMap.get(tag);\n}\n/**\n * Given a queryKey (created by makeQueryKey), parse it back into a path and queryId.\n */\nfunction syncTreeParseQueryKey_(queryKey) {\n const splitIndex = queryKey.indexOf('$');\n assert(splitIndex !== -1 && splitIndex < queryKey.length - 1, 'Bad queryKey.');\n return {\n queryId: queryKey.substr(splitIndex + 1),\n path: new Path(queryKey.substr(0, splitIndex))\n };\n}\n/**\n * A helper method to apply tagged operations\n */\nfunction syncTreeApplyTaggedOperation_(syncTree, queryPath, operation) {\n const syncPoint = syncTree.syncPointTree_.get(queryPath);\n assert(syncPoint, \"Missing sync point for query tag that we're tracking\");\n const writesCache = writeTreeChildWrites(syncTree.pendingWriteTree_, queryPath);\n return syncPointApplyOperation(syncPoint, operation, writesCache, null);\n}\n/**\n * This collapses multiple unfiltered views into a single view, since we only need a single\n * listener for them.\n */\nfunction syncTreeCollectDistinctViewsForSubTree_(subtree) {\n return subtree.fold((relativePath, maybeChildSyncPoint, childMap) => {\n if (maybeChildSyncPoint && syncPointHasCompleteView(maybeChildSyncPoint)) {\n const completeView = syncPointGetCompleteView(maybeChildSyncPoint);\n return [completeView];\n }\n else {\n // No complete view here, flatten any deeper listens into an array\n let views = [];\n if (maybeChildSyncPoint) {\n views = syncPointGetQueryViews(maybeChildSyncPoint);\n }\n each(childMap, (_key, childViews) => {\n views = views.concat(childViews);\n });\n return views;\n }\n });\n}\n/**\n * Normalizes a query to a query we send the server for listening\n *\n * @returns The normalized query\n */\nfunction syncTreeQueryForListening_(query) {\n if (query._queryParams.loadsAllData() && !query._queryParams.isDefault()) {\n // We treat queries that load all data as default queries\n // Cast is necessary because ref() technically returns Firebase which is actually fb.api.Firebase which inherits\n // from Query\n return new (syncTreeGetReferenceConstructor())(query._repo, query._path);\n }\n else {\n return query;\n }\n}\nfunction syncTreeRemoveTags_(syncTree, queries) {\n for (let j = 0; j < queries.length; ++j) {\n const removedQuery = queries[j];\n if (!removedQuery._queryParams.loadsAllData()) {\n // We should have a tag for this\n const removedQueryKey = syncTreeMakeQueryKey_(removedQuery);\n const removedQueryTag = syncTree.queryToTagMap.get(removedQueryKey);\n syncTree.queryToTagMap.delete(removedQueryKey);\n syncTree.tagToQueryMap.delete(removedQueryTag);\n }\n }\n}\n/**\n * Static accessor for query tags.\n */\nfunction syncTreeGetNextQueryTag_() {\n return syncTreeNextQueryTag_++;\n}\n/**\n * For a given new listen, manage the de-duplication of outstanding subscriptions.\n *\n * @returns This method can return events to support synchronous data sources\n */\nfunction syncTreeSetupListener_(syncTree, query, view) {\n const path = query._path;\n const tag = syncTreeTagForQuery(syncTree, query);\n const listener = syncTreeCreateListenerForView_(syncTree, view);\n const events = syncTree.listenProvider_.startListening(syncTreeQueryForListening_(query), tag, listener.hashFn, listener.onComplete);\n const subtree = syncTree.syncPointTree_.subtree(path);\n // The root of this subtree has our query. We're here because we definitely need to send a listen for that, but we\n // may need to shadow other listens as well.\n if (tag) {\n assert(!syncPointHasCompleteView(subtree.value), \"If we're adding a query, it shouldn't be shadowed\");\n }\n else {\n // Shadow everything at or below this location, this is a default listener.\n const queriesToStop = subtree.fold((relativePath, maybeChildSyncPoint, childMap) => {\n if (!pathIsEmpty(relativePath) &&\n maybeChildSyncPoint &&\n syncPointHasCompleteView(maybeChildSyncPoint)) {\n return [syncPointGetCompleteView(maybeChildSyncPoint).query];\n }\n else {\n // No default listener here, flatten any deeper queries into an array\n let queries = [];\n if (maybeChildSyncPoint) {\n queries = queries.concat(syncPointGetQueryViews(maybeChildSyncPoint).map(view => view.query));\n }\n each(childMap, (_key, childQueries) => {\n queries = queries.concat(childQueries);\n });\n return queries;\n }\n });\n for (let i = 0; i < queriesToStop.length; ++i) {\n const queryToStop = queriesToStop[i];\n syncTree.listenProvider_.stopListening(syncTreeQueryForListening_(queryToStop), syncTreeTagForQuery(syncTree, queryToStop));\n }\n }\n return events;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass ExistingValueProvider {\n constructor(node_) {\n this.node_ = node_;\n }\n getImmediateChild(childName) {\n const child = this.node_.getImmediateChild(childName);\n return new ExistingValueProvider(child);\n }\n node() {\n return this.node_;\n }\n}\nclass DeferredValueProvider {\n constructor(syncTree, path) {\n this.syncTree_ = syncTree;\n this.path_ = path;\n }\n getImmediateChild(childName) {\n const childPath = pathChild(this.path_, childName);\n return new DeferredValueProvider(this.syncTree_, childPath);\n }\n node() {\n return syncTreeCalcCompleteEventCache(this.syncTree_, this.path_);\n }\n}\n/**\n * Generate placeholders for deferred values.\n */\nconst generateWithValues = function (values) {\n values = values || {};\n values['timestamp'] = values['timestamp'] || new Date().getTime();\n return values;\n};\n/**\n * Value to use when firing local events. When writing server values, fire\n * local events with an approximate value, otherwise return value as-is.\n */\nconst resolveDeferredLeafValue = function (value, existingVal, serverValues) {\n if (!value || typeof value !== 'object') {\n return value;\n }\n assert('.sv' in value, 'Unexpected leaf node or priority contents');\n if (typeof value['.sv'] === 'string') {\n return resolveScalarDeferredValue(value['.sv'], existingVal, serverValues);\n }\n else if (typeof value['.sv'] === 'object') {\n return resolveComplexDeferredValue(value['.sv'], existingVal);\n }\n else {\n assert(false, 'Unexpected server value: ' + JSON.stringify(value, null, 2));\n }\n};\nconst resolveScalarDeferredValue = function (op, existing, serverValues) {\n switch (op) {\n case 'timestamp':\n return serverValues['timestamp'];\n default:\n assert(false, 'Unexpected server value: ' + op);\n }\n};\nconst resolveComplexDeferredValue = function (op, existing, unused) {\n if (!op.hasOwnProperty('increment')) {\n assert(false, 'Unexpected server value: ' + JSON.stringify(op, null, 2));\n }\n const delta = op['increment'];\n if (typeof delta !== 'number') {\n assert(false, 'Unexpected increment value: ' + delta);\n }\n const existingNode = existing.node();\n assert(existingNode !== null && typeof existingNode !== 'undefined', 'Expected ChildrenNode.EMPTY_NODE for nulls');\n // Incrementing a non-number sets the value to the incremented amount\n if (!existingNode.isLeafNode()) {\n return delta;\n }\n const leaf = existingNode;\n const existingVal = leaf.getValue();\n if (typeof existingVal !== 'number') {\n return delta;\n }\n // No need to do over/underflow arithmetic here because JS only handles floats under the covers\n return existingVal + delta;\n};\n/**\n * Recursively replace all deferred values and priorities in the tree with the\n * specified generated replacement values.\n * @param path - path to which write is relative\n * @param node - new data written at path\n * @param syncTree - current data\n */\nconst resolveDeferredValueTree = function (path, node, syncTree, serverValues) {\n return resolveDeferredValue(node, new DeferredValueProvider(syncTree, path), serverValues);\n};\n/**\n * Recursively replace all deferred values and priorities in the node with the\n * specified generated replacement values. If there are no server values in the node,\n * it'll be returned as-is.\n */\nconst resolveDeferredValueSnapshot = function (node, existing, serverValues) {\n return resolveDeferredValue(node, new ExistingValueProvider(existing), serverValues);\n};\nfunction resolveDeferredValue(node, existingVal, serverValues) {\n const rawPri = node.getPriority().val();\n const priority = resolveDeferredLeafValue(rawPri, existingVal.getImmediateChild('.priority'), serverValues);\n let newNode;\n if (node.isLeafNode()) {\n const leafNode = node;\n const value = resolveDeferredLeafValue(leafNode.getValue(), existingVal, serverValues);\n if (value !== leafNode.getValue() ||\n priority !== leafNode.getPriority().val()) {\n return new LeafNode(value, nodeFromJSON(priority));\n }\n else {\n return node;\n }\n }\n else {\n const childrenNode = node;\n newNode = childrenNode;\n if (priority !== childrenNode.getPriority().val()) {\n newNode = newNode.updatePriority(new LeafNode(priority));\n }\n childrenNode.forEachChild(PRIORITY_INDEX, (childName, childNode) => {\n const newChildNode = resolveDeferredValue(childNode, existingVal.getImmediateChild(childName), serverValues);\n if (newChildNode !== childNode) {\n newNode = newNode.updateImmediateChild(childName, newChildNode);\n }\n });\n return newNode;\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A light-weight tree, traversable by path. Nodes can have both values and children.\n * Nodes are not enumerated (by forEachChild) unless they have a value or non-empty\n * children.\n */\nclass Tree {\n /**\n * @param name - Optional name of the node.\n * @param parent - Optional parent node.\n * @param node - Optional node to wrap.\n */\n constructor(name = '', parent = null, node = { children: {}, childCount: 0 }) {\n this.name = name;\n this.parent = parent;\n this.node = node;\n }\n}\n/**\n * Returns a sub-Tree for the given path.\n *\n * @param pathObj - Path to look up.\n * @returns Tree for path.\n */\nfunction treeSubTree(tree, pathObj) {\n // TODO: Require pathObj to be Path?\n let path = pathObj instanceof Path ? pathObj : new Path(pathObj);\n let child = tree, next = pathGetFront(path);\n while (next !== null) {\n const childNode = safeGet(child.node.children, next) || {\n children: {},\n childCount: 0\n };\n child = new Tree(next, child, childNode);\n path = pathPopFront(path);\n next = pathGetFront(path);\n }\n return child;\n}\n/**\n * Returns the data associated with this tree node.\n *\n * @returns The data or null if no data exists.\n */\nfunction treeGetValue(tree) {\n return tree.node.value;\n}\n/**\n * Sets data to this tree node.\n *\n * @param value - Value to set.\n */\nfunction treeSetValue(tree, value) {\n tree.node.value = value;\n treeUpdateParents(tree);\n}\n/**\n * @returns Whether the tree has any children.\n */\nfunction treeHasChildren(tree) {\n return tree.node.childCount > 0;\n}\n/**\n * @returns Whether the tree is empty (no value or children).\n */\nfunction treeIsEmpty(tree) {\n return treeGetValue(tree) === undefined && !treeHasChildren(tree);\n}\n/**\n * Calls action for each child of this tree node.\n *\n * @param action - Action to be called for each child.\n */\nfunction treeForEachChild(tree, action) {\n each(tree.node.children, (child, childTree) => {\n action(new Tree(child, tree, childTree));\n });\n}\n/**\n * Does a depth-first traversal of this node's descendants, calling action for each one.\n *\n * @param action - Action to be called for each child.\n * @param includeSelf - Whether to call action on this node as well. Defaults to\n * false.\n * @param childrenFirst - Whether to call action on children before calling it on\n * parent.\n */\nfunction treeForEachDescendant(tree, action, includeSelf, childrenFirst) {\n if (includeSelf && !childrenFirst) {\n action(tree);\n }\n treeForEachChild(tree, child => {\n treeForEachDescendant(child, action, true, childrenFirst);\n });\n if (includeSelf && childrenFirst) {\n action(tree);\n }\n}\n/**\n * Calls action on each ancestor node.\n *\n * @param action - Action to be called on each parent; return\n * true to abort.\n * @param includeSelf - Whether to call action on this node as well.\n * @returns true if the action callback returned true.\n */\nfunction treeForEachAncestor(tree, action, includeSelf) {\n let node = includeSelf ? tree : tree.parent;\n while (node !== null) {\n if (action(node)) {\n return true;\n }\n node = node.parent;\n }\n return false;\n}\n/**\n * @returns The path of this tree node, as a Path.\n */\nfunction treeGetPath(tree) {\n return new Path(tree.parent === null\n ? tree.name\n : treeGetPath(tree.parent) + '/' + tree.name);\n}\n/**\n * Adds or removes this child from its parent based on whether it's empty or not.\n */\nfunction treeUpdateParents(tree) {\n if (tree.parent !== null) {\n treeUpdateChild(tree.parent, tree.name, tree);\n }\n}\n/**\n * Adds or removes the passed child to this tree node, depending on whether it's empty.\n *\n * @param childName - The name of the child to update.\n * @param child - The child to update.\n */\nfunction treeUpdateChild(tree, childName, child) {\n const childEmpty = treeIsEmpty(child);\n const childExists = contains(tree.node.children, childName);\n if (childEmpty && childExists) {\n delete tree.node.children[childName];\n tree.node.childCount--;\n treeUpdateParents(tree);\n }\n else if (!childEmpty && !childExists) {\n tree.node.children[childName] = child.node;\n tree.node.childCount++;\n treeUpdateParents(tree);\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * True for invalid Firebase keys\n */\nconst INVALID_KEY_REGEX_ = /[\\[\\].#$\\/\\u0000-\\u001F\\u007F]/;\n/**\n * True for invalid Firebase paths.\n * Allows '/' in paths.\n */\nconst INVALID_PATH_REGEX_ = /[\\[\\].#$\\u0000-\\u001F\\u007F]/;\n/**\n * Maximum number of characters to allow in leaf value\n */\nconst MAX_LEAF_SIZE_ = 10 * 1024 * 1024;\nconst isValidKey = function (key) {\n return (typeof key === 'string' && key.length !== 0 && !INVALID_KEY_REGEX_.test(key));\n};\nconst isValidPathString = function (pathString) {\n return (typeof pathString === 'string' &&\n pathString.length !== 0 &&\n !INVALID_PATH_REGEX_.test(pathString));\n};\nconst isValidRootPathString = function (pathString) {\n if (pathString) {\n // Allow '/.info/' at the beginning.\n pathString = pathString.replace(/^\\/*\\.info(\\/|$)/, '/');\n }\n return isValidPathString(pathString);\n};\nconst isValidPriority = function (priority) {\n return (priority === null ||\n typeof priority === 'string' ||\n (typeof priority === 'number' && !isInvalidJSONNumber(priority)) ||\n (priority &&\n typeof priority === 'object' &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n contains(priority, '.sv')));\n};\n/**\n * Pre-validate a datum passed as an argument to Firebase function.\n */\nconst validateFirebaseDataArg = function (fnName, value, path, optional) {\n if (optional && value === undefined) {\n return;\n }\n validateFirebaseData(errorPrefix(fnName, 'value'), value, path);\n};\n/**\n * Validate a data object client-side before sending to server.\n */\nconst validateFirebaseData = function (errorPrefix, data, path_) {\n const path = path_ instanceof Path ? new ValidationPath(path_, errorPrefix) : path_;\n if (data === undefined) {\n throw new Error(errorPrefix + 'contains undefined ' + validationPathToErrorString(path));\n }\n if (typeof data === 'function') {\n throw new Error(errorPrefix +\n 'contains a function ' +\n validationPathToErrorString(path) +\n ' with contents = ' +\n data.toString());\n }\n if (isInvalidJSONNumber(data)) {\n throw new Error(errorPrefix +\n 'contains ' +\n data.toString() +\n ' ' +\n validationPathToErrorString(path));\n }\n // Check max leaf size, but try to avoid the utf8 conversion if we can.\n if (typeof data === 'string' &&\n data.length > MAX_LEAF_SIZE_ / 3 &&\n stringLength(data) > MAX_LEAF_SIZE_) {\n throw new Error(errorPrefix +\n 'contains a string greater than ' +\n MAX_LEAF_SIZE_ +\n ' utf8 bytes ' +\n validationPathToErrorString(path) +\n \" ('\" +\n data.substring(0, 50) +\n \"...')\");\n }\n // TODO = Perf = Consider combining the recursive validation of keys into NodeFromJSON\n // to save extra walking of large objects.\n if (data && typeof data === 'object') {\n let hasDotValue = false;\n let hasActualChild = false;\n each(data, (key, value) => {\n if (key === '.value') {\n hasDotValue = true;\n }\n else if (key !== '.priority' && key !== '.sv') {\n hasActualChild = true;\n if (!isValidKey(key)) {\n throw new Error(errorPrefix +\n ' contains an invalid key (' +\n key +\n ') ' +\n validationPathToErrorString(path) +\n '. Keys must be non-empty strings ' +\n 'and can\\'t contain \".\", \"#\", \"$\", \"/\", \"[\", or \"]\"');\n }\n }\n validationPathPush(path, key);\n validateFirebaseData(errorPrefix, value, path);\n validationPathPop(path);\n });\n if (hasDotValue && hasActualChild) {\n throw new Error(errorPrefix +\n ' contains \".value\" child ' +\n validationPathToErrorString(path) +\n ' in addition to actual children.');\n }\n }\n};\n/**\n * Pre-validate paths passed in the firebase function.\n */\nconst validateFirebaseMergePaths = function (errorPrefix, mergePaths) {\n let i, curPath;\n for (i = 0; i < mergePaths.length; i++) {\n curPath = mergePaths[i];\n const keys = pathSlice(curPath);\n for (let j = 0; j < keys.length; j++) {\n if (keys[j] === '.priority' && j === keys.length - 1) ;\n else if (!isValidKey(keys[j])) {\n throw new Error(errorPrefix +\n 'contains an invalid key (' +\n keys[j] +\n ') in path ' +\n curPath.toString() +\n '. Keys must be non-empty strings ' +\n 'and can\\'t contain \".\", \"#\", \"$\", \"/\", \"[\", or \"]\"');\n }\n }\n }\n // Check that update keys are not descendants of each other.\n // We rely on the property that sorting guarantees that ancestors come\n // right before descendants.\n mergePaths.sort(pathCompare);\n let prevPath = null;\n for (i = 0; i < mergePaths.length; i++) {\n curPath = mergePaths[i];\n if (prevPath !== null && pathContains(prevPath, curPath)) {\n throw new Error(errorPrefix +\n 'contains a path ' +\n prevPath.toString() +\n ' that is ancestor of another path ' +\n curPath.toString());\n }\n prevPath = curPath;\n }\n};\n/**\n * pre-validate an object passed as an argument to firebase function (\n * must be an object - e.g. for firebase.update()).\n */\nconst validateFirebaseMergeDataArg = function (fnName, data, path, optional) {\n if (optional && data === undefined) {\n return;\n }\n const errorPrefix$1 = errorPrefix(fnName, 'values');\n if (!(data && typeof data === 'object') || Array.isArray(data)) {\n throw new Error(errorPrefix$1 + ' must be an object containing the children to replace.');\n }\n const mergePaths = [];\n each(data, (key, value) => {\n const curPath = new Path(key);\n validateFirebaseData(errorPrefix$1, value, pathChild(path, curPath));\n if (pathGetBack(curPath) === '.priority') {\n if (!isValidPriority(value)) {\n throw new Error(errorPrefix$1 +\n \"contains an invalid value for '\" +\n curPath.toString() +\n \"', which must be a valid \" +\n 'Firebase priority (a string, finite number, server value, or null).');\n }\n }\n mergePaths.push(curPath);\n });\n validateFirebaseMergePaths(errorPrefix$1, mergePaths);\n};\nconst validatePriority = function (fnName, priority, optional) {\n if (optional && priority === undefined) {\n return;\n }\n if (isInvalidJSONNumber(priority)) {\n throw new Error(errorPrefix(fnName, 'priority') +\n 'is ' +\n priority.toString() +\n ', but must be a valid Firebase priority (a string, finite number, ' +\n 'server value, or null).');\n }\n // Special case to allow importing data with a .sv.\n if (!isValidPriority(priority)) {\n throw new Error(errorPrefix(fnName, 'priority') +\n 'must be a valid Firebase priority ' +\n '(a string, finite number, server value, or null).');\n }\n};\nconst validateKey = function (fnName, argumentName, key, optional) {\n if (optional && key === undefined) {\n return;\n }\n if (!isValidKey(key)) {\n throw new Error(errorPrefix(fnName, argumentName) +\n 'was an invalid key = \"' +\n key +\n '\". Firebase keys must be non-empty strings and ' +\n 'can\\'t contain \".\", \"#\", \"$\", \"/\", \"[\", or \"]\").');\n }\n};\n/**\n * @internal\n */\nconst validatePathString = function (fnName, argumentName, pathString, optional) {\n if (optional && pathString === undefined) {\n return;\n }\n if (!isValidPathString(pathString)) {\n throw new Error(errorPrefix(fnName, argumentName) +\n 'was an invalid path = \"' +\n pathString +\n '\". Paths must be non-empty strings and ' +\n 'can\\'t contain \".\", \"#\", \"$\", \"[\", or \"]\"');\n }\n};\nconst validateRootPathString = function (fnName, argumentName, pathString, optional) {\n if (pathString) {\n // Allow '/.info/' at the beginning.\n pathString = pathString.replace(/^\\/*\\.info(\\/|$)/, '/');\n }\n validatePathString(fnName, argumentName, pathString, optional);\n};\n/**\n * @internal\n */\nconst validateWritablePath = function (fnName, path) {\n if (pathGetFront(path) === '.info') {\n throw new Error(fnName + \" failed = Can't modify data under /.info/\");\n }\n};\nconst validateUrl = function (fnName, parsedUrl) {\n // TODO = Validate server better.\n const pathString = parsedUrl.path.toString();\n if (!(typeof parsedUrl.repoInfo.host === 'string') ||\n parsedUrl.repoInfo.host.length === 0 ||\n (!isValidKey(parsedUrl.repoInfo.namespace) &&\n parsedUrl.repoInfo.host.split(':')[0] !== 'localhost') ||\n (pathString.length !== 0 && !isValidRootPathString(pathString))) {\n throw new Error(errorPrefix(fnName, 'url') +\n 'must be a valid firebase URL and ' +\n 'the path can\\'t contain \".\", \"#\", \"$\", \"[\", or \"]\".');\n }\n};\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * The event queue serves a few purposes:\n * 1. It ensures we maintain event order in the face of event callbacks doing operations that result in more\n * events being queued.\n * 2. raiseQueuedEvents() handles being called reentrantly nicely. That is, if in the course of raising events,\n * raiseQueuedEvents() is called again, the \"inner\" call will pick up raising events where the \"outer\" call\n * left off, ensuring that the events are still raised synchronously and in order.\n * 3. You can use raiseEventsAtPath and raiseEventsForChangedPath to ensure only relevant previously-queued\n * events are raised synchronously.\n *\n * NOTE: This can all go away if/when we move to async events.\n *\n */\nclass EventQueue {\n constructor() {\n this.eventLists_ = [];\n /**\n * Tracks recursion depth of raiseQueuedEvents_, for debugging purposes.\n */\n this.recursionDepth_ = 0;\n }\n}\n/**\n * @param eventDataList - The new events to queue.\n */\nfunction eventQueueQueueEvents(eventQueue, eventDataList) {\n // We group events by path, storing them in a single EventList, to make it easier to skip over them quickly.\n let currList = null;\n for (let i = 0; i < eventDataList.length; i++) {\n const data = eventDataList[i];\n const path = data.getPath();\n if (currList !== null && !pathEquals(path, currList.path)) {\n eventQueue.eventLists_.push(currList);\n currList = null;\n }\n if (currList === null) {\n currList = { events: [], path };\n }\n currList.events.push(data);\n }\n if (currList) {\n eventQueue.eventLists_.push(currList);\n }\n}\n/**\n * Queues the specified events and synchronously raises all events (including previously queued ones)\n * for the specified path.\n *\n * It is assumed that the new events are all for the specified path.\n *\n * @param path - The path to raise events for.\n * @param eventDataList - The new events to raise.\n */\nfunction eventQueueRaiseEventsAtPath(eventQueue, path, eventDataList) {\n eventQueueQueueEvents(eventQueue, eventDataList);\n eventQueueRaiseQueuedEventsMatchingPredicate(eventQueue, eventPath => pathEquals(eventPath, path));\n}\n/**\n * Queues the specified events and synchronously raises all events (including previously queued ones) for\n * locations related to the specified change path (i.e. all ancestors and descendants).\n *\n * It is assumed that the new events are all related (ancestor or descendant) to the specified path.\n *\n * @param changedPath - The path to raise events for.\n * @param eventDataList - The events to raise\n */\nfunction eventQueueRaiseEventsForChangedPath(eventQueue, changedPath, eventDataList) {\n eventQueueQueueEvents(eventQueue, eventDataList);\n eventQueueRaiseQueuedEventsMatchingPredicate(eventQueue, eventPath => pathContains(eventPath, changedPath) ||\n pathContains(changedPath, eventPath));\n}\nfunction eventQueueRaiseQueuedEventsMatchingPredicate(eventQueue, predicate) {\n eventQueue.recursionDepth_++;\n let sentAll = true;\n for (let i = 0; i < eventQueue.eventLists_.length; i++) {\n const eventList = eventQueue.eventLists_[i];\n if (eventList) {\n const eventPath = eventList.path;\n if (predicate(eventPath)) {\n eventListRaise(eventQueue.eventLists_[i]);\n eventQueue.eventLists_[i] = null;\n }\n else {\n sentAll = false;\n }\n }\n }\n if (sentAll) {\n eventQueue.eventLists_ = [];\n }\n eventQueue.recursionDepth_--;\n}\n/**\n * Iterates through the list and raises each event\n */\nfunction eventListRaise(eventList) {\n for (let i = 0; i < eventList.events.length; i++) {\n const eventData = eventList.events[i];\n if (eventData !== null) {\n eventList.events[i] = null;\n const eventFn = eventData.getEventRunner();\n if (logger) {\n log('event: ' + eventData.toString());\n }\n exceptionGuard(eventFn);\n }\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst INTERRUPT_REASON = 'repo_interrupt';\n/**\n * If a transaction does not succeed after 25 retries, we abort it. Among other\n * things this ensure that if there's ever a bug causing a mismatch between\n * client / server hashes for some data, we won't retry indefinitely.\n */\nconst MAX_TRANSACTION_RETRIES = 25;\n/**\n * A connection to a single data repository.\n */\nclass Repo {\n constructor(repoInfo_, forceRestClient_, authTokenProvider_, appCheckProvider_) {\n this.repoInfo_ = repoInfo_;\n this.forceRestClient_ = forceRestClient_;\n this.authTokenProvider_ = authTokenProvider_;\n this.appCheckProvider_ = appCheckProvider_;\n this.dataUpdateCount = 0;\n this.statsListener_ = null;\n this.eventQueue_ = new EventQueue();\n this.nextWriteId_ = 1;\n this.interceptServerDataCallback_ = null;\n /** A list of data pieces and paths to be set when this client disconnects. */\n this.onDisconnect_ = newSparseSnapshotTree();\n /** Stores queues of outstanding transactions for Firebase locations. */\n this.transactionQueueTree_ = new Tree();\n // TODO: This should be @private but it's used by test_access.js and internal.js\n this.persistentConnection_ = null;\n // This key is intentionally not updated if RepoInfo is later changed or replaced\n this.key = this.repoInfo_.toURLString();\n }\n /**\n * @returns The URL corresponding to the root of this Firebase.\n */\n toString() {\n return ((this.repoInfo_.secure ? 'https://' : 'http://') + this.repoInfo_.host);\n }\n}\nfunction repoStart(repo, appId, authOverride) {\n repo.stats_ = statsManagerGetCollection(repo.repoInfo_);\n if (repo.forceRestClient_ || beingCrawled()) {\n repo.server_ = new ReadonlyRestClient(repo.repoInfo_, (pathString, data, isMerge, tag) => {\n repoOnDataUpdate(repo, pathString, data, isMerge, tag);\n }, repo.authTokenProvider_, repo.appCheckProvider_);\n // Minor hack: Fire onConnect immediately, since there's no actual connection.\n setTimeout(() => repoOnConnectStatus(repo, /* connectStatus= */ true), 0);\n }\n else {\n // Validate authOverride\n if (typeof authOverride !== 'undefined' && authOverride !== null) {\n if (typeof authOverride !== 'object') {\n throw new Error('Only objects are supported for option databaseAuthVariableOverride');\n }\n try {\n stringify(authOverride);\n }\n catch (e) {\n throw new Error('Invalid authOverride provided: ' + e);\n }\n }\n repo.persistentConnection_ = new PersistentConnection(repo.repoInfo_, appId, (pathString, data, isMerge, tag) => {\n repoOnDataUpdate(repo, pathString, data, isMerge, tag);\n }, (connectStatus) => {\n repoOnConnectStatus(repo, connectStatus);\n }, (updates) => {\n repoOnServerInfoUpdate(repo, updates);\n }, repo.authTokenProvider_, repo.appCheckProvider_, authOverride);\n repo.server_ = repo.persistentConnection_;\n }\n repo.authTokenProvider_.addTokenChangeListener(token => {\n repo.server_.refreshAuthToken(token);\n });\n repo.appCheckProvider_.addTokenChangeListener(result => {\n repo.server_.refreshAppCheckToken(result.token);\n });\n // In the case of multiple Repos for the same repoInfo (i.e. there are multiple Firebase.Contexts being used),\n // we only want to create one StatsReporter. As such, we'll report stats over the first Repo created.\n repo.statsReporter_ = statsManagerGetOrCreateReporter(repo.repoInfo_, () => new StatsReporter(repo.stats_, repo.server_));\n // Used for .info.\n repo.infoData_ = new SnapshotHolder();\n repo.infoSyncTree_ = new SyncTree({\n startListening: (query, tag, currentHashFn, onComplete) => {\n let infoEvents = [];\n const node = repo.infoData_.getNode(query._path);\n // This is possibly a hack, but we have different semantics for .info endpoints. We don't raise null events\n // on initial data...\n if (!node.isEmpty()) {\n infoEvents = syncTreeApplyServerOverwrite(repo.infoSyncTree_, query._path, node);\n setTimeout(() => {\n onComplete('ok');\n }, 0);\n }\n return infoEvents;\n },\n stopListening: () => { }\n });\n repoUpdateInfo(repo, 'connected', false);\n repo.serverSyncTree_ = new SyncTree({\n startListening: (query, tag, currentHashFn, onComplete) => {\n repo.server_.listen(query, currentHashFn, tag, (status, data) => {\n const events = onComplete(status, data);\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, query._path, events);\n });\n // No synchronous events for network-backed sync trees\n return [];\n },\n stopListening: (query, tag) => {\n repo.server_.unlisten(query, tag);\n }\n });\n}\n/**\n * @returns The time in milliseconds, taking the server offset into account if we have one.\n */\nfunction repoServerTime(repo) {\n const offsetNode = repo.infoData_.getNode(new Path('.info/serverTimeOffset'));\n const offset = offsetNode.val() || 0;\n return new Date().getTime() + offset;\n}\n/**\n * Generate ServerValues using some variables from the repo object.\n */\nfunction repoGenerateServerValues(repo) {\n return generateWithValues({\n timestamp: repoServerTime(repo)\n });\n}\n/**\n * Called by realtime when we get new messages from the server.\n */\nfunction repoOnDataUpdate(repo, pathString, data, isMerge, tag) {\n // For testing.\n repo.dataUpdateCount++;\n const path = new Path(pathString);\n data = repo.interceptServerDataCallback_\n ? repo.interceptServerDataCallback_(pathString, data)\n : data;\n let events = [];\n if (tag) {\n if (isMerge) {\n const taggedChildren = map(data, (raw) => nodeFromJSON(raw));\n events = syncTreeApplyTaggedQueryMerge(repo.serverSyncTree_, path, taggedChildren, tag);\n }\n else {\n const taggedSnap = nodeFromJSON(data);\n events = syncTreeApplyTaggedQueryOverwrite(repo.serverSyncTree_, path, taggedSnap, tag);\n }\n }\n else if (isMerge) {\n const changedChildren = map(data, (raw) => nodeFromJSON(raw));\n events = syncTreeApplyServerMerge(repo.serverSyncTree_, path, changedChildren);\n }\n else {\n const snap = nodeFromJSON(data);\n events = syncTreeApplyServerOverwrite(repo.serverSyncTree_, path, snap);\n }\n let affectedPath = path;\n if (events.length > 0) {\n // Since we have a listener outstanding for each transaction, receiving any events\n // is a proxy for some change having occurred.\n affectedPath = repoRerunTransactions(repo, path);\n }\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, affectedPath, events);\n}\nfunction repoOnConnectStatus(repo, connectStatus) {\n repoUpdateInfo(repo, 'connected', connectStatus);\n if (connectStatus === false) {\n repoRunOnDisconnectEvents(repo);\n }\n}\nfunction repoOnServerInfoUpdate(repo, updates) {\n each(updates, (key, value) => {\n repoUpdateInfo(repo, key, value);\n });\n}\nfunction repoUpdateInfo(repo, pathString, value) {\n const path = new Path('/.info/' + pathString);\n const newNode = nodeFromJSON(value);\n repo.infoData_.updateSnapshot(path, newNode);\n const events = syncTreeApplyServerOverwrite(repo.infoSyncTree_, path, newNode);\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, path, events);\n}\nfunction repoGetNextWriteId(repo) {\n return repo.nextWriteId_++;\n}\n/**\n * The purpose of `getValue` is to return the latest known value\n * satisfying `query`.\n *\n * This method will first check for in-memory cached values\n * belonging to active listeners. If they are found, such values\n * are considered to be the most up-to-date.\n *\n * If the client is not connected, this method will wait until the\n * repo has established a connection and then request the value for `query`.\n * If the client is not able to retrieve the query result for another reason,\n * it reports an error.\n *\n * @param query - The query to surface a value for.\n */\nfunction repoGetValue(repo, query, eventRegistration) {\n // Only active queries are cached. There is no persisted cache.\n const cached = syncTreeGetServerValue(repo.serverSyncTree_, query);\n if (cached != null) {\n return Promise.resolve(cached);\n }\n return repo.server_.get(query).then(payload => {\n const node = nodeFromJSON(payload).withIndex(query._queryParams.getIndex());\n /**\n * Below we simulate the actions of an `onlyOnce` `onValue()` event where:\n * Add an event registration,\n * Update data at the path,\n * Raise any events,\n * Cleanup the SyncTree\n */\n syncTreeAddEventRegistration(repo.serverSyncTree_, query, eventRegistration, true);\n let events;\n if (query._queryParams.loadsAllData()) {\n events = syncTreeApplyServerOverwrite(repo.serverSyncTree_, query._path, node);\n }\n else {\n const tag = syncTreeTagForQuery(repo.serverSyncTree_, query);\n events = syncTreeApplyTaggedQueryOverwrite(repo.serverSyncTree_, query._path, node, tag);\n }\n /*\n * We need to raise events in the scenario where `get()` is called at a parent path, and\n * while the `get()` is pending, `onValue` is called at a child location. While get() is waiting\n * for the data, `onValue` will register a new event. Then, get() will come back, and update the syncTree\n * and its corresponding serverCache, including the child location where `onValue` is called. Then,\n * `onValue` will receive the event from the server, but look at the syncTree and see that the data received\n * from the server is already at the SyncPoint, and so the `onValue` callback will never get fired.\n * Calling `eventQueueRaiseEventsForChangedPath()` is the correct way to propagate the events and\n * ensure the corresponding child events will get fired.\n */\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, query._path, events);\n syncTreeRemoveEventRegistration(repo.serverSyncTree_, query, eventRegistration, null, true);\n return node;\n }, err => {\n repoLog(repo, 'get for query ' + stringify(query) + ' failed: ' + err);\n return Promise.reject(new Error(err));\n });\n}\nfunction repoSetWithPriority(repo, path, newVal, newPriority, onComplete) {\n repoLog(repo, 'set', {\n path: path.toString(),\n value: newVal,\n priority: newPriority\n });\n // TODO: Optimize this behavior to either (a) store flag to skip resolving where possible and / or\n // (b) store unresolved paths on JSON parse\n const serverValues = repoGenerateServerValues(repo);\n const newNodeUnresolved = nodeFromJSON(newVal, newPriority);\n const existing = syncTreeCalcCompleteEventCache(repo.serverSyncTree_, path);\n const newNode = resolveDeferredValueSnapshot(newNodeUnresolved, existing, serverValues);\n const writeId = repoGetNextWriteId(repo);\n const events = syncTreeApplyUserOverwrite(repo.serverSyncTree_, path, newNode, writeId, true);\n eventQueueQueueEvents(repo.eventQueue_, events);\n repo.server_.put(path.toString(), newNodeUnresolved.val(/*export=*/ true), (status, errorReason) => {\n const success = status === 'ok';\n if (!success) {\n warn('set at ' + path + ' failed: ' + status);\n }\n const clearEvents = syncTreeAckUserWrite(repo.serverSyncTree_, writeId, !success);\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, path, clearEvents);\n repoCallOnCompleteCallback(repo, onComplete, status, errorReason);\n });\n const affectedPath = repoAbortTransactions(repo, path);\n repoRerunTransactions(repo, affectedPath);\n // We queued the events above, so just flush the queue here\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, affectedPath, []);\n}\nfunction repoUpdate(repo, path, childrenToMerge, onComplete) {\n repoLog(repo, 'update', { path: path.toString(), value: childrenToMerge });\n // Start with our existing data and merge each child into it.\n let empty = true;\n const serverValues = repoGenerateServerValues(repo);\n const changedChildren = {};\n each(childrenToMerge, (changedKey, changedValue) => {\n empty = false;\n changedChildren[changedKey] = resolveDeferredValueTree(pathChild(path, changedKey), nodeFromJSON(changedValue), repo.serverSyncTree_, serverValues);\n });\n if (!empty) {\n const writeId = repoGetNextWriteId(repo);\n const events = syncTreeApplyUserMerge(repo.serverSyncTree_, path, changedChildren, writeId);\n eventQueueQueueEvents(repo.eventQueue_, events);\n repo.server_.merge(path.toString(), childrenToMerge, (status, errorReason) => {\n const success = status === 'ok';\n if (!success) {\n warn('update at ' + path + ' failed: ' + status);\n }\n const clearEvents = syncTreeAckUserWrite(repo.serverSyncTree_, writeId, !success);\n const affectedPath = clearEvents.length > 0 ? repoRerunTransactions(repo, path) : path;\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, affectedPath, clearEvents);\n repoCallOnCompleteCallback(repo, onComplete, status, errorReason);\n });\n each(childrenToMerge, (changedPath) => {\n const affectedPath = repoAbortTransactions(repo, pathChild(path, changedPath));\n repoRerunTransactions(repo, affectedPath);\n });\n // We queued the events above, so just flush the queue here\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, path, []);\n }\n else {\n log(\"update() called with empty data. Don't do anything.\");\n repoCallOnCompleteCallback(repo, onComplete, 'ok', undefined);\n }\n}\n/**\n * Applies all of the changes stored up in the onDisconnect_ tree.\n */\nfunction repoRunOnDisconnectEvents(repo) {\n repoLog(repo, 'onDisconnectEvents');\n const serverValues = repoGenerateServerValues(repo);\n const resolvedOnDisconnectTree = newSparseSnapshotTree();\n sparseSnapshotTreeForEachTree(repo.onDisconnect_, newEmptyPath(), (path, node) => {\n const resolved = resolveDeferredValueTree(path, node, repo.serverSyncTree_, serverValues);\n sparseSnapshotTreeRemember(resolvedOnDisconnectTree, path, resolved);\n });\n let events = [];\n sparseSnapshotTreeForEachTree(resolvedOnDisconnectTree, newEmptyPath(), (path, snap) => {\n events = events.concat(syncTreeApplyServerOverwrite(repo.serverSyncTree_, path, snap));\n const affectedPath = repoAbortTransactions(repo, path);\n repoRerunTransactions(repo, affectedPath);\n });\n repo.onDisconnect_ = newSparseSnapshotTree();\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, newEmptyPath(), events);\n}\nfunction repoOnDisconnectCancel(repo, path, onComplete) {\n repo.server_.onDisconnectCancel(path.toString(), (status, errorReason) => {\n if (status === 'ok') {\n sparseSnapshotTreeForget(repo.onDisconnect_, path);\n }\n repoCallOnCompleteCallback(repo, onComplete, status, errorReason);\n });\n}\nfunction repoOnDisconnectSet(repo, path, value, onComplete) {\n const newNode = nodeFromJSON(value);\n repo.server_.onDisconnectPut(path.toString(), newNode.val(/*export=*/ true), (status, errorReason) => {\n if (status === 'ok') {\n sparseSnapshotTreeRemember(repo.onDisconnect_, path, newNode);\n }\n repoCallOnCompleteCallback(repo, onComplete, status, errorReason);\n });\n}\nfunction repoOnDisconnectSetWithPriority(repo, path, value, priority, onComplete) {\n const newNode = nodeFromJSON(value, priority);\n repo.server_.onDisconnectPut(path.toString(), newNode.val(/*export=*/ true), (status, errorReason) => {\n if (status === 'ok') {\n sparseSnapshotTreeRemember(repo.onDisconnect_, path, newNode);\n }\n repoCallOnCompleteCallback(repo, onComplete, status, errorReason);\n });\n}\nfunction repoOnDisconnectUpdate(repo, path, childrenToMerge, onComplete) {\n if (isEmpty(childrenToMerge)) {\n log(\"onDisconnect().update() called with empty data. Don't do anything.\");\n repoCallOnCompleteCallback(repo, onComplete, 'ok', undefined);\n return;\n }\n repo.server_.onDisconnectMerge(path.toString(), childrenToMerge, (status, errorReason) => {\n if (status === 'ok') {\n each(childrenToMerge, (childName, childNode) => {\n const newChildNode = nodeFromJSON(childNode);\n sparseSnapshotTreeRemember(repo.onDisconnect_, pathChild(path, childName), newChildNode);\n });\n }\n repoCallOnCompleteCallback(repo, onComplete, status, errorReason);\n });\n}\nfunction repoAddEventCallbackForQuery(repo, query, eventRegistration) {\n let events;\n if (pathGetFront(query._path) === '.info') {\n events = syncTreeAddEventRegistration(repo.infoSyncTree_, query, eventRegistration);\n }\n else {\n events = syncTreeAddEventRegistration(repo.serverSyncTree_, query, eventRegistration);\n }\n eventQueueRaiseEventsAtPath(repo.eventQueue_, query._path, events);\n}\nfunction repoRemoveEventCallbackForQuery(repo, query, eventRegistration) {\n // These are guaranteed not to raise events, since we're not passing in a cancelError. However, we can future-proof\n // a little bit by handling the return values anyways.\n let events;\n if (pathGetFront(query._path) === '.info') {\n events = syncTreeRemoveEventRegistration(repo.infoSyncTree_, query, eventRegistration);\n }\n else {\n events = syncTreeRemoveEventRegistration(repo.serverSyncTree_, query, eventRegistration);\n }\n eventQueueRaiseEventsAtPath(repo.eventQueue_, query._path, events);\n}\nfunction repoInterrupt(repo) {\n if (repo.persistentConnection_) {\n repo.persistentConnection_.interrupt(INTERRUPT_REASON);\n }\n}\nfunction repoResume(repo) {\n if (repo.persistentConnection_) {\n repo.persistentConnection_.resume(INTERRUPT_REASON);\n }\n}\nfunction repoLog(repo, ...varArgs) {\n let prefix = '';\n if (repo.persistentConnection_) {\n prefix = repo.persistentConnection_.id + ':';\n }\n log(prefix, ...varArgs);\n}\nfunction repoCallOnCompleteCallback(repo, callback, status, errorReason) {\n if (callback) {\n exceptionGuard(() => {\n if (status === 'ok') {\n callback(null);\n }\n else {\n const code = (status || 'error').toUpperCase();\n let message = code;\n if (errorReason) {\n message += ': ' + errorReason;\n }\n const error = new Error(message);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n error.code = code;\n callback(error);\n }\n });\n }\n}\n/**\n * Creates a new transaction, adds it to the transactions we're tracking, and\n * sends it to the server if possible.\n *\n * @param path - Path at which to do transaction.\n * @param transactionUpdate - Update callback.\n * @param onComplete - Completion callback.\n * @param unwatcher - Function that will be called when the transaction no longer\n * need data updates for `path`.\n * @param applyLocally - Whether or not to make intermediate results visible\n */\nfunction repoStartTransaction(repo, path, transactionUpdate, onComplete, unwatcher, applyLocally) {\n repoLog(repo, 'transaction on ' + path);\n // Initialize transaction.\n const transaction = {\n path,\n update: transactionUpdate,\n onComplete,\n // One of TransactionStatus enums.\n status: null,\n // Used when combining transactions at different locations to figure out\n // which one goes first.\n order: LUIDGenerator(),\n // Whether to raise local events for this transaction.\n applyLocally,\n // Count of how many times we've retried the transaction.\n retryCount: 0,\n // Function to call to clean up our .on() listener.\n unwatcher,\n // Stores why a transaction was aborted.\n abortReason: null,\n currentWriteId: null,\n currentInputSnapshot: null,\n currentOutputSnapshotRaw: null,\n currentOutputSnapshotResolved: null\n };\n // Run transaction initially.\n const currentState = repoGetLatestState(repo, path, undefined);\n transaction.currentInputSnapshot = currentState;\n const newVal = transaction.update(currentState.val());\n if (newVal === undefined) {\n // Abort transaction.\n transaction.unwatcher();\n transaction.currentOutputSnapshotRaw = null;\n transaction.currentOutputSnapshotResolved = null;\n if (transaction.onComplete) {\n transaction.onComplete(null, false, transaction.currentInputSnapshot);\n }\n }\n else {\n validateFirebaseData('transaction failed: Data returned ', newVal, transaction.path);\n // Mark as run and add to our queue.\n transaction.status = 0 /* TransactionStatus.RUN */;\n const queueNode = treeSubTree(repo.transactionQueueTree_, path);\n const nodeQueue = treeGetValue(queueNode) || [];\n nodeQueue.push(transaction);\n treeSetValue(queueNode, nodeQueue);\n // Update visibleData and raise events\n // Note: We intentionally raise events after updating all of our\n // transaction state, since the user could start new transactions from the\n // event callbacks.\n let priorityForNode;\n if (typeof newVal === 'object' &&\n newVal !== null &&\n contains(newVal, '.priority')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n priorityForNode = safeGet(newVal, '.priority');\n assert(isValidPriority(priorityForNode), 'Invalid priority returned by transaction. ' +\n 'Priority must be a valid string, finite number, server value, or null.');\n }\n else {\n const currentNode = syncTreeCalcCompleteEventCache(repo.serverSyncTree_, path) ||\n ChildrenNode.EMPTY_NODE;\n priorityForNode = currentNode.getPriority().val();\n }\n const serverValues = repoGenerateServerValues(repo);\n const newNodeUnresolved = nodeFromJSON(newVal, priorityForNode);\n const newNode = resolveDeferredValueSnapshot(newNodeUnresolved, currentState, serverValues);\n transaction.currentOutputSnapshotRaw = newNodeUnresolved;\n transaction.currentOutputSnapshotResolved = newNode;\n transaction.currentWriteId = repoGetNextWriteId(repo);\n const events = syncTreeApplyUserOverwrite(repo.serverSyncTree_, path, newNode, transaction.currentWriteId, transaction.applyLocally);\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, path, events);\n repoSendReadyTransactions(repo, repo.transactionQueueTree_);\n }\n}\n/**\n * @param excludeSets - A specific set to exclude\n */\nfunction repoGetLatestState(repo, path, excludeSets) {\n return (syncTreeCalcCompleteEventCache(repo.serverSyncTree_, path, excludeSets) ||\n ChildrenNode.EMPTY_NODE);\n}\n/**\n * Sends any already-run transactions that aren't waiting for outstanding\n * transactions to complete.\n *\n * Externally it's called with no arguments, but it calls itself recursively\n * with a particular transactionQueueTree node to recurse through the tree.\n *\n * @param node - transactionQueueTree node to start at.\n */\nfunction repoSendReadyTransactions(repo, node = repo.transactionQueueTree_) {\n // Before recursing, make sure any completed transactions are removed.\n if (!node) {\n repoPruneCompletedTransactionsBelowNode(repo, node);\n }\n if (treeGetValue(node)) {\n const queue = repoBuildTransactionQueue(repo, node);\n assert(queue.length > 0, 'Sending zero length transaction queue');\n const allRun = queue.every((transaction) => transaction.status === 0 /* TransactionStatus.RUN */);\n // If they're all run (and not sent), we can send them. Else, we must wait.\n if (allRun) {\n repoSendTransactionQueue(repo, treeGetPath(node), queue);\n }\n }\n else if (treeHasChildren(node)) {\n treeForEachChild(node, childNode => {\n repoSendReadyTransactions(repo, childNode);\n });\n }\n}\n/**\n * Given a list of run transactions, send them to the server and then handle\n * the result (success or failure).\n *\n * @param path - The location of the queue.\n * @param queue - Queue of transactions under the specified location.\n */\nfunction repoSendTransactionQueue(repo, path, queue) {\n // Mark transactions as sent and increment retry count!\n const setsToIgnore = queue.map(txn => {\n return txn.currentWriteId;\n });\n const latestState = repoGetLatestState(repo, path, setsToIgnore);\n let snapToSend = latestState;\n const latestHash = latestState.hash();\n for (let i = 0; i < queue.length; i++) {\n const txn = queue[i];\n assert(txn.status === 0 /* TransactionStatus.RUN */, 'tryToSendTransactionQueue_: items in queue should all be run.');\n txn.status = 1 /* TransactionStatus.SENT */;\n txn.retryCount++;\n const relativePath = newRelativePath(path, txn.path);\n // If we've gotten to this point, the output snapshot must be defined.\n snapToSend = snapToSend.updateChild(relativePath /** @type {!Node} */, txn.currentOutputSnapshotRaw);\n }\n const dataToSend = snapToSend.val(true);\n const pathToSend = path;\n // Send the put.\n repo.server_.put(pathToSend.toString(), dataToSend, (status) => {\n repoLog(repo, 'transaction put response', {\n path: pathToSend.toString(),\n status\n });\n let events = [];\n if (status === 'ok') {\n // Queue up the callbacks and fire them after cleaning up all of our\n // transaction state, since the callback could trigger more\n // transactions or sets.\n const callbacks = [];\n for (let i = 0; i < queue.length; i++) {\n queue[i].status = 2 /* TransactionStatus.COMPLETED */;\n events = events.concat(syncTreeAckUserWrite(repo.serverSyncTree_, queue[i].currentWriteId));\n if (queue[i].onComplete) {\n // We never unset the output snapshot, and given that this\n // transaction is complete, it should be set\n callbacks.push(() => queue[i].onComplete(null, true, queue[i].currentOutputSnapshotResolved));\n }\n queue[i].unwatcher();\n }\n // Now remove the completed transactions.\n repoPruneCompletedTransactionsBelowNode(repo, treeSubTree(repo.transactionQueueTree_, path));\n // There may be pending transactions that we can now send.\n repoSendReadyTransactions(repo, repo.transactionQueueTree_);\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, path, events);\n // Finally, trigger onComplete callbacks.\n for (let i = 0; i < callbacks.length; i++) {\n exceptionGuard(callbacks[i]);\n }\n }\n else {\n // transactions are no longer sent. Update their status appropriately.\n if (status === 'datastale') {\n for (let i = 0; i < queue.length; i++) {\n if (queue[i].status === 3 /* TransactionStatus.SENT_NEEDS_ABORT */) {\n queue[i].status = 4 /* TransactionStatus.NEEDS_ABORT */;\n }\n else {\n queue[i].status = 0 /* TransactionStatus.RUN */;\n }\n }\n }\n else {\n warn('transaction at ' + pathToSend.toString() + ' failed: ' + status);\n for (let i = 0; i < queue.length; i++) {\n queue[i].status = 4 /* TransactionStatus.NEEDS_ABORT */;\n queue[i].abortReason = status;\n }\n }\n repoRerunTransactions(repo, path);\n }\n }, latestHash);\n}\n/**\n * Finds all transactions dependent on the data at changedPath and reruns them.\n *\n * Should be called any time cached data changes.\n *\n * Return the highest path that was affected by rerunning transactions. This\n * is the path at which events need to be raised for.\n *\n * @param changedPath - The path in mergedData that changed.\n * @returns The rootmost path that was affected by rerunning transactions.\n */\nfunction repoRerunTransactions(repo, changedPath) {\n const rootMostTransactionNode = repoGetAncestorTransactionNode(repo, changedPath);\n const path = treeGetPath(rootMostTransactionNode);\n const queue = repoBuildTransactionQueue(repo, rootMostTransactionNode);\n repoRerunTransactionQueue(repo, queue, path);\n return path;\n}\n/**\n * Does all the work of rerunning transactions (as well as cleans up aborted\n * transactions and whatnot).\n *\n * @param queue - The queue of transactions to run.\n * @param path - The path the queue is for.\n */\nfunction repoRerunTransactionQueue(repo, queue, path) {\n if (queue.length === 0) {\n return; // Nothing to do!\n }\n // Queue up the callbacks and fire them after cleaning up all of our\n // transaction state, since the callback could trigger more transactions or\n // sets.\n const callbacks = [];\n let events = [];\n // Ignore all of the sets we're going to re-run.\n const txnsToRerun = queue.filter(q => {\n return q.status === 0 /* TransactionStatus.RUN */;\n });\n const setsToIgnore = txnsToRerun.map(q => {\n return q.currentWriteId;\n });\n for (let i = 0; i < queue.length; i++) {\n const transaction = queue[i];\n const relativePath = newRelativePath(path, transaction.path);\n let abortTransaction = false, abortReason;\n assert(relativePath !== null, 'rerunTransactionsUnderNode_: relativePath should not be null.');\n if (transaction.status === 4 /* TransactionStatus.NEEDS_ABORT */) {\n abortTransaction = true;\n abortReason = transaction.abortReason;\n events = events.concat(syncTreeAckUserWrite(repo.serverSyncTree_, transaction.currentWriteId, true));\n }\n else if (transaction.status === 0 /* TransactionStatus.RUN */) {\n if (transaction.retryCount >= MAX_TRANSACTION_RETRIES) {\n abortTransaction = true;\n abortReason = 'maxretry';\n events = events.concat(syncTreeAckUserWrite(repo.serverSyncTree_, transaction.currentWriteId, true));\n }\n else {\n // This code reruns a transaction\n const currentNode = repoGetLatestState(repo, transaction.path, setsToIgnore);\n transaction.currentInputSnapshot = currentNode;\n const newData = queue[i].update(currentNode.val());\n if (newData !== undefined) {\n validateFirebaseData('transaction failed: Data returned ', newData, transaction.path);\n let newDataNode = nodeFromJSON(newData);\n const hasExplicitPriority = typeof newData === 'object' &&\n newData != null &&\n contains(newData, '.priority');\n if (!hasExplicitPriority) {\n // Keep the old priority if there wasn't a priority explicitly specified.\n newDataNode = newDataNode.updatePriority(currentNode.getPriority());\n }\n const oldWriteId = transaction.currentWriteId;\n const serverValues = repoGenerateServerValues(repo);\n const newNodeResolved = resolveDeferredValueSnapshot(newDataNode, currentNode, serverValues);\n transaction.currentOutputSnapshotRaw = newDataNode;\n transaction.currentOutputSnapshotResolved = newNodeResolved;\n transaction.currentWriteId = repoGetNextWriteId(repo);\n // Mutates setsToIgnore in place\n setsToIgnore.splice(setsToIgnore.indexOf(oldWriteId), 1);\n events = events.concat(syncTreeApplyUserOverwrite(repo.serverSyncTree_, transaction.path, newNodeResolved, transaction.currentWriteId, transaction.applyLocally));\n events = events.concat(syncTreeAckUserWrite(repo.serverSyncTree_, oldWriteId, true));\n }\n else {\n abortTransaction = true;\n abortReason = 'nodata';\n events = events.concat(syncTreeAckUserWrite(repo.serverSyncTree_, transaction.currentWriteId, true));\n }\n }\n }\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, path, events);\n events = [];\n if (abortTransaction) {\n // Abort.\n queue[i].status = 2 /* TransactionStatus.COMPLETED */;\n // Removing a listener can trigger pruning which can muck with\n // mergedData/visibleData (as it prunes data). So defer the unwatcher\n // until we're done.\n (function (unwatcher) {\n setTimeout(unwatcher, Math.floor(0));\n })(queue[i].unwatcher);\n if (queue[i].onComplete) {\n if (abortReason === 'nodata') {\n callbacks.push(() => queue[i].onComplete(null, false, queue[i].currentInputSnapshot));\n }\n else {\n callbacks.push(() => queue[i].onComplete(new Error(abortReason), false, null));\n }\n }\n }\n }\n // Clean up completed transactions.\n repoPruneCompletedTransactionsBelowNode(repo, repo.transactionQueueTree_);\n // Now fire callbacks, now that we're in a good, known state.\n for (let i = 0; i < callbacks.length; i++) {\n exceptionGuard(callbacks[i]);\n }\n // Try to send the transaction result to the server.\n repoSendReadyTransactions(repo, repo.transactionQueueTree_);\n}\n/**\n * Returns the rootmost ancestor node of the specified path that has a pending\n * transaction on it, or just returns the node for the given path if there are\n * no pending transactions on any ancestor.\n *\n * @param path - The location to start at.\n * @returns The rootmost node with a transaction.\n */\nfunction repoGetAncestorTransactionNode(repo, path) {\n let front;\n // Start at the root and walk deeper into the tree towards path until we\n // find a node with pending transactions.\n let transactionNode = repo.transactionQueueTree_;\n front = pathGetFront(path);\n while (front !== null && treeGetValue(transactionNode) === undefined) {\n transactionNode = treeSubTree(transactionNode, front);\n path = pathPopFront(path);\n front = pathGetFront(path);\n }\n return transactionNode;\n}\n/**\n * Builds the queue of all transactions at or below the specified\n * transactionNode.\n *\n * @param transactionNode\n * @returns The generated queue.\n */\nfunction repoBuildTransactionQueue(repo, transactionNode) {\n // Walk any child transaction queues and aggregate them into a single queue.\n const transactionQueue = [];\n repoAggregateTransactionQueuesForNode(repo, transactionNode, transactionQueue);\n // Sort them by the order the transactions were created.\n transactionQueue.sort((a, b) => a.order - b.order);\n return transactionQueue;\n}\nfunction repoAggregateTransactionQueuesForNode(repo, node, queue) {\n const nodeQueue = treeGetValue(node);\n if (nodeQueue) {\n for (let i = 0; i < nodeQueue.length; i++) {\n queue.push(nodeQueue[i]);\n }\n }\n treeForEachChild(node, child => {\n repoAggregateTransactionQueuesForNode(repo, child, queue);\n });\n}\n/**\n * Remove COMPLETED transactions at or below this node in the transactionQueueTree_.\n */\nfunction repoPruneCompletedTransactionsBelowNode(repo, node) {\n const queue = treeGetValue(node);\n if (queue) {\n let to = 0;\n for (let from = 0; from < queue.length; from++) {\n if (queue[from].status !== 2 /* TransactionStatus.COMPLETED */) {\n queue[to] = queue[from];\n to++;\n }\n }\n queue.length = to;\n treeSetValue(node, queue.length > 0 ? queue : undefined);\n }\n treeForEachChild(node, childNode => {\n repoPruneCompletedTransactionsBelowNode(repo, childNode);\n });\n}\n/**\n * Aborts all transactions on ancestors or descendants of the specified path.\n * Called when doing a set() or update() since we consider them incompatible\n * with transactions.\n *\n * @param path - Path for which we want to abort related transactions.\n */\nfunction repoAbortTransactions(repo, path) {\n const affectedPath = treeGetPath(repoGetAncestorTransactionNode(repo, path));\n const transactionNode = treeSubTree(repo.transactionQueueTree_, path);\n treeForEachAncestor(transactionNode, (node) => {\n repoAbortTransactionsOnNode(repo, node);\n });\n repoAbortTransactionsOnNode(repo, transactionNode);\n treeForEachDescendant(transactionNode, (node) => {\n repoAbortTransactionsOnNode(repo, node);\n });\n return affectedPath;\n}\n/**\n * Abort transactions stored in this transaction queue node.\n *\n * @param node - Node to abort transactions for.\n */\nfunction repoAbortTransactionsOnNode(repo, node) {\n const queue = treeGetValue(node);\n if (queue) {\n // Queue up the callbacks and fire them after cleaning up all of our\n // transaction state, since the callback could trigger more transactions\n // or sets.\n const callbacks = [];\n // Go through queue. Any already-sent transactions must be marked for\n // abort, while the unsent ones can be immediately aborted and removed.\n let events = [];\n let lastSent = -1;\n for (let i = 0; i < queue.length; i++) {\n if (queue[i].status === 3 /* TransactionStatus.SENT_NEEDS_ABORT */) ;\n else if (queue[i].status === 1 /* TransactionStatus.SENT */) {\n assert(lastSent === i - 1, 'All SENT items should be at beginning of queue.');\n lastSent = i;\n // Mark transaction for abort when it comes back.\n queue[i].status = 3 /* TransactionStatus.SENT_NEEDS_ABORT */;\n queue[i].abortReason = 'set';\n }\n else {\n assert(queue[i].status === 0 /* TransactionStatus.RUN */, 'Unexpected transaction status in abort');\n // We can abort it immediately.\n queue[i].unwatcher();\n events = events.concat(syncTreeAckUserWrite(repo.serverSyncTree_, queue[i].currentWriteId, true));\n if (queue[i].onComplete) {\n callbacks.push(queue[i].onComplete.bind(null, new Error('set'), false, null));\n }\n }\n }\n if (lastSent === -1) {\n // We're not waiting for any sent transactions. We can clear the queue.\n treeSetValue(node, undefined);\n }\n else {\n // Remove the transactions we aborted.\n queue.length = lastSent + 1;\n }\n // Now fire the callbacks.\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, treeGetPath(node), events);\n for (let i = 0; i < callbacks.length; i++) {\n exceptionGuard(callbacks[i]);\n }\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction decodePath(pathString) {\n let pathStringDecoded = '';\n const pieces = pathString.split('/');\n for (let i = 0; i < pieces.length; i++) {\n if (pieces[i].length > 0) {\n let piece = pieces[i];\n try {\n piece = decodeURIComponent(piece.replace(/\\+/g, ' '));\n }\n catch (e) { }\n pathStringDecoded += '/' + piece;\n }\n }\n return pathStringDecoded;\n}\n/**\n * @returns key value hash\n */\nfunction decodeQuery(queryString) {\n const results = {};\n if (queryString.charAt(0) === '?') {\n queryString = queryString.substring(1);\n }\n for (const segment of queryString.split('&')) {\n if (segment.length === 0) {\n continue;\n }\n const kv = segment.split('=');\n if (kv.length === 2) {\n results[decodeURIComponent(kv[0])] = decodeURIComponent(kv[1]);\n }\n else {\n warn(`Invalid query segment '${segment}' in query '${queryString}'`);\n }\n }\n return results;\n}\nconst parseRepoInfo = function (dataURL, nodeAdmin) {\n const parsedUrl = parseDatabaseURL(dataURL), namespace = parsedUrl.namespace;\n if (parsedUrl.domain === 'firebase.com') {\n fatal(parsedUrl.host +\n ' is no longer supported. ' +\n 'Please use .firebaseio.com instead');\n }\n // Catch common error of uninitialized namespace value.\n if ((!namespace || namespace === 'undefined') &&\n parsedUrl.domain !== 'localhost') {\n fatal('Cannot parse Firebase url. Please use https://.firebaseio.com');\n }\n if (!parsedUrl.secure) {\n warnIfPageIsSecure();\n }\n const webSocketOnly = parsedUrl.scheme === 'ws' || parsedUrl.scheme === 'wss';\n return {\n repoInfo: new RepoInfo(parsedUrl.host, parsedUrl.secure, namespace, webSocketOnly, nodeAdmin, \n /*persistenceKey=*/ '', \n /*includeNamespaceInQueryParams=*/ namespace !== parsedUrl.subdomain),\n path: new Path(parsedUrl.pathString)\n };\n};\nconst parseDatabaseURL = function (dataURL) {\n // Default to empty strings in the event of a malformed string.\n let host = '', domain = '', subdomain = '', pathString = '', namespace = '';\n // Always default to SSL, unless otherwise specified.\n let secure = true, scheme = 'https', port = 443;\n // Don't do any validation here. The caller is responsible for validating the result of parsing.\n if (typeof dataURL === 'string') {\n // Parse scheme.\n let colonInd = dataURL.indexOf('//');\n if (colonInd >= 0) {\n scheme = dataURL.substring(0, colonInd - 1);\n dataURL = dataURL.substring(colonInd + 2);\n }\n // Parse host, path, and query string.\n let slashInd = dataURL.indexOf('/');\n if (slashInd === -1) {\n slashInd = dataURL.length;\n }\n let questionMarkInd = dataURL.indexOf('?');\n if (questionMarkInd === -1) {\n questionMarkInd = dataURL.length;\n }\n host = dataURL.substring(0, Math.min(slashInd, questionMarkInd));\n if (slashInd < questionMarkInd) {\n // For pathString, questionMarkInd will always come after slashInd\n pathString = decodePath(dataURL.substring(slashInd, questionMarkInd));\n }\n const queryParams = decodeQuery(dataURL.substring(Math.min(dataURL.length, questionMarkInd)));\n // If we have a port, use scheme for determining if it's secure.\n colonInd = host.indexOf(':');\n if (colonInd >= 0) {\n secure = scheme === 'https' || scheme === 'wss';\n port = parseInt(host.substring(colonInd + 1), 10);\n }\n else {\n colonInd = host.length;\n }\n const hostWithoutPort = host.slice(0, colonInd);\n if (hostWithoutPort.toLowerCase() === 'localhost') {\n domain = 'localhost';\n }\n else if (hostWithoutPort.split('.').length <= 2) {\n domain = hostWithoutPort;\n }\n else {\n // Interpret the subdomain of a 3 or more component URL as the namespace name.\n const dotInd = host.indexOf('.');\n subdomain = host.substring(0, dotInd).toLowerCase();\n domain = host.substring(dotInd + 1);\n // Normalize namespaces to lowercase to share storage / connection.\n namespace = subdomain;\n }\n // Always treat the value of the `ns` as the namespace name if it is present.\n if ('ns' in queryParams) {\n namespace = queryParams['ns'];\n }\n }\n return {\n host,\n port,\n domain,\n subdomain,\n secure,\n scheme,\n pathString,\n namespace\n };\n};\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Modeled after base64 web-safe chars, but ordered by ASCII.\nconst PUSH_CHARS = '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz';\n/**\n * Fancy ID generator that creates 20-character string identifiers with the\n * following properties:\n *\n * 1. They're based on timestamp so that they sort *after* any existing ids.\n * 2. They contain 72-bits of random data after the timestamp so that IDs won't\n * collide with other clients' IDs.\n * 3. They sort *lexicographically* (so the timestamp is converted to characters\n * that will sort properly).\n * 4. They're monotonically increasing. Even if you generate more than one in\n * the same timestamp, the latter ones will sort after the former ones. We do\n * this by using the previous random bits but \"incrementing\" them by 1 (only\n * in the case of a timestamp collision).\n */\nconst nextPushId = (function () {\n // Timestamp of last push, used to prevent local collisions if you push twice\n // in one ms.\n let lastPushTime = 0;\n // We generate 72-bits of randomness which get turned into 12 characters and\n // appended to the timestamp to prevent collisions with other clients. We\n // store the last characters we generated because in the event of a collision,\n // we'll use those same characters except \"incremented\" by one.\n const lastRandChars = [];\n return function (now) {\n const duplicateTime = now === lastPushTime;\n lastPushTime = now;\n let i;\n const timeStampChars = new Array(8);\n for (i = 7; i >= 0; i--) {\n timeStampChars[i] = PUSH_CHARS.charAt(now % 64);\n // NOTE: Can't use << here because javascript will convert to int and lose\n // the upper bits.\n now = Math.floor(now / 64);\n }\n assert(now === 0, 'Cannot push at time == 0');\n let id = timeStampChars.join('');\n if (!duplicateTime) {\n for (i = 0; i < 12; i++) {\n lastRandChars[i] = Math.floor(Math.random() * 64);\n }\n }\n else {\n // If the timestamp hasn't changed since last push, use the same random\n // number, except incremented by 1.\n for (i = 11; i >= 0 && lastRandChars[i] === 63; i--) {\n lastRandChars[i] = 0;\n }\n lastRandChars[i]++;\n }\n for (i = 0; i < 12; i++) {\n id += PUSH_CHARS.charAt(lastRandChars[i]);\n }\n assert(id.length === 20, 'nextPushId: Length should be 20.');\n return id;\n };\n})();\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Encapsulates the data needed to raise an event\n */\nclass DataEvent {\n /**\n * @param eventType - One of: value, child_added, child_changed, child_moved, child_removed\n * @param eventRegistration - The function to call to with the event data. User provided\n * @param snapshot - The data backing the event\n * @param prevName - Optional, the name of the previous child for child_* events.\n */\n constructor(eventType, eventRegistration, snapshot, prevName) {\n this.eventType = eventType;\n this.eventRegistration = eventRegistration;\n this.snapshot = snapshot;\n this.prevName = prevName;\n }\n getPath() {\n const ref = this.snapshot.ref;\n if (this.eventType === 'value') {\n return ref._path;\n }\n else {\n return ref.parent._path;\n }\n }\n getEventType() {\n return this.eventType;\n }\n getEventRunner() {\n return this.eventRegistration.getEventRunner(this);\n }\n toString() {\n return (this.getPath().toString() +\n ':' +\n this.eventType +\n ':' +\n stringify(this.snapshot.exportVal()));\n }\n}\nclass CancelEvent {\n constructor(eventRegistration, error, path) {\n this.eventRegistration = eventRegistration;\n this.error = error;\n this.path = path;\n }\n getPath() {\n return this.path;\n }\n getEventType() {\n return 'cancel';\n }\n getEventRunner() {\n return this.eventRegistration.getEventRunner(this);\n }\n toString() {\n return this.path.toString() + ':cancel';\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A wrapper class that converts events from the database@exp SDK to the legacy\n * Database SDK. Events are not converted directly as event registration relies\n * on reference comparison of the original user callback (see `matches()`) and\n * relies on equality of the legacy SDK's `context` object.\n */\nclass CallbackContext {\n constructor(snapshotCallback, cancelCallback) {\n this.snapshotCallback = snapshotCallback;\n this.cancelCallback = cancelCallback;\n }\n onValue(expDataSnapshot, previousChildName) {\n this.snapshotCallback.call(null, expDataSnapshot, previousChildName);\n }\n onCancel(error) {\n assert(this.hasCancelCallback, 'Raising a cancel event on a listener with no cancel callback');\n return this.cancelCallback.call(null, error);\n }\n get hasCancelCallback() {\n return !!this.cancelCallback;\n }\n matches(other) {\n return (this.snapshotCallback === other.snapshotCallback ||\n (this.snapshotCallback.userCallback !== undefined &&\n this.snapshotCallback.userCallback ===\n other.snapshotCallback.userCallback &&\n this.snapshotCallback.context === other.snapshotCallback.context));\n }\n}\n\n/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * The `onDisconnect` class allows you to write or clear data when your client\n * disconnects from the Database server. These updates occur whether your\n * client disconnects cleanly or not, so you can rely on them to clean up data\n * even if a connection is dropped or a client crashes.\n *\n * The `onDisconnect` class is most commonly used to manage presence in\n * applications where it is useful to detect how many clients are connected and\n * when other clients disconnect. See\n * {@link https://firebase.google.com/docs/database/web/offline-capabilities | Enabling Offline Capabilities in JavaScript}\n * for more information.\n *\n * To avoid problems when a connection is dropped before the requests can be\n * transferred to the Database server, these functions should be called before\n * writing any data.\n *\n * Note that `onDisconnect` operations are only triggered once. If you want an\n * operation to occur each time a disconnect occurs, you'll need to re-establish\n * the `onDisconnect` operations each time you reconnect.\n */\nclass OnDisconnect {\n /** @hideconstructor */\n constructor(_repo, _path) {\n this._repo = _repo;\n this._path = _path;\n }\n /**\n * Cancels all previously queued `onDisconnect()` set or update events for this\n * location and all children.\n *\n * If a write has been queued for this location via a `set()` or `update()` at a\n * parent location, the write at this location will be canceled, though writes\n * to sibling locations will still occur.\n *\n * @returns Resolves when synchronization to the server is complete.\n */\n cancel() {\n const deferred = new Deferred();\n repoOnDisconnectCancel(this._repo, this._path, deferred.wrapCallback(() => { }));\n return deferred.promise;\n }\n /**\n * Ensures the data at this location is deleted when the client is disconnected\n * (due to closing the browser, navigating to a new page, or network issues).\n *\n * @returns Resolves when synchronization to the server is complete.\n */\n remove() {\n validateWritablePath('OnDisconnect.remove', this._path);\n const deferred = new Deferred();\n repoOnDisconnectSet(this._repo, this._path, null, deferred.wrapCallback(() => { }));\n return deferred.promise;\n }\n /**\n * Ensures the data at this location is set to the specified value when the\n * client is disconnected (due to closing the browser, navigating to a new page,\n * or network issues).\n *\n * `set()` is especially useful for implementing \"presence\" systems, where a\n * value should be changed or cleared when a user disconnects so that they\n * appear \"offline\" to other users. See\n * {@link https://firebase.google.com/docs/database/web/offline-capabilities | Enabling Offline Capabilities in JavaScript}\n * for more information.\n *\n * Note that `onDisconnect` operations are only triggered once. If you want an\n * operation to occur each time a disconnect occurs, you'll need to re-establish\n * the `onDisconnect` operations each time.\n *\n * @param value - The value to be written to this location on disconnect (can\n * be an object, array, string, number, boolean, or null).\n * @returns Resolves when synchronization to the Database is complete.\n */\n set(value) {\n validateWritablePath('OnDisconnect.set', this._path);\n validateFirebaseDataArg('OnDisconnect.set', value, this._path, false);\n const deferred = new Deferred();\n repoOnDisconnectSet(this._repo, this._path, value, deferred.wrapCallback(() => { }));\n return deferred.promise;\n }\n /**\n * Ensures the data at this location is set to the specified value and priority\n * when the client is disconnected (due to closing the browser, navigating to a\n * new page, or network issues).\n *\n * @param value - The value to be written to this location on disconnect (can\n * be an object, array, string, number, boolean, or null).\n * @param priority - The priority to be written (string, number, or null).\n * @returns Resolves when synchronization to the Database is complete.\n */\n setWithPriority(value, priority) {\n validateWritablePath('OnDisconnect.setWithPriority', this._path);\n validateFirebaseDataArg('OnDisconnect.setWithPriority', value, this._path, false);\n validatePriority('OnDisconnect.setWithPriority', priority, false);\n const deferred = new Deferred();\n repoOnDisconnectSetWithPriority(this._repo, this._path, value, priority, deferred.wrapCallback(() => { }));\n return deferred.promise;\n }\n /**\n * Writes multiple values at this location when the client is disconnected (due\n * to closing the browser, navigating to a new page, or network issues).\n *\n * The `values` argument contains multiple property-value pairs that will be\n * written to the Database together. Each child property can either be a simple\n * property (for example, \"name\") or a relative path (for example, \"name/first\")\n * from the current location to the data to update.\n *\n * As opposed to the `set()` method, `update()` can be use to selectively update\n * only the referenced properties at the current location (instead of replacing\n * all the child properties at the current location).\n *\n * @param values - Object containing multiple values.\n * @returns Resolves when synchronization to the Database is complete.\n */\n update(values) {\n validateWritablePath('OnDisconnect.update', this._path);\n validateFirebaseMergeDataArg('OnDisconnect.update', values, this._path, false);\n const deferred = new Deferred();\n repoOnDisconnectUpdate(this._repo, this._path, values, deferred.wrapCallback(() => { }));\n return deferred.promise;\n }\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @internal\n */\nclass QueryImpl {\n /**\n * @hideconstructor\n */\n constructor(_repo, _path, _queryParams, _orderByCalled) {\n this._repo = _repo;\n this._path = _path;\n this._queryParams = _queryParams;\n this._orderByCalled = _orderByCalled;\n }\n get key() {\n if (pathIsEmpty(this._path)) {\n return null;\n }\n else {\n return pathGetBack(this._path);\n }\n }\n get ref() {\n return new ReferenceImpl(this._repo, this._path);\n }\n get _queryIdentifier() {\n const obj = queryParamsGetQueryObject(this._queryParams);\n const id = ObjectToUniqueKey(obj);\n return id === '{}' ? 'default' : id;\n }\n /**\n * An object representation of the query parameters used by this Query.\n */\n get _queryObject() {\n return queryParamsGetQueryObject(this._queryParams);\n }\n isEqual(other) {\n other = getModularInstance(other);\n if (!(other instanceof QueryImpl)) {\n return false;\n }\n const sameRepo = this._repo === other._repo;\n const samePath = pathEquals(this._path, other._path);\n const sameQueryIdentifier = this._queryIdentifier === other._queryIdentifier;\n return sameRepo && samePath && sameQueryIdentifier;\n }\n toJSON() {\n return this.toString();\n }\n toString() {\n return this._repo.toString() + pathToUrlEncodedString(this._path);\n }\n}\n/**\n * Validates that no other order by call has been made\n */\nfunction validateNoPreviousOrderByCall(query, fnName) {\n if (query._orderByCalled === true) {\n throw new Error(fnName + \": You can't combine multiple orderBy calls.\");\n }\n}\n/**\n * Validates start/end values for queries.\n */\nfunction validateQueryEndpoints(params) {\n let startNode = null;\n let endNode = null;\n if (params.hasStart()) {\n startNode = params.getIndexStartValue();\n }\n if (params.hasEnd()) {\n endNode = params.getIndexEndValue();\n }\n if (params.getIndex() === KEY_INDEX) {\n const tooManyArgsError = 'Query: When ordering by key, you may only pass one argument to ' +\n 'startAt(), endAt(), or equalTo().';\n const wrongArgTypeError = 'Query: When ordering by key, the argument passed to startAt(), startAfter(), ' +\n 'endAt(), endBefore(), or equalTo() must be a string.';\n if (params.hasStart()) {\n const startName = params.getIndexStartName();\n if (startName !== MIN_NAME) {\n throw new Error(tooManyArgsError);\n }\n else if (typeof startNode !== 'string') {\n throw new Error(wrongArgTypeError);\n }\n }\n if (params.hasEnd()) {\n const endName = params.getIndexEndName();\n if (endName !== MAX_NAME) {\n throw new Error(tooManyArgsError);\n }\n else if (typeof endNode !== 'string') {\n throw new Error(wrongArgTypeError);\n }\n }\n }\n else if (params.getIndex() === PRIORITY_INDEX) {\n if ((startNode != null && !isValidPriority(startNode)) ||\n (endNode != null && !isValidPriority(endNode))) {\n throw new Error('Query: When ordering by priority, the first argument passed to startAt(), ' +\n 'startAfter() endAt(), endBefore(), or equalTo() must be a valid priority value ' +\n '(null, a number, or a string).');\n }\n }\n else {\n assert(params.getIndex() instanceof PathIndex ||\n params.getIndex() === VALUE_INDEX, 'unknown index type.');\n if ((startNode != null && typeof startNode === 'object') ||\n (endNode != null && typeof endNode === 'object')) {\n throw new Error('Query: First argument passed to startAt(), startAfter(), endAt(), endBefore(), or ' +\n 'equalTo() cannot be an object.');\n }\n }\n}\n/**\n * Validates that limit* has been called with the correct combination of parameters\n */\nfunction validateLimit(params) {\n if (params.hasStart() &&\n params.hasEnd() &&\n params.hasLimit() &&\n !params.hasAnchoredLimit()) {\n throw new Error(\"Query: Can't combine startAt(), startAfter(), endAt(), endBefore(), and limit(). Use \" +\n 'limitToFirst() or limitToLast() instead.');\n }\n}\n/**\n * @internal\n */\nclass ReferenceImpl extends QueryImpl {\n /** @hideconstructor */\n constructor(repo, path) {\n super(repo, path, new QueryParams(), false);\n }\n get parent() {\n const parentPath = pathParent(this._path);\n return parentPath === null\n ? null\n : new ReferenceImpl(this._repo, parentPath);\n }\n get root() {\n let ref = this;\n while (ref.parent !== null) {\n ref = ref.parent;\n }\n return ref;\n }\n}\n/**\n * A `DataSnapshot` contains data from a Database location.\n *\n * Any time you read data from the Database, you receive the data as a\n * `DataSnapshot`. A `DataSnapshot` is passed to the event callbacks you attach\n * with `on()` or `once()`. You can extract the contents of the snapshot as a\n * JavaScript object by calling the `val()` method. Alternatively, you can\n * traverse into the snapshot by calling `child()` to return child snapshots\n * (which you could then call `val()` on).\n *\n * A `DataSnapshot` is an efficiently generated, immutable copy of the data at\n * a Database location. It cannot be modified and will never change (to modify\n * data, you always call the `set()` method on a `Reference` directly).\n */\nclass DataSnapshot {\n /**\n * @param _node - A SnapshotNode to wrap.\n * @param ref - The location this snapshot came from.\n * @param _index - The iteration order for this snapshot\n * @hideconstructor\n */\n constructor(_node, \n /**\n * The location of this DataSnapshot.\n */\n ref, _index) {\n this._node = _node;\n this.ref = ref;\n this._index = _index;\n }\n /**\n * Gets the priority value of the data in this `DataSnapshot`.\n *\n * Applications need not use priority but can order collections by\n * ordinary properties (see\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#sorting_and_filtering_data |Sorting and filtering data}\n * ).\n */\n get priority() {\n // typecast here because we never return deferred values or internal priorities (MAX_PRIORITY)\n return this._node.getPriority().val();\n }\n /**\n * The key (last part of the path) of the location of this `DataSnapshot`.\n *\n * The last token in a Database location is considered its key. For example,\n * \"ada\" is the key for the /users/ada/ node. Accessing the key on any\n * `DataSnapshot` will return the key for the location that generated it.\n * However, accessing the key on the root URL of a Database will return\n * `null`.\n */\n get key() {\n return this.ref.key;\n }\n /** Returns the number of child properties of this `DataSnapshot`. */\n get size() {\n return this._node.numChildren();\n }\n /**\n * Gets another `DataSnapshot` for the location at the specified relative path.\n *\n * Passing a relative path to the `child()` method of a DataSnapshot returns\n * another `DataSnapshot` for the location at the specified relative path. The\n * relative path can either be a simple child name (for example, \"ada\") or a\n * deeper, slash-separated path (for example, \"ada/name/first\"). If the child\n * location has no data, an empty `DataSnapshot` (that is, a `DataSnapshot`\n * whose value is `null`) is returned.\n *\n * @param path - A relative path to the location of child data.\n */\n child(path) {\n const childPath = new Path(path);\n const childRef = child(this.ref, path);\n return new DataSnapshot(this._node.getChild(childPath), childRef, PRIORITY_INDEX);\n }\n /**\n * Returns true if this `DataSnapshot` contains any data. It is slightly more\n * efficient than using `snapshot.val() !== null`.\n */\n exists() {\n return !this._node.isEmpty();\n }\n /**\n * Exports the entire contents of the DataSnapshot as a JavaScript object.\n *\n * The `exportVal()` method is similar to `val()`, except priority information\n * is included (if available), making it suitable for backing up your data.\n *\n * @returns The DataSnapshot's contents as a JavaScript value (Object,\n * Array, string, number, boolean, or `null`).\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n exportVal() {\n return this._node.val(true);\n }\n /**\n * Enumerates the top-level children in the `IteratedDataSnapshot`.\n *\n * Because of the way JavaScript objects work, the ordering of data in the\n * JavaScript object returned by `val()` is not guaranteed to match the\n * ordering on the server nor the ordering of `onChildAdded()` events. That is\n * where `forEach()` comes in handy. It guarantees the children of a\n * `DataSnapshot` will be iterated in their query order.\n *\n * If no explicit `orderBy*()` method is used, results are returned\n * ordered by key (unless priorities are used, in which case, results are\n * returned by priority).\n *\n * @param action - A function that will be called for each child DataSnapshot.\n * The callback can return true to cancel further enumeration.\n * @returns true if enumeration was canceled due to your callback returning\n * true.\n */\n forEach(action) {\n if (this._node.isLeafNode()) {\n return false;\n }\n const childrenNode = this._node;\n // Sanitize the return value to a boolean. ChildrenNode.forEachChild has a weird return type...\n return !!childrenNode.forEachChild(this._index, (key, node) => {\n return action(new DataSnapshot(node, child(this.ref, key), PRIORITY_INDEX));\n });\n }\n /**\n * Returns true if the specified child path has (non-null) data.\n *\n * @param path - A relative path to the location of a potential child.\n * @returns `true` if data exists at the specified child path; else\n * `false`.\n */\n hasChild(path) {\n const childPath = new Path(path);\n return !this._node.getChild(childPath).isEmpty();\n }\n /**\n * Returns whether or not the `DataSnapshot` has any non-`null` child\n * properties.\n *\n * You can use `hasChildren()` to determine if a `DataSnapshot` has any\n * children. If it does, you can enumerate them using `forEach()`. If it\n * doesn't, then either this snapshot contains a primitive value (which can be\n * retrieved with `val()`) or it is empty (in which case, `val()` will return\n * `null`).\n *\n * @returns true if this snapshot has any children; else false.\n */\n hasChildren() {\n if (this._node.isLeafNode()) {\n return false;\n }\n else {\n return !this._node.isEmpty();\n }\n }\n /**\n * Returns a JSON-serializable representation of this object.\n */\n toJSON() {\n return this.exportVal();\n }\n /**\n * Extracts a JavaScript value from a `DataSnapshot`.\n *\n * Depending on the data in a `DataSnapshot`, the `val()` method may return a\n * scalar type (string, number, or boolean), an array, or an object. It may\n * also return null, indicating that the `DataSnapshot` is empty (contains no\n * data).\n *\n * @returns The DataSnapshot's contents as a JavaScript value (Object,\n * Array, string, number, boolean, or `null`).\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n val() {\n return this._node.val();\n }\n}\n/**\n *\n * Returns a `Reference` representing the location in the Database\n * corresponding to the provided path. If no path is provided, the `Reference`\n * will point to the root of the Database.\n *\n * @param db - The database instance to obtain a reference for.\n * @param path - Optional path representing the location the returned\n * `Reference` will point. If not provided, the returned `Reference` will\n * point to the root of the Database.\n * @returns If a path is provided, a `Reference`\n * pointing to the provided path. Otherwise, a `Reference` pointing to the\n * root of the Database.\n */\nfunction ref(db, path) {\n db = getModularInstance(db);\n db._checkNotDeleted('ref');\n return path !== undefined ? child(db._root, path) : db._root;\n}\n/**\n * Returns a `Reference` representing the location in the Database\n * corresponding to the provided Firebase URL.\n *\n * An exception is thrown if the URL is not a valid Firebase Database URL or it\n * has a different domain than the current `Database` instance.\n *\n * Note that all query parameters (`orderBy`, `limitToLast`, etc.) are ignored\n * and are not applied to the returned `Reference`.\n *\n * @param db - The database instance to obtain a reference for.\n * @param url - The Firebase URL at which the returned `Reference` will\n * point.\n * @returns A `Reference` pointing to the provided\n * Firebase URL.\n */\nfunction refFromURL(db, url) {\n db = getModularInstance(db);\n db._checkNotDeleted('refFromURL');\n const parsedURL = parseRepoInfo(url, db._repo.repoInfo_.nodeAdmin);\n validateUrl('refFromURL', parsedURL);\n const repoInfo = parsedURL.repoInfo;\n if (!db._repo.repoInfo_.isCustomHost() &&\n repoInfo.host !== db._repo.repoInfo_.host) {\n fatal('refFromURL' +\n ': Host name does not match the current database: ' +\n '(found ' +\n repoInfo.host +\n ' but expected ' +\n db._repo.repoInfo_.host +\n ')');\n }\n return ref(db, parsedURL.path.toString());\n}\n/**\n * Gets a `Reference` for the location at the specified relative path.\n *\n * The relative path can either be a simple child name (for example, \"ada\") or\n * a deeper slash-separated path (for example, \"ada/name/first\").\n *\n * @param parent - The parent location.\n * @param path - A relative path from this location to the desired child\n * location.\n * @returns The specified child location.\n */\nfunction child(parent, path) {\n parent = getModularInstance(parent);\n if (pathGetFront(parent._path) === null) {\n validateRootPathString('child', 'path', path, false);\n }\n else {\n validatePathString('child', 'path', path, false);\n }\n return new ReferenceImpl(parent._repo, pathChild(parent._path, path));\n}\n/**\n * Returns an `OnDisconnect` object - see\n * {@link https://firebase.google.com/docs/database/web/offline-capabilities | Enabling Offline Capabilities in JavaScript}\n * for more information on how to use it.\n *\n * @param ref - The reference to add OnDisconnect triggers for.\n */\nfunction onDisconnect(ref) {\n ref = getModularInstance(ref);\n return new OnDisconnect(ref._repo, ref._path);\n}\n/**\n * Generates a new child location using a unique key and returns its\n * `Reference`.\n *\n * This is the most common pattern for adding data to a collection of items.\n *\n * If you provide a value to `push()`, the value is written to the\n * generated location. If you don't pass a value, nothing is written to the\n * database and the child remains empty (but you can use the `Reference`\n * elsewhere).\n *\n * The unique keys generated by `push()` are ordered by the current time, so the\n * resulting list of items is chronologically sorted. The keys are also\n * designed to be unguessable (they contain 72 random bits of entropy).\n *\n * See {@link https://firebase.google.com/docs/database/web/lists-of-data#append_to_a_list_of_data | Append to a list of data}.\n * See {@link https://firebase.googleblog.com/2015/02/the-2120-ways-to-ensure-unique_68.html | The 2^120 Ways to Ensure Unique Identifiers}.\n *\n * @param parent - The parent location.\n * @param value - Optional value to be written at the generated location.\n * @returns Combined `Promise` and `Reference`; resolves when write is complete,\n * but can be used immediately as the `Reference` to the child location.\n */\nfunction push(parent, value) {\n parent = getModularInstance(parent);\n validateWritablePath('push', parent._path);\n validateFirebaseDataArg('push', value, parent._path, true);\n const now = repoServerTime(parent._repo);\n const name = nextPushId(now);\n // push() returns a ThennableReference whose promise is fulfilled with a\n // regular Reference. We use child() to create handles to two different\n // references. The first is turned into a ThennableReference below by adding\n // then() and catch() methods and is used as the return value of push(). The\n // second remains a regular Reference and is used as the fulfilled value of\n // the first ThennableReference.\n const thenablePushRef = child(parent, name);\n const pushRef = child(parent, name);\n let promise;\n if (value != null) {\n promise = set(pushRef, value).then(() => pushRef);\n }\n else {\n promise = Promise.resolve(pushRef);\n }\n thenablePushRef.then = promise.then.bind(promise);\n thenablePushRef.catch = promise.then.bind(promise, undefined);\n return thenablePushRef;\n}\n/**\n * Removes the data at this Database location.\n *\n * Any data at child locations will also be deleted.\n *\n * The effect of the remove will be visible immediately and the corresponding\n * event 'value' will be triggered. Synchronization of the remove to the\n * Firebase servers will also be started, and the returned Promise will resolve\n * when complete. If provided, the onComplete callback will be called\n * asynchronously after synchronization has finished.\n *\n * @param ref - The location to remove.\n * @returns Resolves when remove on server is complete.\n */\nfunction remove(ref) {\n validateWritablePath('remove', ref._path);\n return set(ref, null);\n}\n/**\n * Writes data to this Database location.\n *\n * This will overwrite any data at this location and all child locations.\n *\n * The effect of the write will be visible immediately, and the corresponding\n * events (\"value\", \"child_added\", etc.) will be triggered. Synchronization of\n * the data to the Firebase servers will also be started, and the returned\n * Promise will resolve when complete. If provided, the `onComplete` callback\n * will be called asynchronously after synchronization has finished.\n *\n * Passing `null` for the new value is equivalent to calling `remove()`; namely,\n * all data at this location and all child locations will be deleted.\n *\n * `set()` will remove any priority stored at this location, so if priority is\n * meant to be preserved, you need to use `setWithPriority()` instead.\n *\n * Note that modifying data with `set()` will cancel any pending transactions\n * at that location, so extreme care should be taken if mixing `set()` and\n * `transaction()` to modify the same data.\n *\n * A single `set()` will generate a single \"value\" event at the location where\n * the `set()` was performed.\n *\n * @param ref - The location to write to.\n * @param value - The value to be written (string, number, boolean, object,\n * array, or null).\n * @returns Resolves when write to server is complete.\n */\nfunction set(ref, value) {\n ref = getModularInstance(ref);\n validateWritablePath('set', ref._path);\n validateFirebaseDataArg('set', value, ref._path, false);\n const deferred = new Deferred();\n repoSetWithPriority(ref._repo, ref._path, value, \n /*priority=*/ null, deferred.wrapCallback(() => { }));\n return deferred.promise;\n}\n/**\n * Sets a priority for the data at this Database location.\n *\n * Applications need not use priority but can order collections by\n * ordinary properties (see\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#sorting_and_filtering_data | Sorting and filtering data}\n * ).\n *\n * @param ref - The location to write to.\n * @param priority - The priority to be written (string, number, or null).\n * @returns Resolves when write to server is complete.\n */\nfunction setPriority(ref, priority) {\n ref = getModularInstance(ref);\n validateWritablePath('setPriority', ref._path);\n validatePriority('setPriority', priority, false);\n const deferred = new Deferred();\n repoSetWithPriority(ref._repo, pathChild(ref._path, '.priority'), priority, null, deferred.wrapCallback(() => { }));\n return deferred.promise;\n}\n/**\n * Writes data the Database location. Like `set()` but also specifies the\n * priority for that data.\n *\n * Applications need not use priority but can order collections by\n * ordinary properties (see\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#sorting_and_filtering_data | Sorting and filtering data}\n * ).\n *\n * @param ref - The location to write to.\n * @param value - The value to be written (string, number, boolean, object,\n * array, or null).\n * @param priority - The priority to be written (string, number, or null).\n * @returns Resolves when write to server is complete.\n */\nfunction setWithPriority(ref, value, priority) {\n validateWritablePath('setWithPriority', ref._path);\n validateFirebaseDataArg('setWithPriority', value, ref._path, false);\n validatePriority('setWithPriority', priority, false);\n if (ref.key === '.length' || ref.key === '.keys') {\n throw 'setWithPriority failed: ' + ref.key + ' is a read-only object.';\n }\n const deferred = new Deferred();\n repoSetWithPriority(ref._repo, ref._path, value, priority, deferred.wrapCallback(() => { }));\n return deferred.promise;\n}\n/**\n * Writes multiple values to the Database at once.\n *\n * The `values` argument contains multiple property-value pairs that will be\n * written to the Database together. Each child property can either be a simple\n * property (for example, \"name\") or a relative path (for example,\n * \"name/first\") from the current location to the data to update.\n *\n * As opposed to the `set()` method, `update()` can be use to selectively update\n * only the referenced properties at the current location (instead of replacing\n * all the child properties at the current location).\n *\n * The effect of the write will be visible immediately, and the corresponding\n * events ('value', 'child_added', etc.) will be triggered. Synchronization of\n * the data to the Firebase servers will also be started, and the returned\n * Promise will resolve when complete. If provided, the `onComplete` callback\n * will be called asynchronously after synchronization has finished.\n *\n * A single `update()` will generate a single \"value\" event at the location\n * where the `update()` was performed, regardless of how many children were\n * modified.\n *\n * Note that modifying data with `update()` will cancel any pending\n * transactions at that location, so extreme care should be taken if mixing\n * `update()` and `transaction()` to modify the same data.\n *\n * Passing `null` to `update()` will remove the data at this location.\n *\n * See\n * {@link https://firebase.googleblog.com/2015/09/introducing-multi-location-updates-and_86.html | Introducing multi-location updates and more}.\n *\n * @param ref - The location to write to.\n * @param values - Object containing multiple values.\n * @returns Resolves when update on server is complete.\n */\nfunction update(ref, values) {\n validateFirebaseMergeDataArg('update', values, ref._path, false);\n const deferred = new Deferred();\n repoUpdate(ref._repo, ref._path, values, deferred.wrapCallback(() => { }));\n return deferred.promise;\n}\n/**\n * Gets the most up-to-date result for this query.\n *\n * @param query - The query to run.\n * @returns A `Promise` which resolves to the resulting DataSnapshot if a value is\n * available, or rejects if the client is unable to return a value (e.g., if the\n * server is unreachable and there is nothing cached).\n */\nfunction get(query) {\n query = getModularInstance(query);\n const callbackContext = new CallbackContext(() => { });\n const container = new ValueEventRegistration(callbackContext);\n return repoGetValue(query._repo, query, container).then(node => {\n return new DataSnapshot(node, new ReferenceImpl(query._repo, query._path), query._queryParams.getIndex());\n });\n}\n/**\n * Represents registration for 'value' events.\n */\nclass ValueEventRegistration {\n constructor(callbackContext) {\n this.callbackContext = callbackContext;\n }\n respondsTo(eventType) {\n return eventType === 'value';\n }\n createEvent(change, query) {\n const index = query._queryParams.getIndex();\n return new DataEvent('value', this, new DataSnapshot(change.snapshotNode, new ReferenceImpl(query._repo, query._path), index));\n }\n getEventRunner(eventData) {\n if (eventData.getEventType() === 'cancel') {\n return () => this.callbackContext.onCancel(eventData.error);\n }\n else {\n return () => this.callbackContext.onValue(eventData.snapshot, null);\n }\n }\n createCancelEvent(error, path) {\n if (this.callbackContext.hasCancelCallback) {\n return new CancelEvent(this, error, path);\n }\n else {\n return null;\n }\n }\n matches(other) {\n if (!(other instanceof ValueEventRegistration)) {\n return false;\n }\n else if (!other.callbackContext || !this.callbackContext) {\n // If no callback specified, we consider it to match any callback.\n return true;\n }\n else {\n return other.callbackContext.matches(this.callbackContext);\n }\n }\n hasAnyCallback() {\n return this.callbackContext !== null;\n }\n}\n/**\n * Represents the registration of a child_x event.\n */\nclass ChildEventRegistration {\n constructor(eventType, callbackContext) {\n this.eventType = eventType;\n this.callbackContext = callbackContext;\n }\n respondsTo(eventType) {\n let eventToCheck = eventType === 'children_added' ? 'child_added' : eventType;\n eventToCheck =\n eventToCheck === 'children_removed' ? 'child_removed' : eventToCheck;\n return this.eventType === eventToCheck;\n }\n createCancelEvent(error, path) {\n if (this.callbackContext.hasCancelCallback) {\n return new CancelEvent(this, error, path);\n }\n else {\n return null;\n }\n }\n createEvent(change, query) {\n assert(change.childName != null, 'Child events should have a childName.');\n const childRef = child(new ReferenceImpl(query._repo, query._path), change.childName);\n const index = query._queryParams.getIndex();\n return new DataEvent(change.type, this, new DataSnapshot(change.snapshotNode, childRef, index), change.prevName);\n }\n getEventRunner(eventData) {\n if (eventData.getEventType() === 'cancel') {\n return () => this.callbackContext.onCancel(eventData.error);\n }\n else {\n return () => this.callbackContext.onValue(eventData.snapshot, eventData.prevName);\n }\n }\n matches(other) {\n if (other instanceof ChildEventRegistration) {\n return (this.eventType === other.eventType &&\n (!this.callbackContext ||\n !other.callbackContext ||\n this.callbackContext.matches(other.callbackContext)));\n }\n return false;\n }\n hasAnyCallback() {\n return !!this.callbackContext;\n }\n}\nfunction addEventListener(query, eventType, callback, cancelCallbackOrListenOptions, options) {\n let cancelCallback;\n if (typeof cancelCallbackOrListenOptions === 'object') {\n cancelCallback = undefined;\n options = cancelCallbackOrListenOptions;\n }\n if (typeof cancelCallbackOrListenOptions === 'function') {\n cancelCallback = cancelCallbackOrListenOptions;\n }\n if (options && options.onlyOnce) {\n const userCallback = callback;\n const onceCallback = (dataSnapshot, previousChildName) => {\n repoRemoveEventCallbackForQuery(query._repo, query, container);\n userCallback(dataSnapshot, previousChildName);\n };\n onceCallback.userCallback = callback.userCallback;\n onceCallback.context = callback.context;\n callback = onceCallback;\n }\n const callbackContext = new CallbackContext(callback, cancelCallback || undefined);\n const container = eventType === 'value'\n ? new ValueEventRegistration(callbackContext)\n : new ChildEventRegistration(eventType, callbackContext);\n repoAddEventCallbackForQuery(query._repo, query, container);\n return () => repoRemoveEventCallbackForQuery(query._repo, query, container);\n}\nfunction onValue(query, callback, cancelCallbackOrListenOptions, options) {\n return addEventListener(query, 'value', callback, cancelCallbackOrListenOptions, options);\n}\nfunction onChildAdded(query, callback, cancelCallbackOrListenOptions, options) {\n return addEventListener(query, 'child_added', callback, cancelCallbackOrListenOptions, options);\n}\nfunction onChildChanged(query, callback, cancelCallbackOrListenOptions, options) {\n return addEventListener(query, 'child_changed', callback, cancelCallbackOrListenOptions, options);\n}\nfunction onChildMoved(query, callback, cancelCallbackOrListenOptions, options) {\n return addEventListener(query, 'child_moved', callback, cancelCallbackOrListenOptions, options);\n}\nfunction onChildRemoved(query, callback, cancelCallbackOrListenOptions, options) {\n return addEventListener(query, 'child_removed', callback, cancelCallbackOrListenOptions, options);\n}\n/**\n * Detaches a callback previously attached with the corresponding `on*()` (`onValue`, `onChildAdded`) listener.\n * Note: This is not the recommended way to remove a listener. Instead, please use the returned callback function from\n * the respective `on*` callbacks.\n *\n * Detach a callback previously attached with `on*()`. Calling `off()` on a parent listener\n * will not automatically remove listeners registered on child nodes, `off()`\n * must also be called on any child listeners to remove the callback.\n *\n * If a callback is not specified, all callbacks for the specified eventType\n * will be removed. Similarly, if no eventType is specified, all callbacks\n * for the `Reference` will be removed.\n *\n * Individual listeners can also be removed by invoking their unsubscribe\n * callbacks.\n *\n * @param query - The query that the listener was registered with.\n * @param eventType - One of the following strings: \"value\", \"child_added\",\n * \"child_changed\", \"child_removed\", or \"child_moved.\" If omitted, all callbacks\n * for the `Reference` will be removed.\n * @param callback - The callback function that was passed to `on()` or\n * `undefined` to remove all callbacks.\n */\nfunction off(query, eventType, callback) {\n let container = null;\n const expCallback = callback ? new CallbackContext(callback) : null;\n if (eventType === 'value') {\n container = new ValueEventRegistration(expCallback);\n }\n else if (eventType) {\n container = new ChildEventRegistration(eventType, expCallback);\n }\n repoRemoveEventCallbackForQuery(query._repo, query, container);\n}\n/**\n * A `QueryConstraint` is used to narrow the set of documents returned by a\n * Database query. `QueryConstraint`s are created by invoking {@link endAt},\n * {@link endBefore}, {@link startAt}, {@link startAfter}, {@link\n * limitToFirst}, {@link limitToLast}, {@link orderByChild},\n * {@link orderByChild}, {@link orderByKey} , {@link orderByPriority} ,\n * {@link orderByValue} or {@link equalTo} and\n * can then be passed to {@link query} to create a new query instance that\n * also contains this `QueryConstraint`.\n */\nclass QueryConstraint {\n}\nclass QueryEndAtConstraint extends QueryConstraint {\n constructor(_value, _key) {\n super();\n this._value = _value;\n this._key = _key;\n this.type = 'endAt';\n }\n _apply(query) {\n validateFirebaseDataArg('endAt', this._value, query._path, true);\n const newParams = queryParamsEndAt(query._queryParams, this._value, this._key);\n validateLimit(newParams);\n validateQueryEndpoints(newParams);\n if (query._queryParams.hasEnd()) {\n throw new Error('endAt: Starting point was already set (by another call to endAt, ' +\n 'endBefore or equalTo).');\n }\n return new QueryImpl(query._repo, query._path, newParams, query._orderByCalled);\n }\n}\n/**\n * Creates a `QueryConstraint` with the specified ending point.\n *\n * Using `startAt()`, `startAfter()`, `endBefore()`, `endAt()` and `equalTo()`\n * allows you to choose arbitrary starting and ending points for your queries.\n *\n * The ending point is inclusive, so children with exactly the specified value\n * will be included in the query. The optional key argument can be used to\n * further limit the range of the query. If it is specified, then children that\n * have exactly the specified value must also have a key name less than or equal\n * to the specified key.\n *\n * You can read more about `endAt()` in\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#filtering_data | Filtering data}.\n *\n * @param value - The value to end at. The argument type depends on which\n * `orderBy*()` function was used in this query. Specify a value that matches\n * the `orderBy*()` type. When used in combination with `orderByKey()`, the\n * value must be a string.\n * @param key - The child key to end at, among the children with the previously\n * specified priority. This argument is only allowed if ordering by child,\n * value, or priority.\n */\nfunction endAt(value, key) {\n validateKey('endAt', 'key', key, true);\n return new QueryEndAtConstraint(value, key);\n}\nclass QueryEndBeforeConstraint extends QueryConstraint {\n constructor(_value, _key) {\n super();\n this._value = _value;\n this._key = _key;\n this.type = 'endBefore';\n }\n _apply(query) {\n validateFirebaseDataArg('endBefore', this._value, query._path, false);\n const newParams = queryParamsEndBefore(query._queryParams, this._value, this._key);\n validateLimit(newParams);\n validateQueryEndpoints(newParams);\n if (query._queryParams.hasEnd()) {\n throw new Error('endBefore: Starting point was already set (by another call to endAt, ' +\n 'endBefore or equalTo).');\n }\n return new QueryImpl(query._repo, query._path, newParams, query._orderByCalled);\n }\n}\n/**\n * Creates a `QueryConstraint` with the specified ending point (exclusive).\n *\n * Using `startAt()`, `startAfter()`, `endBefore()`, `endAt()` and `equalTo()`\n * allows you to choose arbitrary starting and ending points for your queries.\n *\n * The ending point is exclusive. If only a value is provided, children\n * with a value less than the specified value will be included in the query.\n * If a key is specified, then children must have a value less than or equal\n * to the specified value and a key name less than the specified key.\n *\n * @param value - The value to end before. The argument type depends on which\n * `orderBy*()` function was used in this query. Specify a value that matches\n * the `orderBy*()` type. When used in combination with `orderByKey()`, the\n * value must be a string.\n * @param key - The child key to end before, among the children with the\n * previously specified priority. This argument is only allowed if ordering by\n * child, value, or priority.\n */\nfunction endBefore(value, key) {\n validateKey('endBefore', 'key', key, true);\n return new QueryEndBeforeConstraint(value, key);\n}\nclass QueryStartAtConstraint extends QueryConstraint {\n constructor(_value, _key) {\n super();\n this._value = _value;\n this._key = _key;\n this.type = 'startAt';\n }\n _apply(query) {\n validateFirebaseDataArg('startAt', this._value, query._path, true);\n const newParams = queryParamsStartAt(query._queryParams, this._value, this._key);\n validateLimit(newParams);\n validateQueryEndpoints(newParams);\n if (query._queryParams.hasStart()) {\n throw new Error('startAt: Starting point was already set (by another call to startAt, ' +\n 'startBefore or equalTo).');\n }\n return new QueryImpl(query._repo, query._path, newParams, query._orderByCalled);\n }\n}\n/**\n * Creates a `QueryConstraint` with the specified starting point.\n *\n * Using `startAt()`, `startAfter()`, `endBefore()`, `endAt()` and `equalTo()`\n * allows you to choose arbitrary starting and ending points for your queries.\n *\n * The starting point is inclusive, so children with exactly the specified value\n * will be included in the query. The optional key argument can be used to\n * further limit the range of the query. If it is specified, then children that\n * have exactly the specified value must also have a key name greater than or\n * equal to the specified key.\n *\n * You can read more about `startAt()` in\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#filtering_data | Filtering data}.\n *\n * @param value - The value to start at. The argument type depends on which\n * `orderBy*()` function was used in this query. Specify a value that matches\n * the `orderBy*()` type. When used in combination with `orderByKey()`, the\n * value must be a string.\n * @param key - The child key to start at. This argument is only allowed if\n * ordering by child, value, or priority.\n */\nfunction startAt(value = null, key) {\n validateKey('startAt', 'key', key, true);\n return new QueryStartAtConstraint(value, key);\n}\nclass QueryStartAfterConstraint extends QueryConstraint {\n constructor(_value, _key) {\n super();\n this._value = _value;\n this._key = _key;\n this.type = 'startAfter';\n }\n _apply(query) {\n validateFirebaseDataArg('startAfter', this._value, query._path, false);\n const newParams = queryParamsStartAfter(query._queryParams, this._value, this._key);\n validateLimit(newParams);\n validateQueryEndpoints(newParams);\n if (query._queryParams.hasStart()) {\n throw new Error('startAfter: Starting point was already set (by another call to startAt, ' +\n 'startAfter, or equalTo).');\n }\n return new QueryImpl(query._repo, query._path, newParams, query._orderByCalled);\n }\n}\n/**\n * Creates a `QueryConstraint` with the specified starting point (exclusive).\n *\n * Using `startAt()`, `startAfter()`, `endBefore()`, `endAt()` and `equalTo()`\n * allows you to choose arbitrary starting and ending points for your queries.\n *\n * The starting point is exclusive. If only a value is provided, children\n * with a value greater than the specified value will be included in the query.\n * If a key is specified, then children must have a value greater than or equal\n * to the specified value and a a key name greater than the specified key.\n *\n * @param value - The value to start after. The argument type depends on which\n * `orderBy*()` function was used in this query. Specify a value that matches\n * the `orderBy*()` type. When used in combination with `orderByKey()`, the\n * value must be a string.\n * @param key - The child key to start after. This argument is only allowed if\n * ordering by child, value, or priority.\n */\nfunction startAfter(value, key) {\n validateKey('startAfter', 'key', key, true);\n return new QueryStartAfterConstraint(value, key);\n}\nclass QueryLimitToFirstConstraint extends QueryConstraint {\n constructor(_limit) {\n super();\n this._limit = _limit;\n this.type = 'limitToFirst';\n }\n _apply(query) {\n if (query._queryParams.hasLimit()) {\n throw new Error('limitToFirst: Limit was already set (by another call to limitToFirst ' +\n 'or limitToLast).');\n }\n return new QueryImpl(query._repo, query._path, queryParamsLimitToFirst(query._queryParams, this._limit), query._orderByCalled);\n }\n}\n/**\n * Creates a new `QueryConstraint` that if limited to the first specific number\n * of children.\n *\n * The `limitToFirst()` method is used to set a maximum number of children to be\n * synced for a given callback. If we set a limit of 100, we will initially only\n * receive up to 100 `child_added` events. If we have fewer than 100 messages\n * stored in our Database, a `child_added` event will fire for each message.\n * However, if we have over 100 messages, we will only receive a `child_added`\n * event for the first 100 ordered messages. As items change, we will receive\n * `child_removed` events for each item that drops out of the active list so\n * that the total number stays at 100.\n *\n * You can read more about `limitToFirst()` in\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#filtering_data | Filtering data}.\n *\n * @param limit - The maximum number of nodes to include in this query.\n */\nfunction limitToFirst(limit) {\n if (typeof limit !== 'number' || Math.floor(limit) !== limit || limit <= 0) {\n throw new Error('limitToFirst: First argument must be a positive integer.');\n }\n return new QueryLimitToFirstConstraint(limit);\n}\nclass QueryLimitToLastConstraint extends QueryConstraint {\n constructor(_limit) {\n super();\n this._limit = _limit;\n this.type = 'limitToLast';\n }\n _apply(query) {\n if (query._queryParams.hasLimit()) {\n throw new Error('limitToLast: Limit was already set (by another call to limitToFirst ' +\n 'or limitToLast).');\n }\n return new QueryImpl(query._repo, query._path, queryParamsLimitToLast(query._queryParams, this._limit), query._orderByCalled);\n }\n}\n/**\n * Creates a new `QueryConstraint` that is limited to return only the last\n * specified number of children.\n *\n * The `limitToLast()` method is used to set a maximum number of children to be\n * synced for a given callback. If we set a limit of 100, we will initially only\n * receive up to 100 `child_added` events. If we have fewer than 100 messages\n * stored in our Database, a `child_added` event will fire for each message.\n * However, if we have over 100 messages, we will only receive a `child_added`\n * event for the last 100 ordered messages. As items change, we will receive\n * `child_removed` events for each item that drops out of the active list so\n * that the total number stays at 100.\n *\n * You can read more about `limitToLast()` in\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#filtering_data | Filtering data}.\n *\n * @param limit - The maximum number of nodes to include in this query.\n */\nfunction limitToLast(limit) {\n if (typeof limit !== 'number' || Math.floor(limit) !== limit || limit <= 0) {\n throw new Error('limitToLast: First argument must be a positive integer.');\n }\n return new QueryLimitToLastConstraint(limit);\n}\nclass QueryOrderByChildConstraint extends QueryConstraint {\n constructor(_path) {\n super();\n this._path = _path;\n this.type = 'orderByChild';\n }\n _apply(query) {\n validateNoPreviousOrderByCall(query, 'orderByChild');\n const parsedPath = new Path(this._path);\n if (pathIsEmpty(parsedPath)) {\n throw new Error('orderByChild: cannot pass in empty path. Use orderByValue() instead.');\n }\n const index = new PathIndex(parsedPath);\n const newParams = queryParamsOrderBy(query._queryParams, index);\n validateQueryEndpoints(newParams);\n return new QueryImpl(query._repo, query._path, newParams, \n /*orderByCalled=*/ true);\n }\n}\n/**\n * Creates a new `QueryConstraint` that orders by the specified child key.\n *\n * Queries can only order by one key at a time. Calling `orderByChild()`\n * multiple times on the same query is an error.\n *\n * Firebase queries allow you to order your data by any child key on the fly.\n * However, if you know in advance what your indexes will be, you can define\n * them via the .indexOn rule in your Security Rules for better performance. See\n * the{@link https://firebase.google.com/docs/database/security/indexing-data}\n * rule for more information.\n *\n * You can read more about `orderByChild()` in\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#sort_data | Sort data}.\n *\n * @param path - The path to order by.\n */\nfunction orderByChild(path) {\n if (path === '$key') {\n throw new Error('orderByChild: \"$key\" is invalid. Use orderByKey() instead.');\n }\n else if (path === '$priority') {\n throw new Error('orderByChild: \"$priority\" is invalid. Use orderByPriority() instead.');\n }\n else if (path === '$value') {\n throw new Error('orderByChild: \"$value\" is invalid. Use orderByValue() instead.');\n }\n validatePathString('orderByChild', 'path', path, false);\n return new QueryOrderByChildConstraint(path);\n}\nclass QueryOrderByKeyConstraint extends QueryConstraint {\n constructor() {\n super(...arguments);\n this.type = 'orderByKey';\n }\n _apply(query) {\n validateNoPreviousOrderByCall(query, 'orderByKey');\n const newParams = queryParamsOrderBy(query._queryParams, KEY_INDEX);\n validateQueryEndpoints(newParams);\n return new QueryImpl(query._repo, query._path, newParams, \n /*orderByCalled=*/ true);\n }\n}\n/**\n * Creates a new `QueryConstraint` that orders by the key.\n *\n * Sorts the results of a query by their (ascending) key values.\n *\n * You can read more about `orderByKey()` in\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#sort_data | Sort data}.\n */\nfunction orderByKey() {\n return new QueryOrderByKeyConstraint();\n}\nclass QueryOrderByPriorityConstraint extends QueryConstraint {\n constructor() {\n super(...arguments);\n this.type = 'orderByPriority';\n }\n _apply(query) {\n validateNoPreviousOrderByCall(query, 'orderByPriority');\n const newParams = queryParamsOrderBy(query._queryParams, PRIORITY_INDEX);\n validateQueryEndpoints(newParams);\n return new QueryImpl(query._repo, query._path, newParams, \n /*orderByCalled=*/ true);\n }\n}\n/**\n * Creates a new `QueryConstraint` that orders by priority.\n *\n * Applications need not use priority but can order collections by\n * ordinary properties (see\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#sort_data | Sort data}\n * for alternatives to priority.\n */\nfunction orderByPriority() {\n return new QueryOrderByPriorityConstraint();\n}\nclass QueryOrderByValueConstraint extends QueryConstraint {\n constructor() {\n super(...arguments);\n this.type = 'orderByValue';\n }\n _apply(query) {\n validateNoPreviousOrderByCall(query, 'orderByValue');\n const newParams = queryParamsOrderBy(query._queryParams, VALUE_INDEX);\n validateQueryEndpoints(newParams);\n return new QueryImpl(query._repo, query._path, newParams, \n /*orderByCalled=*/ true);\n }\n}\n/**\n * Creates a new `QueryConstraint` that orders by value.\n *\n * If the children of a query are all scalar values (string, number, or\n * boolean), you can order the results by their (ascending) values.\n *\n * You can read more about `orderByValue()` in\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#sort_data | Sort data}.\n */\nfunction orderByValue() {\n return new QueryOrderByValueConstraint();\n}\nclass QueryEqualToValueConstraint extends QueryConstraint {\n constructor(_value, _key) {\n super();\n this._value = _value;\n this._key = _key;\n this.type = 'equalTo';\n }\n _apply(query) {\n validateFirebaseDataArg('equalTo', this._value, query._path, false);\n if (query._queryParams.hasStart()) {\n throw new Error('equalTo: Starting point was already set (by another call to startAt/startAfter or ' +\n 'equalTo).');\n }\n if (query._queryParams.hasEnd()) {\n throw new Error('equalTo: Ending point was already set (by another call to endAt/endBefore or ' +\n 'equalTo).');\n }\n return new QueryEndAtConstraint(this._value, this._key)._apply(new QueryStartAtConstraint(this._value, this._key)._apply(query));\n }\n}\n/**\n * Creates a `QueryConstraint` that includes children that match the specified\n * value.\n *\n * Using `startAt()`, `startAfter()`, `endBefore()`, `endAt()` and `equalTo()`\n * allows you to choose arbitrary starting and ending points for your queries.\n *\n * The optional key argument can be used to further limit the range of the\n * query. If it is specified, then children that have exactly the specified\n * value must also have exactly the specified key as their key name. This can be\n * used to filter result sets with many matches for the same value.\n *\n * You can read more about `equalTo()` in\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#filtering_data | Filtering data}.\n *\n * @param value - The value to match for. The argument type depends on which\n * `orderBy*()` function was used in this query. Specify a value that matches\n * the `orderBy*()` type. When used in combination with `orderByKey()`, the\n * value must be a string.\n * @param key - The child key to start at, among the children with the\n * previously specified priority. This argument is only allowed if ordering by\n * child, value, or priority.\n */\nfunction equalTo(value, key) {\n validateKey('equalTo', 'key', key, true);\n return new QueryEqualToValueConstraint(value, key);\n}\n/**\n * Creates a new immutable instance of `Query` that is extended to also include\n * additional query constraints.\n *\n * @param query - The Query instance to use as a base for the new constraints.\n * @param queryConstraints - The list of `QueryConstraint`s to apply.\n * @throws if any of the provided query constraints cannot be combined with the\n * existing or new constraints.\n */\nfunction query(query, ...queryConstraints) {\n let queryImpl = getModularInstance(query);\n for (const constraint of queryConstraints) {\n queryImpl = constraint._apply(queryImpl);\n }\n return queryImpl;\n}\n/**\n * Define reference constructor in various modules\n *\n * We are doing this here to avoid several circular\n * dependency issues\n */\nsyncPointSetReferenceConstructor(ReferenceImpl);\nsyncTreeSetReferenceConstructor(ReferenceImpl);\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * This variable is also defined in the firebase Node.js Admin SDK. Before\n * modifying this definition, consult the definition in:\n *\n * https://github.com/firebase/firebase-admin-node\n *\n * and make sure the two are consistent.\n */\nconst FIREBASE_DATABASE_EMULATOR_HOST_VAR = 'FIREBASE_DATABASE_EMULATOR_HOST';\n/**\n * Creates and caches `Repo` instances.\n */\nconst repos = {};\n/**\n * If true, any new `Repo` will be created to use `ReadonlyRestClient` (for testing purposes).\n */\nlet useRestClient = false;\n/**\n * Update an existing `Repo` in place to point to a new host/port.\n */\nfunction repoManagerApplyEmulatorSettings(repo, host, port, tokenProvider) {\n repo.repoInfo_ = new RepoInfo(`${host}:${port}`, \n /* secure= */ false, repo.repoInfo_.namespace, repo.repoInfo_.webSocketOnly, repo.repoInfo_.nodeAdmin, repo.repoInfo_.persistenceKey, repo.repoInfo_.includeNamespaceInQueryParams, \n /*isUsingEmulator=*/ true);\n if (tokenProvider) {\n repo.authTokenProvider_ = tokenProvider;\n }\n}\n/**\n * This function should only ever be called to CREATE a new database instance.\n * @internal\n */\nfunction repoManagerDatabaseFromApp(app, authProvider, appCheckProvider, url, nodeAdmin) {\n let dbUrl = url || app.options.databaseURL;\n if (dbUrl === undefined) {\n if (!app.options.projectId) {\n fatal(\"Can't determine Firebase Database URL. Be sure to include \" +\n ' a Project ID when calling firebase.initializeApp().');\n }\n log('Using default host for project ', app.options.projectId);\n dbUrl = `${app.options.projectId}-default-rtdb.firebaseio.com`;\n }\n let parsedUrl = parseRepoInfo(dbUrl, nodeAdmin);\n let repoInfo = parsedUrl.repoInfo;\n let isEmulator;\n let dbEmulatorHost = undefined;\n if (typeof process !== 'undefined' && process.env) {\n dbEmulatorHost = process.env[FIREBASE_DATABASE_EMULATOR_HOST_VAR];\n }\n if (dbEmulatorHost) {\n isEmulator = true;\n dbUrl = `http://${dbEmulatorHost}?ns=${repoInfo.namespace}`;\n parsedUrl = parseRepoInfo(dbUrl, nodeAdmin);\n repoInfo = parsedUrl.repoInfo;\n }\n else {\n isEmulator = !parsedUrl.repoInfo.secure;\n }\n const authTokenProvider = nodeAdmin && isEmulator\n ? new EmulatorTokenProvider(EmulatorTokenProvider.OWNER)\n : new FirebaseAuthTokenProvider(app.name, app.options, authProvider);\n validateUrl('Invalid Firebase Database URL', parsedUrl);\n if (!pathIsEmpty(parsedUrl.path)) {\n fatal('Database URL must point to the root of a Firebase Database ' +\n '(not including a child path).');\n }\n const repo = repoManagerCreateRepo(repoInfo, app, authTokenProvider, new AppCheckTokenProvider(app.name, appCheckProvider));\n return new Database(repo, app);\n}\n/**\n * Remove the repo and make sure it is disconnected.\n *\n */\nfunction repoManagerDeleteRepo(repo, appName) {\n const appRepos = repos[appName];\n // This should never happen...\n if (!appRepos || appRepos[repo.key] !== repo) {\n fatal(`Database ${appName}(${repo.repoInfo_}) has already been deleted.`);\n }\n repoInterrupt(repo);\n delete appRepos[repo.key];\n}\n/**\n * Ensures a repo doesn't already exist and then creates one using the\n * provided app.\n *\n * @param repoInfo - The metadata about the Repo\n * @returns The Repo object for the specified server / repoName.\n */\nfunction repoManagerCreateRepo(repoInfo, app, authTokenProvider, appCheckProvider) {\n let appRepos = repos[app.name];\n if (!appRepos) {\n appRepos = {};\n repos[app.name] = appRepos;\n }\n let repo = appRepos[repoInfo.toURLString()];\n if (repo) {\n fatal('Database initialized multiple times. Please make sure the format of the database URL matches with each database() call.');\n }\n repo = new Repo(repoInfo, useRestClient, authTokenProvider, appCheckProvider);\n appRepos[repoInfo.toURLString()] = repo;\n return repo;\n}\n/**\n * Forces us to use ReadonlyRestClient instead of PersistentConnection for new Repos.\n */\nfunction repoManagerForceRestClient(forceRestClient) {\n useRestClient = forceRestClient;\n}\n/**\n * Class representing a Firebase Realtime Database.\n */\nclass Database {\n /** @hideconstructor */\n constructor(_repoInternal, \n /** The {@link @firebase/app#FirebaseApp} associated with this Realtime Database instance. */\n app) {\n this._repoInternal = _repoInternal;\n this.app = app;\n /** Represents a `Database` instance. */\n this['type'] = 'database';\n /** Track if the instance has been used (root or repo accessed) */\n this._instanceStarted = false;\n }\n get _repo() {\n if (!this._instanceStarted) {\n repoStart(this._repoInternal, this.app.options.appId, this.app.options['databaseAuthVariableOverride']);\n this._instanceStarted = true;\n }\n return this._repoInternal;\n }\n get _root() {\n if (!this._rootInternal) {\n this._rootInternal = new ReferenceImpl(this._repo, newEmptyPath());\n }\n return this._rootInternal;\n }\n _delete() {\n if (this._rootInternal !== null) {\n repoManagerDeleteRepo(this._repo, this.app.name);\n this._repoInternal = null;\n this._rootInternal = null;\n }\n return Promise.resolve();\n }\n _checkNotDeleted(apiName) {\n if (this._rootInternal === null) {\n fatal('Cannot call ' + apiName + ' on a deleted database.');\n }\n }\n}\nfunction checkTransportInit() {\n if (TransportManager.IS_TRANSPORT_INITIALIZED) {\n warn('Transport has already been initialized. Please call this function before calling ref or setting up a listener');\n }\n}\n/**\n * Force the use of websockets instead of longPolling.\n */\nfunction forceWebSockets() {\n checkTransportInit();\n BrowserPollConnection.forceDisallow();\n}\n/**\n * Force the use of longPolling instead of websockets. This will be ignored if websocket protocol is used in databaseURL.\n */\nfunction forceLongPolling() {\n checkTransportInit();\n WebSocketConnection.forceDisallow();\n BrowserPollConnection.forceAllow();\n}\n/**\n * Returns the instance of the Realtime Database SDK that is associated with the provided\n * {@link @firebase/app#FirebaseApp}. Initializes a new instance with default settings if\n * no instance exists or if the existing instance uses a custom database URL.\n *\n * @param app - The {@link @firebase/app#FirebaseApp} instance that the returned Realtime\n * Database instance is associated with.\n * @param url - The URL of the Realtime Database instance to connect to. If not\n * provided, the SDK connects to the default instance of the Firebase App.\n * @returns The `Database` instance of the provided app.\n */\nfunction getDatabase(app = getApp(), url) {\n const db = _getProvider(app, 'database').getImmediate({\n identifier: url\n });\n if (!db._instanceStarted) {\n const emulator = getDefaultEmulatorHostnameAndPort('database');\n if (emulator) {\n connectDatabaseEmulator(db, ...emulator);\n }\n }\n return db;\n}\n/**\n * Modify the provided instance to communicate with the Realtime Database\n * emulator.\n *\n *

Note: This method must be called before performing any other operation.\n *\n * @param db - The instance to modify.\n * @param host - The emulator host (ex: localhost)\n * @param port - The emulator port (ex: 8080)\n * @param options.mockUserToken - the mock auth token to use for unit testing Security Rules\n */\nfunction connectDatabaseEmulator(db, host, port, options = {}) {\n db = getModularInstance(db);\n db._checkNotDeleted('useEmulator');\n if (db._instanceStarted) {\n fatal('Cannot call useEmulator() after instance has already been initialized.');\n }\n const repo = db._repoInternal;\n let tokenProvider = undefined;\n if (repo.repoInfo_.nodeAdmin) {\n if (options.mockUserToken) {\n fatal('mockUserToken is not supported by the Admin SDK. For client access with mock users, please use the \"firebase\" package instead of \"firebase-admin\".');\n }\n tokenProvider = new EmulatorTokenProvider(EmulatorTokenProvider.OWNER);\n }\n else if (options.mockUserToken) {\n const token = typeof options.mockUserToken === 'string'\n ? options.mockUserToken\n : createMockUserToken(options.mockUserToken, db.app.options.projectId);\n tokenProvider = new EmulatorTokenProvider(token);\n }\n // Modify the repo to apply emulator settings\n repoManagerApplyEmulatorSettings(repo, host, port, tokenProvider);\n}\n/**\n * Disconnects from the server (all Database operations will be completed\n * offline).\n *\n * The client automatically maintains a persistent connection to the Database\n * server, which will remain active indefinitely and reconnect when\n * disconnected. However, the `goOffline()` and `goOnline()` methods may be used\n * to control the client connection in cases where a persistent connection is\n * undesirable.\n *\n * While offline, the client will no longer receive data updates from the\n * Database. However, all Database operations performed locally will continue to\n * immediately fire events, allowing your application to continue behaving\n * normally. Additionally, each operation performed locally will automatically\n * be queued and retried upon reconnection to the Database server.\n *\n * To reconnect to the Database and begin receiving remote events, see\n * `goOnline()`.\n *\n * @param db - The instance to disconnect.\n */\nfunction goOffline(db) {\n db = getModularInstance(db);\n db._checkNotDeleted('goOffline');\n repoInterrupt(db._repo);\n}\n/**\n * Reconnects to the server and synchronizes the offline Database state\n * with the server state.\n *\n * This method should be used after disabling the active connection with\n * `goOffline()`. Once reconnected, the client will transmit the proper data\n * and fire the appropriate events so that your client \"catches up\"\n * automatically.\n *\n * @param db - The instance to reconnect.\n */\nfunction goOnline(db) {\n db = getModularInstance(db);\n db._checkNotDeleted('goOnline');\n repoResume(db._repo);\n}\nfunction enableLogging(logger, persistent) {\n enableLogging$1(logger, persistent);\n}\n\n/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction registerDatabase(variant) {\n setSDKVersion(SDK_VERSION$1);\n _registerComponent(new Component('database', (container, { instanceIdentifier: url }) => {\n const app = container.getProvider('app').getImmediate();\n const authProvider = container.getProvider('auth-internal');\n const appCheckProvider = container.getProvider('app-check-internal');\n return repoManagerDatabaseFromApp(app, authProvider, appCheckProvider, url);\n }, \"PUBLIC\" /* ComponentType.PUBLIC */).setMultipleInstances(true));\n registerVersion(name, version, variant);\n // BUILD_TARGET will be replaced by values like esm2017, cjs2017, etc during the compilation\n registerVersion(name, version, 'esm2017');\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst SERVER_TIMESTAMP = {\n '.sv': 'timestamp'\n};\n/**\n * Returns a placeholder value for auto-populating the current timestamp (time\n * since the Unix epoch, in milliseconds) as determined by the Firebase\n * servers.\n */\nfunction serverTimestamp() {\n return SERVER_TIMESTAMP;\n}\n/**\n * Returns a placeholder value that can be used to atomically increment the\n * current database value by the provided delta.\n *\n * @param delta - the amount to modify the current value atomically.\n * @returns A placeholder value for modifying data atomically server-side.\n */\nfunction increment(delta) {\n return {\n '.sv': {\n 'increment': delta\n }\n };\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A type for the resolve value of {@link runTransaction}.\n */\nclass TransactionResult {\n /** @hideconstructor */\n constructor(\n /** Whether the transaction was successfully committed. */\n committed, \n /** The resulting data snapshot. */\n snapshot) {\n this.committed = committed;\n this.snapshot = snapshot;\n }\n /** Returns a JSON-serializable representation of this object. */\n toJSON() {\n return { committed: this.committed, snapshot: this.snapshot.toJSON() };\n }\n}\n/**\n * Atomically modifies the data at this location.\n *\n * Atomically modify the data at this location. Unlike a normal `set()`, which\n * just overwrites the data regardless of its previous value, `runTransaction()` is\n * used to modify the existing value to a new value, ensuring there are no\n * conflicts with other clients writing to the same location at the same time.\n *\n * To accomplish this, you pass `runTransaction()` an update function which is\n * used to transform the current value into a new value. If another client\n * writes to the location before your new value is successfully written, your\n * update function will be called again with the new current value, and the\n * write will be retried. This will happen repeatedly until your write succeeds\n * without conflict or you abort the transaction by not returning a value from\n * your update function.\n *\n * Note: Modifying data with `set()` will cancel any pending transactions at\n * that location, so extreme care should be taken if mixing `set()` and\n * `runTransaction()` to update the same data.\n *\n * Note: When using transactions with Security and Firebase Rules in place, be\n * aware that a client needs `.read` access in addition to `.write` access in\n * order to perform a transaction. This is because the client-side nature of\n * transactions requires the client to read the data in order to transactionally\n * update it.\n *\n * @param ref - The location to atomically modify.\n * @param transactionUpdate - A developer-supplied function which will be passed\n * the current data stored at this location (as a JavaScript object). The\n * function should return the new value it would like written (as a JavaScript\n * object). If `undefined` is returned (i.e. you return with no arguments) the\n * transaction will be aborted and the data at this location will not be\n * modified.\n * @param options - An options object to configure transactions.\n * @returns A `Promise` that can optionally be used instead of the `onComplete`\n * callback to handle success and failure.\n */\nfunction runTransaction(ref, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntransactionUpdate, options) {\n var _a;\n ref = getModularInstance(ref);\n validateWritablePath('Reference.transaction', ref._path);\n if (ref.key === '.length' || ref.key === '.keys') {\n throw ('Reference.transaction failed: ' + ref.key + ' is a read-only object.');\n }\n const applyLocally = (_a = options === null || options === void 0 ? void 0 : options.applyLocally) !== null && _a !== void 0 ? _a : true;\n const deferred = new Deferred();\n const promiseComplete = (error, committed, node) => {\n let dataSnapshot = null;\n if (error) {\n deferred.reject(error);\n }\n else {\n dataSnapshot = new DataSnapshot(node, new ReferenceImpl(ref._repo, ref._path), PRIORITY_INDEX);\n deferred.resolve(new TransactionResult(committed, dataSnapshot));\n }\n };\n // Add a watch to make sure we get server updates.\n const unwatcher = onValue(ref, () => { });\n repoStartTransaction(ref._repo, ref._path, transactionUpdate, promiseComplete, unwatcher, applyLocally);\n return deferred.promise;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nPersistentConnection;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nPersistentConnection.prototype.simpleListen = function (pathString, onComplete) {\n this.sendRequest('q', { p: pathString }, onComplete);\n};\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nPersistentConnection.prototype.echo = function (data, onEcho) {\n this.sendRequest('echo', { d: data }, onEcho);\n};\n// RealTimeConnection properties that we use in tests.\nConnection;\n/**\n * @internal\n */\nconst hijackHash = function (newHash) {\n const oldPut = PersistentConnection.prototype.put;\n PersistentConnection.prototype.put = function (pathString, data, onComplete, hash) {\n if (hash !== undefined) {\n hash = newHash();\n }\n oldPut.call(this, pathString, data, onComplete, hash);\n };\n return function () {\n PersistentConnection.prototype.put = oldPut;\n };\n};\nRepoInfo;\n/**\n * Forces the RepoManager to create Repos that use ReadonlyRestClient instead of PersistentConnection.\n * @internal\n */\nconst forceRestClient = function (forceRestClient) {\n repoManagerForceRestClient(forceRestClient);\n};\n\n/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Used by console to create a database based on the app,\n * passed database URL and a custom auth implementation.\n * @internal\n * @param app - A valid FirebaseApp-like object\n * @param url - A valid Firebase databaseURL\n * @param version - custom version e.g. firebase-admin version\n * @param customAppCheckImpl - custom app check implementation\n * @param customAuthImpl - custom auth implementation\n */\nfunction _initStandalone({ app, url, version, customAuthImpl, customAppCheckImpl, nodeAdmin = false }) {\n setSDKVersion(version);\n /**\n * ComponentContainer('database-standalone') is just a placeholder that doesn't perform\n * any actual function.\n */\n const componentContainer = new ComponentContainer('database-standalone');\n const authProvider = new Provider('auth-internal', componentContainer);\n let appCheckProvider;\n if (customAppCheckImpl) {\n appCheckProvider = new Provider('app-check-internal', componentContainer);\n appCheckProvider.setComponent(new Component('app-check-internal', () => customAppCheckImpl, \"PRIVATE\" /* ComponentType.PRIVATE */));\n }\n authProvider.setComponent(new Component('auth-internal', () => customAuthImpl, \"PRIVATE\" /* ComponentType.PRIVATE */));\n return repoManagerDatabaseFromApp(app, authProvider, appCheckProvider, url, nodeAdmin);\n}\n\n/**\n * Firebase Realtime Database\n *\n * @packageDocumentation\n */\nregisterDatabase();\n\nexport { DataSnapshot, Database, OnDisconnect, QueryConstraint, TransactionResult, QueryImpl as _QueryImpl, QueryParams as _QueryParams, ReferenceImpl as _ReferenceImpl, forceRestClient as _TEST_ACCESS_forceRestClient, hijackHash as _TEST_ACCESS_hijackHash, _initStandalone, repoManagerDatabaseFromApp as _repoManagerDatabaseFromApp, setSDKVersion as _setSDKVersion, validatePathString as _validatePathString, validateWritablePath as _validateWritablePath, child, connectDatabaseEmulator, enableLogging, endAt, endBefore, equalTo, forceLongPolling, forceWebSockets, get, getDatabase, goOffline, goOnline, increment, limitToFirst, limitToLast, off, onChildAdded, onChildChanged, onChildMoved, onChildRemoved, onDisconnect, onValue, orderByChild, orderByKey, orderByPriority, orderByValue, push, query, ref, refFromURL, remove, runTransaction, serverTimestamp, set, setPriority, setWithPriority, startAfter, startAt, update };\n//# sourceMappingURL=index.esm2017.js.map\n","import { registerVersion } from '@firebase/app';\nexport * from '@firebase/app';\n\nvar name = \"firebase\";\nvar version = \"11.2.0\";\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nregisterVersion(name, version, 'app');\n//# sourceMappingURL=index.esm.js.map\n","import { initializeApp } from \"firebase/app\";\nimport { getDatabase } from \"firebase/database\";\n\nconst firebaseConfig = {\n apiKey: \"AIzaSyCHai6shnkLaXKVygmhPDYoD1hsIOJ-ePI\",\n authDomain: \"mutual-link-d70e6.firebaseapp.com\",\n databaseURL:\n \"https://mutual-link-d70e6-default-rtdb.asia-southeast1.firebasedatabase.app\",\n projectId: \"mutual-link-d70e6\",\n storageBucket: \"mutual-link-d70e6.firebasestorage.app\",\n messagingSenderId: \"719171955777\",\n appId: \"1:719171955777:web:6b87f16598d336bb116ac0\",\n};\n\n// Initialize Firebase\nconst app = initializeApp(firebaseConfig);\nexport const database = getDatabase(app);\n","/**\n * Codes used by the replica for rejecting a message.\n * See {@link https://sdk.dfinity.org/docs/interface-spec/#reject-codes | the interface spec}.\n */\nexport var ReplicaRejectCode;\n(function (ReplicaRejectCode) {\n ReplicaRejectCode[ReplicaRejectCode[\"SysFatal\"] = 1] = \"SysFatal\";\n ReplicaRejectCode[ReplicaRejectCode[\"SysTransient\"] = 2] = \"SysTransient\";\n ReplicaRejectCode[ReplicaRejectCode[\"DestinationInvalid\"] = 3] = \"DestinationInvalid\";\n ReplicaRejectCode[ReplicaRejectCode[\"CanisterReject\"] = 4] = \"CanisterReject\";\n ReplicaRejectCode[ReplicaRejectCode[\"CanisterError\"] = 5] = \"CanisterError\";\n})(ReplicaRejectCode || (ReplicaRejectCode = {}));\n//# sourceMappingURL=api.js.map","const alphabet = 'abcdefghijklmnopqrstuvwxyz234567';\n// Build a lookup table for decoding.\nconst lookupTable = Object.create(null);\nfor (let i = 0; i < alphabet.length; i++) {\n lookupTable[alphabet[i]] = i;\n}\n// Add aliases for rfc4648.\nlookupTable['0'] = lookupTable.o;\nlookupTable['1'] = lookupTable.i;\n/**\n * @param input The input array to encode.\n * @returns A Base32 string encoding the input.\n */\nexport function encode(input) {\n // How many bits will we skip from the first byte.\n let skip = 0;\n // 5 high bits, carry from one byte to the next.\n let bits = 0;\n // The output string in base32.\n let output = '';\n function encodeByte(byte) {\n if (skip < 0) {\n // we have a carry from the previous byte\n bits |= byte >> -skip;\n }\n else {\n // no carry\n bits = (byte << skip) & 248;\n }\n if (skip > 3) {\n // Not enough data to produce a character, get us another one\n skip -= 8;\n return 1;\n }\n if (skip < 4) {\n // produce a character\n output += alphabet[bits >> 3];\n skip += 5;\n }\n return 0;\n }\n for (let i = 0; i < input.length;) {\n i += encodeByte(input[i]);\n }\n return output + (skip < 0 ? alphabet[bits >> 3] : '');\n}\n/**\n * @param input The base32 encoded string to decode.\n */\nexport function decode(input) {\n // how many bits we have from the previous character.\n let skip = 0;\n // current byte we're producing.\n let byte = 0;\n const output = new Uint8Array(((input.length * 4) / 3) | 0);\n let o = 0;\n function decodeChar(char) {\n // Consume a character from the stream, store\n // the output in this.output. As before, better\n // to use update().\n let val = lookupTable[char.toLowerCase()];\n if (val === undefined) {\n throw new Error(`Invalid character: ${JSON.stringify(char)}`);\n }\n // move to the high bits\n val <<= 3;\n byte |= val >>> skip;\n skip += 5;\n if (skip >= 8) {\n // We have enough bytes to produce an output\n output[o++] = byte;\n skip -= 8;\n if (skip > 0) {\n byte = (val << (5 - skip)) & 255;\n }\n else {\n byte = 0;\n }\n }\n }\n for (const c of input) {\n decodeChar(c);\n }\n return output.slice(0, o);\n}\n//# sourceMappingURL=base32.js.map","// This file is translated to JavaScript from\n// https://lxp32.github.io/docs/a-simple-example-crc32-calculation/\nconst lookUpTable = new Uint32Array([\n 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,\n 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,\n 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,\n 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,\n 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,\n 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,\n 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,\n 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,\n 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,\n 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,\n 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,\n 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,\n 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,\n 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,\n 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,\n 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,\n 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,\n 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,\n 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,\n 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,\n 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,\n 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,\n 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,\n 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,\n 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,\n 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,\n 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,\n 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,\n 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,\n 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,\n 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,\n 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,\n]);\n/**\n * Calculate the CRC32 of an ArrayBufferLike.\n * @param buf The BufferLike to calculate the CRC32 of.\n */\nexport function getCrc32(buf) {\n const b = new Uint8Array(buf);\n let crc = -1;\n for (let i = 0; i < b.length; i++) {\n const byte = b[i];\n const t = (byte ^ crc) & 0xff;\n crc = lookUpTable[t] ^ (crc >>> 8);\n }\n return (crc ^ -1) >>> 0;\n}\n//# sourceMappingURL=getCrc.js.map","import { sha224 as jsSha224 } from '@noble/hashes/sha256';\n/**\n * Returns the SHA224 hash of the buffer.\n * @param data Arraybuffer to encode\n */\nexport function sha224(data) {\n return jsSha224.create().update(new Uint8Array(data)).digest();\n}\n//# sourceMappingURL=sha224.js.map","import { decode, encode } from './utils/base32';\nimport { getCrc32 } from './utils/getCrc';\nimport { sha224 } from './utils/sha224';\nexport const JSON_KEY_PRINCIPAL = '__principal__';\nconst SELF_AUTHENTICATING_SUFFIX = 2;\nconst ANONYMOUS_SUFFIX = 4;\nconst MANAGEMENT_CANISTER_PRINCIPAL_HEX_STR = 'aaaaa-aa';\nconst fromHexString = (hexString) => { var _a; return new Uint8Array(((_a = hexString.match(/.{1,2}/g)) !== null && _a !== void 0 ? _a : []).map(byte => parseInt(byte, 16))); };\nconst toHexString = (bytes) => bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');\nexport class Principal {\n constructor(_arr) {\n this._arr = _arr;\n this._isPrincipal = true;\n }\n static anonymous() {\n return new this(new Uint8Array([ANONYMOUS_SUFFIX]));\n }\n /**\n * Utility method, returning the principal representing the management canister, decoded from the hex string `'aaaaa-aa'`\n * @returns {Principal} principal of the management canister\n */\n static managementCanister() {\n return this.fromHex(MANAGEMENT_CANISTER_PRINCIPAL_HEX_STR);\n }\n static selfAuthenticating(publicKey) {\n const sha = sha224(publicKey);\n return new this(new Uint8Array([...sha, SELF_AUTHENTICATING_SUFFIX]));\n }\n static from(other) {\n if (typeof other === 'string') {\n return Principal.fromText(other);\n }\n else if (Object.getPrototypeOf(other) === Uint8Array.prototype) {\n return new Principal(other);\n }\n else if (typeof other === 'object' &&\n other !== null &&\n other._isPrincipal === true) {\n return new Principal(other._arr);\n }\n throw new Error(`Impossible to convert ${JSON.stringify(other)} to Principal.`);\n }\n static fromHex(hex) {\n return new this(fromHexString(hex));\n }\n static fromText(text) {\n let maybePrincipal = text;\n // If formatted as JSON string, parse it first\n if (text.includes(JSON_KEY_PRINCIPAL)) {\n const obj = JSON.parse(text);\n if (JSON_KEY_PRINCIPAL in obj) {\n maybePrincipal = obj[JSON_KEY_PRINCIPAL];\n }\n }\n const canisterIdNoDash = maybePrincipal.toLowerCase().replace(/-/g, '');\n let arr = decode(canisterIdNoDash);\n arr = arr.slice(4, arr.length);\n const principal = new this(arr);\n if (principal.toText() !== maybePrincipal) {\n throw new Error(`Principal \"${principal.toText()}\" does not have a valid checksum (original value \"${maybePrincipal}\" may not be a valid Principal ID).`);\n }\n return principal;\n }\n static fromUint8Array(arr) {\n return new this(arr);\n }\n isAnonymous() {\n return this._arr.byteLength === 1 && this._arr[0] === ANONYMOUS_SUFFIX;\n }\n toUint8Array() {\n return this._arr;\n }\n toHex() {\n return toHexString(this._arr).toUpperCase();\n }\n toText() {\n const checksumArrayBuf = new ArrayBuffer(4);\n const view = new DataView(checksumArrayBuf);\n view.setUint32(0, getCrc32(this._arr));\n const checksum = new Uint8Array(checksumArrayBuf);\n const bytes = Uint8Array.from(this._arr);\n const array = new Uint8Array([...checksum, ...bytes]);\n const result = encode(array);\n const matches = result.match(/.{1,5}/g);\n if (!matches) {\n // This should only happen if there's no character, which is unreachable.\n throw new Error();\n }\n return matches.join('-');\n }\n toString() {\n return this.toText();\n }\n /**\n * Serializes to JSON\n * @returns {JsonnablePrincipal} a JSON object with a single key, {@link JSON_KEY_PRINCIPAL}, whose value is the principal as a string\n */\n toJSON() {\n return { [JSON_KEY_PRINCIPAL]: this.toText() };\n }\n /**\n * Utility method taking a Principal to compare against. Used for determining canister ranges in certificate verification\n * @param {Principal} other - a {@link Principal} to compare\n * @returns {'lt' | 'eq' | 'gt'} `'lt' | 'eq' | 'gt'` a string, representing less than, equal to, or greater than\n */\n compareTo(other) {\n for (let i = 0; i < Math.min(this._arr.length, other._arr.length); i++) {\n if (this._arr[i] < other._arr[i])\n return 'lt';\n else if (this._arr[i] > other._arr[i])\n return 'gt';\n }\n // Here, at least one principal is a prefix of the other principal (they could be the same)\n if (this._arr.length < other._arr.length)\n return 'lt';\n if (this._arr.length > other._arr.length)\n return 'gt';\n return 'eq';\n }\n /**\n * Utility method checking whether a provided Principal is less than or equal to the current one using the {@link Principal.compareTo} method\n * @param other a {@link Principal} to compare\n * @returns {boolean} boolean\n */\n ltEq(other) {\n const cmp = this.compareTo(other);\n return cmp == 'lt' || cmp == 'eq';\n }\n /**\n * Utility method checking whether a provided Principal is greater than or equal to the current one using the {@link Principal.compareTo} method\n * @param other a {@link Principal} to compare\n * @returns {boolean} boolean\n */\n gtEq(other) {\n const cmp = this.compareTo(other);\n return cmp == 'gt' || cmp == 'eq';\n }\n}\n//# sourceMappingURL=index.js.map","/**\n * Concatenate multiple array buffers.\n * @param buffers The buffers to concatenate.\n */\nexport function concat(...buffers) {\n const result = new Uint8Array(buffers.reduce((acc, curr) => acc + curr.byteLength, 0));\n let index = 0;\n for (const b of buffers) {\n result.set(new Uint8Array(b), index);\n index += b.byteLength;\n }\n return result.buffer;\n}\n/**\n * Transforms a buffer to an hexadecimal string. This will use the buffer as an Uint8Array.\n * @param buffer The buffer to return the hexadecimal string of.\n */\nexport function toHex(buffer) {\n return [...new Uint8Array(buffer)].map(x => x.toString(16).padStart(2, '0')).join('');\n}\nconst hexRe = new RegExp(/^[0-9a-fA-F]+$/);\n/**\n * Transforms a hexadecimal string into an array buffer.\n * @param hex The hexadecimal string to use.\n */\nexport function fromHex(hex) {\n if (!hexRe.test(hex)) {\n throw new Error('Invalid hexadecimal string.');\n }\n const buffer = [...hex]\n .reduce((acc, curr, i) => {\n acc[(i / 2) | 0] = (acc[(i / 2) | 0] || '') + curr;\n return acc;\n }, [])\n .map(x => Number.parseInt(x, 16));\n return new Uint8Array(buffer).buffer;\n}\n/**\n *\n * @param b1 array buffer 1\n * @param b2 array buffer 2\n * @returns number - negative if b1 < b2, positive if b1 > b2, 0 if b1 === b2\n */\nexport function compare(b1, b2) {\n if (b1.byteLength !== b2.byteLength) {\n return b1.byteLength - b2.byteLength;\n }\n const u1 = new Uint8Array(b1);\n const u2 = new Uint8Array(b2);\n for (let i = 0; i < u1.length; i++) {\n if (u1[i] !== u2[i]) {\n return u1[i] - u2[i];\n }\n }\n return 0;\n}\n/**\n * Checks two array buffers for equality.\n * @param b1 array buffer 1\n * @param b2 array buffer 2\n * @returns boolean\n */\nexport function bufEquals(b1, b2) {\n return compare(b1, b2) === 0;\n}\n/**\n * Returns a true ArrayBuffer from a Uint8Array, as Uint8Array.buffer is unsafe.\n * @param {Uint8Array} arr Uint8Array to convert\n * @returns ArrayBuffer\n */\nexport function uint8ToBuf(arr) {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength).buffer;\n}\n/**\n * Returns a true ArrayBuffer from an ArrayBufferLike object.\n * @param bufLike a buffer-like object\n * @returns ArrayBuffer\n */\nexport function bufFromBufLike(bufLike) {\n if (bufLike instanceof Uint8Array) {\n return uint8ToBuf(bufLike);\n }\n if (bufLike instanceof ArrayBuffer) {\n return bufLike;\n }\n if (Array.isArray(bufLike)) {\n return uint8ToBuf(new Uint8Array(bufLike));\n }\n if ('buffer' in bufLike) {\n return bufFromBufLike(bufLike.buffer);\n }\n return uint8ToBuf(new Uint8Array(bufLike));\n}\n//# sourceMappingURL=buffer.js.map","import { Principal } from '@dfinity/principal';\nimport { ReplicaRejectCode, } from './agent/api';\nimport { toHex } from './utils/buffer';\n/**\n * An error that happens in the Agent. This is the root of all errors and should be used\n * everywhere in the Agent code (this package).\n * @todo https://github.com/dfinity/agent-js/issues/420\n */\nexport class AgentError extends Error {\n constructor(message) {\n super(message);\n this.message = message;\n this.name = 'AgentError';\n this.__proto__ = AgentError.prototype;\n Object.setPrototypeOf(this, AgentError.prototype);\n }\n}\nexport class ActorCallError extends AgentError {\n constructor(canisterId, methodName, type, props) {\n const cid = Principal.from(canisterId);\n super([\n `Call failed:`,\n ` Canister: ${cid.toText()}`,\n ` Method: ${methodName} (${type})`,\n ...Object.getOwnPropertyNames(props).map(n => ` \"${n}\": ${JSON.stringify(props[n])}`),\n ].join('\\n'));\n this.canisterId = canisterId;\n this.methodName = methodName;\n this.type = type;\n this.props = props;\n this.name = 'ActorCallError';\n this.__proto__ = ActorCallError.prototype;\n Object.setPrototypeOf(this, ActorCallError.prototype);\n }\n}\nexport class QueryCallRejectedError extends ActorCallError {\n constructor(canisterId, methodName, result) {\n var _a;\n const cid = Principal.from(canisterId);\n super(cid, methodName, 'query', {\n Status: result.status,\n Code: (_a = ReplicaRejectCode[result.reject_code]) !== null && _a !== void 0 ? _a : `Unknown Code \"${result.reject_code}\"`,\n Message: result.reject_message,\n });\n this.result = result;\n this.name = 'QueryCallRejectedError';\n this.__proto__ = QueryCallRejectedError.prototype;\n Object.setPrototypeOf(this, QueryCallRejectedError.prototype);\n }\n}\nexport class UpdateCallRejectedError extends ActorCallError {\n constructor(canisterId, methodName, requestId, response) {\n const cid = Principal.from(canisterId);\n super(cid, methodName, 'update', Object.assign({ 'Request ID': toHex(requestId) }, (response.body\n ? Object.assign(Object.assign({}, (response.body.error_code\n ? {\n 'Error code': response.body.error_code,\n }\n : {})), { 'Reject code': String(response.body.reject_code), 'Reject message': response.body.reject_message }) : {\n 'HTTP status code': response.status.toString(),\n 'HTTP status text': response.statusText,\n })));\n this.requestId = requestId;\n this.response = response;\n this.name = 'UpdateCallRejectedError';\n this.__proto__ = UpdateCallRejectedError.prototype;\n Object.setPrototypeOf(this, UpdateCallRejectedError.prototype);\n }\n}\n//# sourceMappingURL=errors.js.map","/**\n * Concatenate multiple array buffers.\n * @param buffers The buffers to concatenate.\n */\nexport function concat(...buffers) {\n const result = new Uint8Array(buffers.reduce((acc, curr) => acc + curr.byteLength, 0));\n let index = 0;\n for (const b of buffers) {\n result.set(new Uint8Array(b), index);\n index += b.byteLength;\n }\n return result;\n}\n/**\n * Returns an hexadecimal representation of an array buffer.\n * @param bytes The array buffer.\n */\nexport function toHexString(bytes) {\n return new Uint8Array(bytes).reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');\n}\n/**\n * Return an array buffer from its hexadecimal representation.\n * @param hexString The hexadecimal string.\n */\nexport function fromHexString(hexString) {\n var _a;\n return new Uint8Array(((_a = hexString.match(/.{1,2}/g)) !== null && _a !== void 0 ? _a : []).map(byte => parseInt(byte, 16)));\n}\n/**\n * A class that abstracts a pipe-like ArrayBuffer.\n */\nexport class PipeArrayBuffer {\n /**\n * Creates a new instance of a pipe\n * @param buffer an optional buffer to start with\n * @param length an optional amount of bytes to use for the length.\n */\n constructor(buffer, length = (buffer === null || buffer === void 0 ? void 0 : buffer.byteLength) || 0) {\n this._buffer = bufFromBufLike(buffer || new ArrayBuffer(0));\n this._view = new Uint8Array(this._buffer, 0, length);\n }\n get buffer() {\n // Return a copy of the buffer.\n return bufFromBufLike(this._view.slice());\n }\n get byteLength() {\n return this._view.byteLength;\n }\n /**\n * Read `num` number of bytes from the front of the pipe.\n * @param num The number of bytes to read.\n */\n read(num) {\n const result = this._view.subarray(0, num);\n this._view = this._view.subarray(num);\n return result.slice().buffer;\n }\n readUint8() {\n const result = this._view[0];\n this._view = this._view.subarray(1);\n return result;\n }\n /**\n * Write a buffer to the end of the pipe.\n * @param buf The bytes to write.\n */\n write(buf) {\n const b = new Uint8Array(buf);\n const offset = this._view.byteLength;\n if (this._view.byteOffset + this._view.byteLength + b.byteLength >= this._buffer.byteLength) {\n // Alloc grow the view to include the new bytes.\n this.alloc(b.byteLength);\n }\n else {\n // Update the view to include the new bytes.\n this._view = new Uint8Array(this._buffer, this._view.byteOffset, this._view.byteLength + b.byteLength);\n }\n this._view.set(b, offset);\n }\n /**\n * Whether or not there is more data to read from the buffer\n */\n get end() {\n return this._view.byteLength === 0;\n }\n /**\n * Allocate a fixed amount of memory in the buffer. This does not affect the view.\n * @param amount A number of bytes to add to the buffer.\n */\n alloc(amount) {\n // Add a little bit of exponential growth.\n const b = new ArrayBuffer(((this._buffer.byteLength + amount) * 1.2) | 0);\n const v = new Uint8Array(b, 0, this._view.byteLength + amount);\n v.set(this._view);\n this._buffer = b;\n this._view = v;\n }\n}\n/**\n * Returns a true ArrayBuffer from a Uint8Array, as Uint8Array.buffer is unsafe.\n * @param {Uint8Array} arr Uint8Array to convert\n * @returns ArrayBuffer\n */\nexport function uint8ToBuf(arr) {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength).buffer;\n}\n/**\n * Returns a true ArrayBuffer from an ArrayBufferLike object.\n * @param bufLike a buffer-like object\n * @returns ArrayBuffer\n */\nexport function bufFromBufLike(bufLike) {\n if (bufLike instanceof Uint8Array) {\n return uint8ToBuf(bufLike);\n }\n if (bufLike instanceof ArrayBuffer) {\n return bufLike;\n }\n if (Array.isArray(bufLike)) {\n return uint8ToBuf(new Uint8Array(bufLike));\n }\n if ('buffer' in bufLike) {\n return bufFromBufLike(bufLike.buffer);\n }\n return uint8ToBuf(new Uint8Array(bufLike));\n}\n//# sourceMappingURL=buffer.js.map","/**\n * Hashes a string to a number. Algorithm can be found here:\n * https://caml.inria.fr/pub/papers/garrigue-polymorphic_variants-ml98.pdf\n * @param s - string to hash\n * @returns number representing hashed string\n */\nfunction idlHash(s) {\n const utf8encoder = new TextEncoder();\n const array = utf8encoder.encode(s);\n let h = 0;\n for (const c of array) {\n h = (h * 223 + c) % 2 ** 32;\n }\n return h;\n}\n/**\n *\n * @param label string\n * @returns number representing hashed label\n */\nexport function idlLabelToId(label) {\n if (/^_\\d+_$/.test(label) || /^_0x[0-9a-fA-F]+_$/.test(label)) {\n const num = +label.slice(1, -1);\n if (Number.isSafeInteger(num) && num >= 0 && num < 2 ** 32) {\n return num;\n }\n }\n return idlHash(label);\n}\n//# sourceMappingURL=hash.js.map","/* eslint-disable no-constant-condition */\n// Note: this file uses buffer-pipe, which on Node only, uses the Node Buffer\n// implementation, which isn't compatible with the NPM buffer package\n// which we use everywhere else. This means that we have to transform\n// one into the other, hence why every function that returns a Buffer\n// actually return `new Buffer(pipe.buffer)`.\n// TODO: The best solution would be to have our own buffer type around\n// Uint8Array which is standard.\nimport { PipeArrayBuffer as Pipe } from './buffer';\nfunction eob() {\n throw new Error('unexpected end of buffer');\n}\n/**\n *\n * @param pipe Pipe from buffer-pipe\n * @param num number\n * @returns Buffer\n */\nexport function safeRead(pipe, num) {\n if (pipe.byteLength < num) {\n eob();\n }\n return pipe.read(num);\n}\n/**\n * @param pipe - PipeArrayBuffer simulating buffer-pipe api\n */\nexport function safeReadUint8(pipe) {\n const byte = pipe.readUint8();\n if (byte === undefined) {\n eob();\n }\n return byte;\n}\n/**\n * Encode a positive number (or bigint) into a Buffer. The number will be floored to the\n * nearest integer.\n * @param value The number to encode.\n */\nexport function lebEncode(value) {\n if (typeof value === 'number') {\n value = BigInt(value);\n }\n if (value < BigInt(0)) {\n throw new Error('Cannot leb encode negative values.');\n }\n const byteLength = (value === BigInt(0) ? 0 : Math.ceil(Math.log2(Number(value)))) + 1;\n const pipe = new Pipe(new ArrayBuffer(byteLength), 0);\n while (true) {\n const i = Number(value & BigInt(0x7f));\n value /= BigInt(0x80);\n if (value === BigInt(0)) {\n pipe.write(new Uint8Array([i]));\n break;\n }\n else {\n pipe.write(new Uint8Array([i | 0x80]));\n }\n }\n return pipe.buffer;\n}\n/**\n * Decode a leb encoded buffer into a bigint. The number will always be positive (does not\n * support signed leb encoding).\n * @param pipe A Buffer containing the leb encoded bits.\n */\nexport function lebDecode(pipe) {\n let weight = BigInt(1);\n let value = BigInt(0);\n let byte;\n do {\n byte = safeReadUint8(pipe);\n value += BigInt(byte & 0x7f).valueOf() * weight;\n weight *= BigInt(128);\n } while (byte >= 0x80);\n return value;\n}\n/**\n * Encode a number (or bigint) into a Buffer, with support for negative numbers. The number\n * will be floored to the nearest integer.\n * @param value The number to encode.\n */\nexport function slebEncode(value) {\n if (typeof value === 'number') {\n value = BigInt(value);\n }\n const isNeg = value < BigInt(0);\n if (isNeg) {\n value = -value - BigInt(1);\n }\n const byteLength = (value === BigInt(0) ? 0 : Math.ceil(Math.log2(Number(value)))) + 1;\n const pipe = new Pipe(new ArrayBuffer(byteLength), 0);\n while (true) {\n const i = getLowerBytes(value);\n value /= BigInt(0x80);\n // prettier-ignore\n if ((isNeg && value === BigInt(0) && (i & 0x40) !== 0)\n || (!isNeg && value === BigInt(0) && (i & 0x40) === 0)) {\n pipe.write(new Uint8Array([i]));\n break;\n }\n else {\n pipe.write(new Uint8Array([i | 0x80]));\n }\n }\n function getLowerBytes(num) {\n const bytes = num % BigInt(0x80);\n if (isNeg) {\n // We swap the bits here again, and remove 1 to do two's complement.\n return Number(BigInt(0x80) - bytes - BigInt(1));\n }\n else {\n return Number(bytes);\n }\n }\n return pipe.buffer;\n}\n/**\n * Decode a leb encoded buffer into a bigint. The number is decoded with support for negative\n * signed-leb encoding.\n * @param pipe A Buffer containing the signed leb encoded bits.\n */\nexport function slebDecode(pipe) {\n // Get the size of the buffer, then cut a buffer of that size.\n const pipeView = new Uint8Array(pipe.buffer);\n let len = 0;\n for (; len < pipeView.byteLength; len++) {\n if (pipeView[len] < 0x80) {\n // If it's a positive number, we reuse lebDecode.\n if ((pipeView[len] & 0x40) === 0) {\n return lebDecode(pipe);\n }\n break;\n }\n }\n const bytes = new Uint8Array(safeRead(pipe, len + 1));\n let value = BigInt(0);\n for (let i = bytes.byteLength - 1; i >= 0; i--) {\n value = value * BigInt(0x80) + BigInt(0x80 - (bytes[i] & 0x7f) - 1);\n }\n return -value - BigInt(1);\n}\n/**\n *\n * @param value bigint or number\n * @param byteLength number\n * @returns Buffer\n */\nexport function writeUIntLE(value, byteLength) {\n if (BigInt(value) < BigInt(0)) {\n throw new Error('Cannot write negative values.');\n }\n return writeIntLE(value, byteLength);\n}\n/**\n *\n * @param value - bigint or number\n * @param byteLength - number\n * @returns ArrayBuffer\n */\nexport function writeIntLE(value, byteLength) {\n value = BigInt(value);\n const pipe = new Pipe(new ArrayBuffer(Math.min(1, byteLength)), 0);\n let i = 0;\n let mul = BigInt(256);\n let sub = BigInt(0);\n let byte = Number(value % mul);\n pipe.write(new Uint8Array([byte]));\n while (++i < byteLength) {\n if (value < 0 && sub === BigInt(0) && byte !== 0) {\n sub = BigInt(1);\n }\n byte = Number((value / mul - sub) % BigInt(256));\n pipe.write(new Uint8Array([byte]));\n mul *= BigInt(256);\n }\n return pipe.buffer;\n}\n/**\n *\n * @param pipe Pipe from buffer-pipe\n * @param byteLength number\n * @returns bigint\n */\nexport function readUIntLE(pipe, byteLength) {\n let val = BigInt(safeReadUint8(pipe));\n let mul = BigInt(1);\n let i = 0;\n while (++i < byteLength) {\n mul *= BigInt(256);\n const byte = BigInt(safeReadUint8(pipe));\n val = val + mul * byte;\n }\n return val;\n}\n/**\n *\n * @param pipe Pipe from buffer-pipe\n * @param byteLength number\n * @returns bigint\n */\nexport function readIntLE(pipe, byteLength) {\n let val = readUIntLE(pipe, byteLength);\n const mul = BigInt(2) ** (BigInt(8) * BigInt(byteLength - 1) + BigInt(7));\n if (val >= mul) {\n val -= mul * BigInt(2);\n }\n return val;\n}\n//# sourceMappingURL=leb128.js.map","/**\n * Equivalent to `Math.log2(n)` with support for `BigInt` values\n * @param n bigint or integer\n * @returns integer\n */\nexport function ilog2(n) {\n const nBig = BigInt(n);\n if (n <= 0) {\n throw new RangeError('Input must be positive');\n }\n return nBig.toString(2).length - 1;\n}\n/**\n * Equivalent to `2 ** n` with support for `BigInt` values\n * (necessary for browser preprocessors which replace the `**` operator with `Math.pow`)\n * @param n bigint or integer\n * @returns bigint\n */\nexport function iexp2(n) {\n const nBig = BigInt(n);\n if (n < 0) {\n throw new RangeError('Input must be non-negative');\n }\n return BigInt(1) << nBig;\n}\n//# sourceMappingURL=bigint-math.js.map","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Principal as PrincipalId } from '@dfinity/principal';\nimport { concat, PipeArrayBuffer as Pipe } from './utils/buffer';\nimport { idlLabelToId } from './utils/hash';\nimport { lebDecode, lebEncode, readIntLE, readUIntLE, safeRead, safeReadUint8, slebDecode, slebEncode, writeIntLE, writeUIntLE, } from './utils/leb128';\nimport { iexp2 } from './utils/bigint-math';\nconst magicNumber = 'DIDL';\nconst toReadableString_max = 400; // will not display arguments after 400chars. Makes sure 2mb blobs don't get inside the error\nfunction zipWith(xs, ys, f) {\n return xs.map((x, i) => f(x, ys[i]));\n}\n/**\n * An IDL Type Table, which precedes the data in the stream.\n */\nclass TypeTable {\n constructor() {\n // List of types. Needs to be an array as the index needs to be stable.\n this._typs = [];\n this._idx = new Map();\n }\n has(obj) {\n return this._idx.has(obj.name);\n }\n add(type, buf) {\n const idx = this._typs.length;\n this._idx.set(type.name, idx);\n this._typs.push(buf);\n }\n merge(obj, knot) {\n const idx = this._idx.get(obj.name);\n const knotIdx = this._idx.get(knot);\n if (idx === undefined) {\n throw new Error('Missing type index for ' + obj);\n }\n if (knotIdx === undefined) {\n throw new Error('Missing type index for ' + knot);\n }\n this._typs[idx] = this._typs[knotIdx];\n // Delete the type.\n this._typs.splice(knotIdx, 1);\n this._idx.delete(knot);\n }\n encode() {\n const len = lebEncode(this._typs.length);\n const buf = concat(...this._typs);\n return concat(len, buf);\n }\n indexOf(typeName) {\n if (!this._idx.has(typeName)) {\n throw new Error('Missing type index for ' + typeName);\n }\n return slebEncode(this._idx.get(typeName) || 0);\n }\n}\nexport class Visitor {\n visitType(t, data) {\n throw new Error('Not implemented');\n }\n visitPrimitive(t, data) {\n return this.visitType(t, data);\n }\n visitEmpty(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitBool(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitNull(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitReserved(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitText(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitNumber(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitInt(t, data) {\n return this.visitNumber(t, data);\n }\n visitNat(t, data) {\n return this.visitNumber(t, data);\n }\n visitFloat(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitFixedInt(t, data) {\n return this.visitNumber(t, data);\n }\n visitFixedNat(t, data) {\n return this.visitNumber(t, data);\n }\n visitPrincipal(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitConstruct(t, data) {\n return this.visitType(t, data);\n }\n visitVec(t, ty, data) {\n return this.visitConstruct(t, data);\n }\n visitOpt(t, ty, data) {\n return this.visitConstruct(t, data);\n }\n visitRecord(t, fields, data) {\n return this.visitConstruct(t, data);\n }\n visitTuple(t, components, data) {\n const fields = components.map((ty, i) => [`_${i}_`, ty]);\n return this.visitRecord(t, fields, data);\n }\n visitVariant(t, fields, data) {\n return this.visitConstruct(t, data);\n }\n visitRec(t, ty, data) {\n return this.visitConstruct(ty, data);\n }\n visitFunc(t, data) {\n return this.visitConstruct(t, data);\n }\n visitService(t, data) {\n return this.visitConstruct(t, data);\n }\n}\n/**\n * Represents an IDL type.\n */\nexport class Type {\n /* Display type name */\n display() {\n return this.name;\n }\n valueToString(x) {\n return toReadableString(x);\n }\n /* Implement `T` in the IDL spec, only needed for non-primitive types */\n buildTypeTable(typeTable) {\n if (!typeTable.has(this)) {\n this._buildTypeTableImpl(typeTable);\n }\n }\n}\nexport class PrimitiveType extends Type {\n checkType(t) {\n if (this.name !== t.name) {\n throw new Error(`type mismatch: type on the wire ${t.name}, expect type ${this.name}`);\n }\n return t;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _buildTypeTableImpl(typeTable) {\n // No type table encoding for Primitive types.\n return;\n }\n}\nexport class ConstructType extends Type {\n checkType(t) {\n if (t instanceof RecClass) {\n const ty = t.getType();\n if (typeof ty === 'undefined') {\n throw new Error('type mismatch with uninitialized type');\n }\n return ty;\n }\n throw new Error(`type mismatch: type on the wire ${t.name}, expect type ${this.name}`);\n }\n encodeType(typeTable) {\n return typeTable.indexOf(this.name);\n }\n}\n/**\n * Represents an IDL Empty, a type which has no inhabitants.\n * Since no values exist for this type, it cannot be serialised or deserialised.\n * Result types like `Result` should always succeed.\n */\nexport class EmptyClass extends PrimitiveType {\n accept(v, d) {\n return v.visitEmpty(this, d);\n }\n covariant(x) {\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n encodeValue() {\n throw new Error('Empty cannot appear as a function argument');\n }\n valueToString() {\n throw new Error('Empty cannot appear as a value');\n }\n encodeType() {\n return slebEncode(-17 /* IDLTypeIds.Empty */);\n }\n decodeValue() {\n throw new Error('Empty cannot appear as an output');\n }\n get name() {\n return 'empty';\n }\n}\n/**\n * Represents an IDL Unknown, a placeholder type for deserialization only.\n * When decoding a value as Unknown, all fields will be retained but the names are only available in\n * hashed form.\n * A deserialized unknown will offer it's actual type by calling the `type()` function.\n * Unknown cannot be serialized and attempting to do so will throw an error.\n */\nexport class UnknownClass extends Type {\n checkType(t) {\n throw new Error('Method not implemented for unknown.');\n }\n accept(v, d) {\n throw v.visitType(this, d);\n }\n covariant(x) {\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n encodeValue() {\n throw new Error('Unknown cannot appear as a function argument');\n }\n valueToString() {\n throw new Error('Unknown cannot appear as a value');\n }\n encodeType() {\n throw new Error('Unknown cannot be serialized');\n }\n decodeValue(b, t) {\n let decodedValue = t.decodeValue(b, t);\n if (Object(decodedValue) !== decodedValue) {\n // decodedValue is primitive. Box it, otherwise we cannot add the type() function.\n // The type() function is important for primitives because otherwise we cannot tell apart the\n // different number types.\n decodedValue = Object(decodedValue);\n }\n let typeFunc;\n if (t instanceof RecClass) {\n typeFunc = () => t.getType();\n }\n else {\n typeFunc = () => t;\n }\n // Do not use 'decodedValue.type = typeFunc' because this would lead to an enumerable property\n // 'type' which means it would be serialized if the value would be candid encoded again.\n // This in turn leads to problems if the decoded value is a variant because these values are\n // only allowed to have a single property.\n Object.defineProperty(decodedValue, 'type', {\n value: typeFunc,\n writable: true,\n enumerable: false,\n configurable: true,\n });\n return decodedValue;\n }\n _buildTypeTableImpl() {\n throw new Error('Unknown cannot be serialized');\n }\n get name() {\n return 'Unknown';\n }\n}\n/**\n * Represents an IDL Bool\n */\nexport class BoolClass extends PrimitiveType {\n accept(v, d) {\n return v.visitBool(this, d);\n }\n covariant(x) {\n if (typeof x === 'boolean')\n return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n encodeValue(x) {\n return new Uint8Array([x ? 1 : 0]);\n }\n encodeType() {\n return slebEncode(-2 /* IDLTypeIds.Bool */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n switch (safeReadUint8(b)) {\n case 0:\n return false;\n case 1:\n return true;\n default:\n throw new Error('Boolean value out of range');\n }\n }\n get name() {\n return 'bool';\n }\n}\n/**\n * Represents an IDL Null\n */\nexport class NullClass extends PrimitiveType {\n accept(v, d) {\n return v.visitNull(this, d);\n }\n covariant(x) {\n if (x === null)\n return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n encodeValue() {\n return new ArrayBuffer(0);\n }\n encodeType() {\n return slebEncode(-1 /* IDLTypeIds.Null */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n return null;\n }\n get name() {\n return 'null';\n }\n}\n/**\n * Represents an IDL Reserved\n */\nexport class ReservedClass extends PrimitiveType {\n accept(v, d) {\n return v.visitReserved(this, d);\n }\n covariant(x) {\n return true;\n }\n encodeValue() {\n return new ArrayBuffer(0);\n }\n encodeType() {\n return slebEncode(-16 /* IDLTypeIds.Reserved */);\n }\n decodeValue(b, t) {\n if (t.name !== this.name) {\n t.decodeValue(b, t);\n }\n return null;\n }\n get name() {\n return 'reserved';\n }\n}\n/**\n * Represents an IDL Text\n */\nexport class TextClass extends PrimitiveType {\n accept(v, d) {\n return v.visitText(this, d);\n }\n covariant(x) {\n if (typeof x === 'string')\n return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n encodeValue(x) {\n const buf = new TextEncoder().encode(x);\n const len = lebEncode(buf.byteLength);\n return concat(len, buf);\n }\n encodeType() {\n return slebEncode(-15 /* IDLTypeIds.Text */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n const len = lebDecode(b);\n const buf = safeRead(b, Number(len));\n const decoder = new TextDecoder('utf8', { fatal: true });\n return decoder.decode(buf);\n }\n get name() {\n return 'text';\n }\n valueToString(x) {\n return '\"' + x + '\"';\n }\n}\n/**\n * Represents an IDL Int\n */\nexport class IntClass extends PrimitiveType {\n accept(v, d) {\n return v.visitInt(this, d);\n }\n covariant(x) {\n // We allow encoding of JavaScript plain numbers.\n // But we will always decode to bigint.\n if (typeof x === 'bigint' || Number.isInteger(x))\n return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n encodeValue(x) {\n return slebEncode(x);\n }\n encodeType() {\n return slebEncode(-4 /* IDLTypeIds.Int */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n return slebDecode(b);\n }\n get name() {\n return 'int';\n }\n valueToString(x) {\n return x.toString();\n }\n}\n/**\n * Represents an IDL Nat\n */\nexport class NatClass extends PrimitiveType {\n accept(v, d) {\n return v.visitNat(this, d);\n }\n covariant(x) {\n // We allow encoding of JavaScript plain numbers.\n // But we will always decode to bigint.\n if ((typeof x === 'bigint' && x >= BigInt(0)) || (Number.isInteger(x) && x >= 0))\n return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n encodeValue(x) {\n return lebEncode(x);\n }\n encodeType() {\n return slebEncode(-3 /* IDLTypeIds.Nat */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n return lebDecode(b);\n }\n get name() {\n return 'nat';\n }\n valueToString(x) {\n return x.toString();\n }\n}\n/**\n * Represents an IDL Float\n */\nexport class FloatClass extends PrimitiveType {\n constructor(_bits) {\n super();\n this._bits = _bits;\n if (_bits !== 32 && _bits !== 64) {\n throw new Error('not a valid float type');\n }\n }\n accept(v, d) {\n return v.visitFloat(this, d);\n }\n covariant(x) {\n if (typeof x === 'number' || x instanceof Number)\n return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n encodeValue(x) {\n const buf = new ArrayBuffer(this._bits / 8);\n const view = new DataView(buf);\n if (this._bits === 32) {\n view.setFloat32(0, x, true);\n }\n else {\n view.setFloat64(0, x, true);\n }\n return buf;\n }\n encodeType() {\n const opcode = this._bits === 32 ? -13 /* IDLTypeIds.Float32 */ : -14 /* IDLTypeIds.Float64 */;\n return slebEncode(opcode);\n }\n decodeValue(b, t) {\n this.checkType(t);\n const bytes = safeRead(b, this._bits / 8);\n const view = new DataView(bytes);\n if (this._bits === 32) {\n return view.getFloat32(0, true);\n }\n else {\n return view.getFloat64(0, true);\n }\n }\n get name() {\n return 'float' + this._bits;\n }\n valueToString(x) {\n return x.toString();\n }\n}\n/**\n * Represents an IDL fixed-width Int(n)\n */\nexport class FixedIntClass extends PrimitiveType {\n constructor(_bits) {\n super();\n this._bits = _bits;\n }\n accept(v, d) {\n return v.visitFixedInt(this, d);\n }\n covariant(x) {\n const min = iexp2(this._bits - 1) * BigInt(-1);\n const max = iexp2(this._bits - 1) - BigInt(1);\n let ok = false;\n if (typeof x === 'bigint') {\n ok = x >= min && x <= max;\n }\n else if (Number.isInteger(x)) {\n const v = BigInt(x);\n ok = v >= min && v <= max;\n }\n else {\n ok = false;\n }\n if (ok)\n return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n encodeValue(x) {\n return writeIntLE(x, this._bits / 8);\n }\n encodeType() {\n const offset = Math.log2(this._bits) - 3;\n return slebEncode(-9 - offset);\n }\n decodeValue(b, t) {\n this.checkType(t);\n const num = readIntLE(b, this._bits / 8);\n if (this._bits <= 32) {\n return Number(num);\n }\n else {\n return num;\n }\n }\n get name() {\n return `int${this._bits}`;\n }\n valueToString(x) {\n return x.toString();\n }\n}\n/**\n * Represents an IDL fixed-width Nat(n)\n */\nexport class FixedNatClass extends PrimitiveType {\n constructor(_bits) {\n super();\n this._bits = _bits;\n }\n accept(v, d) {\n return v.visitFixedNat(this, d);\n }\n covariant(x) {\n const max = iexp2(this._bits);\n let ok = false;\n if (typeof x === 'bigint' && x >= BigInt(0)) {\n ok = x < max;\n }\n else if (Number.isInteger(x) && x >= 0) {\n const v = BigInt(x);\n ok = v < max;\n }\n else {\n ok = false;\n }\n if (ok)\n return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n encodeValue(x) {\n return writeUIntLE(x, this._bits / 8);\n }\n encodeType() {\n const offset = Math.log2(this._bits) - 3;\n return slebEncode(-5 - offset);\n }\n decodeValue(b, t) {\n this.checkType(t);\n const num = readUIntLE(b, this._bits / 8);\n if (this._bits <= 32) {\n return Number(num);\n }\n else {\n return num;\n }\n }\n get name() {\n return `nat${this._bits}`;\n }\n valueToString(x) {\n return x.toString();\n }\n}\n/**\n * Represents an IDL Array\n *\n * Arrays of fixed-sized nat/int type (e.g. nat8), are encoded from and decoded to TypedArrays (e.g. Uint8Array).\n * Arrays of float or other non-primitive types are encoded/decoded as untyped array in Javascript.\n * @param {Type} t\n */\nexport class VecClass extends ConstructType {\n constructor(_type) {\n super();\n this._type = _type;\n // If true, this vector is really a blob and we can just use memcpy.\n //\n // NOTE:\n // With support of encoding/dencoding of TypedArrays, this optimization is\n // only used when plain array of bytes are passed as encoding input in order\n // to be backward compatible.\n this._blobOptimization = false;\n if (_type instanceof FixedNatClass && _type._bits === 8) {\n this._blobOptimization = true;\n }\n }\n accept(v, d) {\n return v.visitVec(this, this._type, d);\n }\n covariant(x) {\n // Special case for ArrayBuffer\n const bits = this._type instanceof FixedNatClass\n ? this._type._bits\n : this._type instanceof FixedIntClass\n ? this._type._bits\n : 0;\n if ((ArrayBuffer.isView(x) && bits == x.BYTES_PER_ELEMENT * 8) ||\n (Array.isArray(x) &&\n x.every((v, idx) => {\n try {\n return this._type.covariant(v);\n }\n catch (e) {\n throw new Error(`Invalid ${this.display()} argument: \\n\\nindex ${idx} -> ${e.message}`);\n }\n })))\n return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n encodeValue(x) {\n const len = lebEncode(x.length);\n if (this._blobOptimization) {\n return concat(len, new Uint8Array(x));\n }\n if (ArrayBuffer.isView(x)) {\n return concat(len, new Uint8Array(x.buffer));\n }\n const buf = new Pipe(new ArrayBuffer(len.byteLength + x.length), 0);\n buf.write(len);\n for (const d of x) {\n const encoded = this._type.encodeValue(d);\n buf.write(new Uint8Array(encoded));\n }\n return buf.buffer;\n }\n _buildTypeTableImpl(typeTable) {\n this._type.buildTypeTable(typeTable);\n const opCode = slebEncode(-19 /* IDLTypeIds.Vector */);\n const buffer = this._type.encodeType(typeTable);\n typeTable.add(this, concat(opCode, buffer));\n }\n decodeValue(b, t) {\n const vec = this.checkType(t);\n if (!(vec instanceof VecClass)) {\n throw new Error('Not a vector type');\n }\n const len = Number(lebDecode(b));\n if (this._type instanceof FixedNatClass) {\n if (this._type._bits == 8) {\n return new Uint8Array(b.read(len));\n }\n if (this._type._bits == 16) {\n return new Uint16Array(b.read(len * 2));\n }\n if (this._type._bits == 32) {\n return new Uint32Array(b.read(len * 4));\n }\n if (this._type._bits == 64) {\n return new BigUint64Array(b.read(len * 8));\n }\n }\n if (this._type instanceof FixedIntClass) {\n if (this._type._bits == 8) {\n return new Int8Array(b.read(len));\n }\n if (this._type._bits == 16) {\n return new Int16Array(b.read(len * 2));\n }\n if (this._type._bits == 32) {\n return new Int32Array(b.read(len * 4));\n }\n if (this._type._bits == 64) {\n return new BigInt64Array(b.read(len * 8));\n }\n }\n const rets = [];\n for (let i = 0; i < len; i++) {\n rets.push(this._type.decodeValue(b, vec._type));\n }\n return rets;\n }\n get name() {\n return `vec ${this._type.name}`;\n }\n display() {\n return `vec ${this._type.display()}`;\n }\n valueToString(x) {\n const elements = x.map(e => this._type.valueToString(e));\n return 'vec {' + elements.join('; ') + '}';\n }\n}\n/**\n * Represents an IDL Option\n * @param {Type} t\n */\nexport class OptClass extends ConstructType {\n constructor(_type) {\n super();\n this._type = _type;\n }\n accept(v, d) {\n return v.visitOpt(this, this._type, d);\n }\n covariant(x) {\n try {\n if (Array.isArray(x) && (x.length === 0 || (x.length === 1 && this._type.covariant(x[0]))))\n return true;\n }\n catch (e) {\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)} \\n\\n-> ${e.message}`);\n }\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n encodeValue(x) {\n if (x.length === 0) {\n return new Uint8Array([0]);\n }\n else {\n return concat(new Uint8Array([1]), this._type.encodeValue(x[0]));\n }\n }\n _buildTypeTableImpl(typeTable) {\n this._type.buildTypeTable(typeTable);\n const opCode = slebEncode(-18 /* IDLTypeIds.Opt */);\n const buffer = this._type.encodeType(typeTable);\n typeTable.add(this, concat(opCode, buffer));\n }\n decodeValue(b, t) {\n const opt = this.checkType(t);\n if (!(opt instanceof OptClass)) {\n throw new Error('Not an option type');\n }\n switch (safeReadUint8(b)) {\n case 0:\n return [];\n case 1:\n return [this._type.decodeValue(b, opt._type)];\n default:\n throw new Error('Not an option value');\n }\n }\n get name() {\n return `opt ${this._type.name}`;\n }\n display() {\n return `opt ${this._type.display()}`;\n }\n valueToString(x) {\n if (x.length === 0) {\n return 'null';\n }\n else {\n return `opt ${this._type.valueToString(x[0])}`;\n }\n }\n}\n/**\n * Represents an IDL Record\n * @param {object} [fields] - mapping of function name to Type\n */\nexport class RecordClass extends ConstructType {\n constructor(fields = {}) {\n super();\n this._fields = Object.entries(fields).sort((a, b) => idlLabelToId(a[0]) - idlLabelToId(b[0]));\n }\n accept(v, d) {\n return v.visitRecord(this, this._fields, d);\n }\n tryAsTuple() {\n const res = [];\n for (let i = 0; i < this._fields.length; i++) {\n const [key, type] = this._fields[i];\n if (key !== `_${i}_`) {\n return null;\n }\n res.push(type);\n }\n return res;\n }\n covariant(x) {\n if (typeof x === 'object' &&\n this._fields.every(([k, t]) => {\n // eslint-disable-next-line\n if (!x.hasOwnProperty(k)) {\n throw new Error(`Record is missing key \"${k}\".`);\n }\n try {\n return t.covariant(x[k]);\n }\n catch (e) {\n throw new Error(`Invalid ${this.display()} argument: \\n\\nfield ${k} -> ${e.message}`);\n }\n }))\n return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n encodeValue(x) {\n const values = this._fields.map(([key]) => x[key]);\n const bufs = zipWith(this._fields, values, ([, c], d) => c.encodeValue(d));\n return concat(...bufs);\n }\n _buildTypeTableImpl(T) {\n this._fields.forEach(([_, value]) => value.buildTypeTable(T));\n const opCode = slebEncode(-20 /* IDLTypeIds.Record */);\n const len = lebEncode(this._fields.length);\n const fields = this._fields.map(([key, value]) => concat(lebEncode(idlLabelToId(key)), value.encodeType(T)));\n T.add(this, concat(opCode, len, concat(...fields)));\n }\n decodeValue(b, t) {\n const record = this.checkType(t);\n if (!(record instanceof RecordClass)) {\n throw new Error('Not a record type');\n }\n const x = {};\n let expectedRecordIdx = 0;\n let actualRecordIdx = 0;\n while (actualRecordIdx < record._fields.length) {\n const [hash, type] = record._fields[actualRecordIdx];\n if (expectedRecordIdx >= this._fields.length) {\n // skip unexpected left over fields present on the wire\n type.decodeValue(b, type);\n actualRecordIdx++;\n continue;\n }\n const [expectKey, expectType] = this._fields[expectedRecordIdx];\n const expectedId = idlLabelToId(this._fields[expectedRecordIdx][0]);\n const actualId = idlLabelToId(hash);\n if (expectedId === actualId) {\n // the current field on the wire matches the expected field\n x[expectKey] = expectType.decodeValue(b, type);\n expectedRecordIdx++;\n actualRecordIdx++;\n }\n else if (actualId > expectedId) {\n // The expected field does not exist on the wire\n if (expectType instanceof OptClass || expectType instanceof ReservedClass) {\n x[expectKey] = [];\n expectedRecordIdx++;\n }\n else {\n throw new Error('Cannot find required field ' + expectKey);\n }\n }\n else {\n // The field on the wire does not exist in the output type, so we can skip it\n type.decodeValue(b, type);\n actualRecordIdx++;\n }\n }\n // initialize left over expected optional fields\n for (const [expectKey, expectType] of this._fields.slice(expectedRecordIdx)) {\n if (expectType instanceof OptClass || expectType instanceof ReservedClass) {\n // TODO this assumes null value in opt is represented as []\n x[expectKey] = [];\n }\n else {\n throw new Error('Cannot find required field ' + expectKey);\n }\n }\n return x;\n }\n get name() {\n const fields = this._fields.map(([key, value]) => key + ':' + value.name);\n return `record {${fields.join('; ')}}`;\n }\n display() {\n const fields = this._fields.map(([key, value]) => key + ':' + value.display());\n return `record {${fields.join('; ')}}`;\n }\n valueToString(x) {\n const values = this._fields.map(([key]) => x[key]);\n const fields = zipWith(this._fields, values, ([k, c], d) => k + '=' + c.valueToString(d));\n return `record {${fields.join('; ')}}`;\n }\n}\n/**\n * Represents Tuple, a syntactic sugar for Record.\n * @param {Type} components\n */\nexport class TupleClass extends RecordClass {\n constructor(_components) {\n const x = {};\n _components.forEach((e, i) => (x['_' + i + '_'] = e));\n super(x);\n this._components = _components;\n }\n accept(v, d) {\n return v.visitTuple(this, this._components, d);\n }\n covariant(x) {\n // `>=` because tuples can be covariant when encoded.\n if (Array.isArray(x) &&\n x.length >= this._fields.length &&\n this._components.every((t, i) => {\n try {\n return t.covariant(x[i]);\n }\n catch (e) {\n throw new Error(`Invalid ${this.display()} argument: \\n\\nindex ${i} -> ${e.message}`);\n }\n }))\n return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n encodeValue(x) {\n const bufs = zipWith(this._components, x, (c, d) => c.encodeValue(d));\n return concat(...bufs);\n }\n decodeValue(b, t) {\n const tuple = this.checkType(t);\n if (!(tuple instanceof TupleClass)) {\n throw new Error('not a tuple type');\n }\n if (tuple._components.length < this._components.length) {\n throw new Error('tuple mismatch');\n }\n const res = [];\n for (const [i, wireType] of tuple._components.entries()) {\n if (i >= this._components.length) {\n // skip value\n wireType.decodeValue(b, wireType);\n }\n else {\n res.push(this._components[i].decodeValue(b, wireType));\n }\n }\n return res;\n }\n display() {\n const fields = this._components.map(value => value.display());\n return `record {${fields.join('; ')}}`;\n }\n valueToString(values) {\n const fields = zipWith(this._components, values, (c, d) => c.valueToString(d));\n return `record {${fields.join('; ')}}`;\n }\n}\n/**\n * Represents an IDL Variant\n * @param {object} [fields] - mapping of function name to Type\n */\nexport class VariantClass extends ConstructType {\n constructor(fields = {}) {\n super();\n this._fields = Object.entries(fields).sort((a, b) => idlLabelToId(a[0]) - idlLabelToId(b[0]));\n }\n accept(v, d) {\n return v.visitVariant(this, this._fields, d);\n }\n covariant(x) {\n if (typeof x === 'object' &&\n Object.entries(x).length === 1 &&\n this._fields.every(([k, v]) => {\n try {\n // eslint-disable-next-line\n return !x.hasOwnProperty(k) || v.covariant(x[k]);\n }\n catch (e) {\n throw new Error(`Invalid ${this.display()} argument: \\n\\nvariant ${k} -> ${e.message}`);\n }\n }))\n return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n encodeValue(x) {\n for (let i = 0; i < this._fields.length; i++) {\n const [name, type] = this._fields[i];\n // eslint-disable-next-line\n if (x.hasOwnProperty(name)) {\n const idx = lebEncode(i);\n const buf = type.encodeValue(x[name]);\n return concat(idx, buf);\n }\n }\n throw Error('Variant has no data: ' + x);\n }\n _buildTypeTableImpl(typeTable) {\n this._fields.forEach(([, type]) => {\n type.buildTypeTable(typeTable);\n });\n const opCode = slebEncode(-21 /* IDLTypeIds.Variant */);\n const len = lebEncode(this._fields.length);\n const fields = this._fields.map(([key, value]) => concat(lebEncode(idlLabelToId(key)), value.encodeType(typeTable)));\n typeTable.add(this, concat(opCode, len, ...fields));\n }\n decodeValue(b, t) {\n const variant = this.checkType(t);\n if (!(variant instanceof VariantClass)) {\n throw new Error('Not a variant type');\n }\n const idx = Number(lebDecode(b));\n if (idx >= variant._fields.length) {\n throw Error('Invalid variant index: ' + idx);\n }\n const [wireHash, wireType] = variant._fields[idx];\n for (const [key, expectType] of this._fields) {\n if (idlLabelToId(wireHash) === idlLabelToId(key)) {\n const value = expectType.decodeValue(b, wireType);\n return { [key]: value };\n }\n }\n throw new Error('Cannot find field hash ' + wireHash);\n }\n get name() {\n const fields = this._fields.map(([key, type]) => key + ':' + type.name);\n return `variant {${fields.join('; ')}}`;\n }\n display() {\n const fields = this._fields.map(([key, type]) => key + (type.name === 'null' ? '' : `:${type.display()}`));\n return `variant {${fields.join('; ')}}`;\n }\n valueToString(x) {\n for (const [name, type] of this._fields) {\n // eslint-disable-next-line\n if (x.hasOwnProperty(name)) {\n const value = type.valueToString(x[name]);\n if (value === 'null') {\n return `variant {${name}}`;\n }\n else {\n return `variant {${name}=${value}}`;\n }\n }\n }\n throw new Error('Variant has no data: ' + x);\n }\n}\n/**\n * Represents a reference to an IDL type, used for defining recursive data\n * types.\n */\nexport class RecClass extends ConstructType {\n constructor() {\n super(...arguments);\n this._id = RecClass._counter++;\n this._type = undefined;\n }\n accept(v, d) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return v.visitRec(this, this._type, d);\n }\n fill(t) {\n this._type = t;\n }\n getType() {\n return this._type;\n }\n covariant(x) {\n if (this._type ? this._type.covariant(x) : false)\n return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n encodeValue(x) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return this._type.encodeValue(x);\n }\n _buildTypeTableImpl(typeTable) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n typeTable.add(this, new Uint8Array([]));\n this._type.buildTypeTable(typeTable);\n typeTable.merge(this, this._type.name);\n }\n decodeValue(b, t) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return this._type.decodeValue(b, t);\n }\n get name() {\n return `rec_${this._id}`;\n }\n display() {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return `μ${this.name}.${this._type.name}`;\n }\n valueToString(x) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return this._type.valueToString(x);\n }\n}\nRecClass._counter = 0;\nfunction decodePrincipalId(b) {\n const x = safeReadUint8(b);\n if (x !== 1) {\n throw new Error('Cannot decode principal');\n }\n const len = Number(lebDecode(b));\n return PrincipalId.fromUint8Array(new Uint8Array(safeRead(b, len)));\n}\n/**\n * Represents an IDL principal reference\n */\nexport class PrincipalClass extends PrimitiveType {\n accept(v, d) {\n return v.visitPrincipal(this, d);\n }\n covariant(x) {\n if (x && x._isPrincipal)\n return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n encodeValue(x) {\n const buf = x.toUint8Array();\n const len = lebEncode(buf.byteLength);\n return concat(new Uint8Array([1]), len, buf);\n }\n encodeType() {\n return slebEncode(-24 /* IDLTypeIds.Principal */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n return decodePrincipalId(b);\n }\n get name() {\n return 'principal';\n }\n valueToString(x) {\n return `${this.name} \"${x.toText()}\"`;\n }\n}\n/**\n * Represents an IDL function reference.\n * @param argTypes Argument types.\n * @param retTypes Return types.\n * @param annotations Function annotations.\n */\nexport class FuncClass extends ConstructType {\n constructor(argTypes, retTypes, annotations = []) {\n super();\n this.argTypes = argTypes;\n this.retTypes = retTypes;\n this.annotations = annotations;\n }\n static argsToString(types, v) {\n if (types.length !== v.length) {\n throw new Error('arity mismatch');\n }\n return '(' + types.map((t, i) => t.valueToString(v[i])).join(', ') + ')';\n }\n accept(v, d) {\n return v.visitFunc(this, d);\n }\n covariant(x) {\n if (Array.isArray(x) && x.length === 2 && x[0] && x[0]._isPrincipal && typeof x[1] === 'string')\n return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n encodeValue([principal, methodName]) {\n const buf = principal.toUint8Array();\n const len = lebEncode(buf.byteLength);\n const canister = concat(new Uint8Array([1]), len, buf);\n const method = new TextEncoder().encode(methodName);\n const methodLen = lebEncode(method.byteLength);\n return concat(new Uint8Array([1]), canister, methodLen, method);\n }\n _buildTypeTableImpl(T) {\n this.argTypes.forEach(arg => arg.buildTypeTable(T));\n this.retTypes.forEach(arg => arg.buildTypeTable(T));\n const opCode = slebEncode(-22 /* IDLTypeIds.Func */);\n const argLen = lebEncode(this.argTypes.length);\n const args = concat(...this.argTypes.map(arg => arg.encodeType(T)));\n const retLen = lebEncode(this.retTypes.length);\n const rets = concat(...this.retTypes.map(arg => arg.encodeType(T)));\n const annLen = lebEncode(this.annotations.length);\n const anns = concat(...this.annotations.map(a => this.encodeAnnotation(a)));\n T.add(this, concat(opCode, argLen, args, retLen, rets, annLen, anns));\n }\n decodeValue(b) {\n const x = safeReadUint8(b);\n if (x !== 1) {\n throw new Error('Cannot decode function reference');\n }\n const canister = decodePrincipalId(b);\n const mLen = Number(lebDecode(b));\n const buf = safeRead(b, mLen);\n const decoder = new TextDecoder('utf8', { fatal: true });\n const method = decoder.decode(buf);\n return [canister, method];\n }\n get name() {\n const args = this.argTypes.map(arg => arg.name).join(', ');\n const rets = this.retTypes.map(arg => arg.name).join(', ');\n const annon = ' ' + this.annotations.join(' ');\n return `(${args}) -> (${rets})${annon}`;\n }\n valueToString([principal, str]) {\n return `func \"${principal.toText()}\".${str}`;\n }\n display() {\n const args = this.argTypes.map(arg => arg.display()).join(', ');\n const rets = this.retTypes.map(arg => arg.display()).join(', ');\n const annon = ' ' + this.annotations.join(' ');\n return `(${args}) → (${rets})${annon}`;\n }\n encodeAnnotation(ann) {\n if (ann === 'query') {\n return new Uint8Array([1]);\n }\n else if (ann === 'oneway') {\n return new Uint8Array([2]);\n }\n else if (ann === 'composite_query') {\n return new Uint8Array([3]);\n }\n else {\n throw new Error('Illegal function annotation');\n }\n }\n}\nexport class ServiceClass extends ConstructType {\n constructor(fields) {\n super();\n this._fields = Object.entries(fields).sort((a, b) => {\n if (a[0] < b[0]) {\n return -1;\n }\n if (a[0] > b[0]) {\n return 1;\n }\n return 0;\n });\n }\n accept(v, d) {\n return v.visitService(this, d);\n }\n covariant(x) {\n if (x && x._isPrincipal)\n return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n encodeValue(x) {\n const buf = x.toUint8Array();\n const len = lebEncode(buf.length);\n return concat(new Uint8Array([1]), len, buf);\n }\n _buildTypeTableImpl(T) {\n this._fields.forEach(([_, func]) => func.buildTypeTable(T));\n const opCode = slebEncode(-23 /* IDLTypeIds.Service */);\n const len = lebEncode(this._fields.length);\n const meths = this._fields.map(([label, func]) => {\n const labelBuf = new TextEncoder().encode(label);\n const labelLen = lebEncode(labelBuf.length);\n return concat(labelLen, labelBuf, func.encodeType(T));\n });\n T.add(this, concat(opCode, len, ...meths));\n }\n decodeValue(b) {\n return decodePrincipalId(b);\n }\n get name() {\n const fields = this._fields.map(([key, value]) => key + ':' + value.name);\n return `service {${fields.join('; ')}}`;\n }\n valueToString(x) {\n return `service \"${x.toText()}\"`;\n }\n}\n/**\n * Takes an unknown value and returns a string representation of it.\n * @param x - unknown value\n * @returns {string} string representation of the value\n */\nfunction toReadableString(x) {\n const str = JSON.stringify(x, (_key, value) => typeof value === 'bigint' ? `BigInt(${value})` : value);\n return str && str.length > toReadableString_max\n ? str.substring(0, toReadableString_max - 3) + '...'\n : str;\n}\n/**\n * Encode a array of values\n * @param argTypes - array of Types\n * @param args - array of values\n * @returns {ArrayBuffer} serialised value\n */\nexport function encode(argTypes, args) {\n if (args.length < argTypes.length) {\n throw Error('Wrong number of message arguments');\n }\n const typeTable = new TypeTable();\n argTypes.forEach(t => t.buildTypeTable(typeTable));\n const magic = new TextEncoder().encode(magicNumber);\n const table = typeTable.encode();\n const len = lebEncode(args.length);\n const typs = concat(...argTypes.map(t => t.encodeType(typeTable)));\n const vals = concat(...zipWith(argTypes, args, (t, x) => {\n try {\n t.covariant(x);\n }\n catch (e) {\n const err = new Error(e.message + '\\n\\n');\n throw err;\n }\n return t.encodeValue(x);\n }));\n return concat(magic, table, len, typs, vals);\n}\n/**\n * Decode a binary value\n * @param retTypes - Types expected in the buffer.\n * @param bytes - hex-encoded string, or buffer.\n * @returns Value deserialised to JS type\n */\nexport function decode(retTypes, bytes) {\n const b = new Pipe(bytes);\n if (bytes.byteLength < magicNumber.length) {\n throw new Error('Message length smaller than magic number');\n }\n const magicBuffer = safeRead(b, magicNumber.length);\n const magic = new TextDecoder().decode(magicBuffer);\n if (magic !== magicNumber) {\n throw new Error('Wrong magic number: ' + JSON.stringify(magic));\n }\n function readTypeTable(pipe) {\n const typeTable = [];\n const len = Number(lebDecode(pipe));\n for (let i = 0; i < len; i++) {\n const ty = Number(slebDecode(pipe));\n switch (ty) {\n case -18 /* IDLTypeIds.Opt */:\n case -19 /* IDLTypeIds.Vector */: {\n const t = Number(slebDecode(pipe));\n typeTable.push([ty, t]);\n break;\n }\n case -20 /* IDLTypeIds.Record */:\n case -21 /* IDLTypeIds.Variant */: {\n const fields = [];\n let objectLength = Number(lebDecode(pipe));\n let prevHash;\n while (objectLength--) {\n const hash = Number(lebDecode(pipe));\n if (hash >= Math.pow(2, 32)) {\n throw new Error('field id out of 32-bit range');\n }\n if (typeof prevHash === 'number' && prevHash >= hash) {\n throw new Error('field id collision or not sorted');\n }\n prevHash = hash;\n const t = Number(slebDecode(pipe));\n fields.push([hash, t]);\n }\n typeTable.push([ty, fields]);\n break;\n }\n case -22 /* IDLTypeIds.Func */: {\n const args = [];\n let argLength = Number(lebDecode(pipe));\n while (argLength--) {\n args.push(Number(slebDecode(pipe)));\n }\n const returnValues = [];\n let returnValuesLength = Number(lebDecode(pipe));\n while (returnValuesLength--) {\n returnValues.push(Number(slebDecode(pipe)));\n }\n const annotations = [];\n let annotationLength = Number(lebDecode(pipe));\n while (annotationLength--) {\n const annotation = Number(lebDecode(pipe));\n switch (annotation) {\n case 1: {\n annotations.push('query');\n break;\n }\n case 2: {\n annotations.push('oneway');\n break;\n }\n case 3: {\n annotations.push('composite_query');\n break;\n }\n default:\n throw new Error('unknown annotation');\n }\n }\n typeTable.push([ty, [args, returnValues, annotations]]);\n break;\n }\n case -23 /* IDLTypeIds.Service */: {\n let servLength = Number(lebDecode(pipe));\n const methods = [];\n while (servLength--) {\n const nameLength = Number(lebDecode(pipe));\n const funcName = new TextDecoder().decode(safeRead(pipe, nameLength));\n const funcType = slebDecode(pipe);\n methods.push([funcName, funcType]);\n }\n typeTable.push([ty, methods]);\n break;\n }\n default:\n throw new Error('Illegal op_code: ' + ty);\n }\n }\n const rawList = [];\n const length = Number(lebDecode(pipe));\n for (let i = 0; i < length; i++) {\n rawList.push(Number(slebDecode(pipe)));\n }\n return [typeTable, rawList];\n }\n const [rawTable, rawTypes] = readTypeTable(b);\n if (rawTypes.length < retTypes.length) {\n throw new Error('Wrong number of return values');\n }\n const table = rawTable.map(_ => Rec());\n function getType(t) {\n if (t < -24) {\n throw new Error('future value not supported');\n }\n if (t < 0) {\n switch (t) {\n case -1:\n return Null;\n case -2:\n return Bool;\n case -3:\n return Nat;\n case -4:\n return Int;\n case -5:\n return Nat8;\n case -6:\n return Nat16;\n case -7:\n return Nat32;\n case -8:\n return Nat64;\n case -9:\n return Int8;\n case -10:\n return Int16;\n case -11:\n return Int32;\n case -12:\n return Int64;\n case -13:\n return Float32;\n case -14:\n return Float64;\n case -15:\n return Text;\n case -16:\n return Reserved;\n case -17:\n return Empty;\n case -24:\n return Principal;\n default:\n throw new Error('Illegal op_code: ' + t);\n }\n }\n if (t >= rawTable.length) {\n throw new Error('type index out of range');\n }\n return table[t];\n }\n function buildType(entry) {\n switch (entry[0]) {\n case -19 /* IDLTypeIds.Vector */: {\n const ty = getType(entry[1]);\n return Vec(ty);\n }\n case -18 /* IDLTypeIds.Opt */: {\n const ty = getType(entry[1]);\n return Opt(ty);\n }\n case -20 /* IDLTypeIds.Record */: {\n const fields = {};\n for (const [hash, ty] of entry[1]) {\n const name = `_${hash}_`;\n fields[name] = getType(ty);\n }\n const record = Record(fields);\n const tuple = record.tryAsTuple();\n if (Array.isArray(tuple)) {\n return Tuple(...tuple);\n }\n else {\n return record;\n }\n }\n case -21 /* IDLTypeIds.Variant */: {\n const fields = {};\n for (const [hash, ty] of entry[1]) {\n const name = `_${hash}_`;\n fields[name] = getType(ty);\n }\n return Variant(fields);\n }\n case -22 /* IDLTypeIds.Func */: {\n const [args, returnValues, annotations] = entry[1];\n return Func(args.map((t) => getType(t)), returnValues.map((t) => getType(t)), annotations);\n }\n case -23 /* IDLTypeIds.Service */: {\n const rec = {};\n const methods = entry[1];\n for (const [name, typeRef] of methods) {\n let type = getType(typeRef);\n if (type instanceof RecClass) {\n // unpack reference type\n type = type.getType();\n }\n if (!(type instanceof FuncClass)) {\n throw new Error('Illegal service definition: services can only contain functions');\n }\n rec[name] = type;\n }\n return Service(rec);\n }\n default:\n throw new Error('Illegal op_code: ' + entry[0]);\n }\n }\n rawTable.forEach((entry, i) => {\n // Process function type first, so that we can construct the correct service type\n if (entry[0] === -22 /* IDLTypeIds.Func */) {\n const t = buildType(entry);\n table[i].fill(t);\n }\n });\n rawTable.forEach((entry, i) => {\n if (entry[0] !== -22 /* IDLTypeIds.Func */) {\n const t = buildType(entry);\n table[i].fill(t);\n }\n });\n const types = rawTypes.map(t => getType(t));\n const output = retTypes.map((t, i) => {\n return t.decodeValue(b, types[i]);\n });\n // skip unused values\n for (let ind = retTypes.length; ind < types.length; ind++) {\n types[ind].decodeValue(b, types[ind]);\n }\n if (b.byteLength > 0) {\n throw new Error('decode: Left-over bytes');\n }\n return output;\n}\n// Export Types instances.\nexport const Empty = new EmptyClass();\nexport const Reserved = new ReservedClass();\n/**\n * Client-only type for deserializing unknown data. Not supported by Candid, and its use is discouraged.\n */\nexport const Unknown = new UnknownClass();\nexport const Bool = new BoolClass();\nexport const Null = new NullClass();\nexport const Text = new TextClass();\nexport const Int = new IntClass();\nexport const Nat = new NatClass();\nexport const Float32 = new FloatClass(32);\nexport const Float64 = new FloatClass(64);\nexport const Int8 = new FixedIntClass(8);\nexport const Int16 = new FixedIntClass(16);\nexport const Int32 = new FixedIntClass(32);\nexport const Int64 = new FixedIntClass(64);\nexport const Nat8 = new FixedNatClass(8);\nexport const Nat16 = new FixedNatClass(16);\nexport const Nat32 = new FixedNatClass(32);\nexport const Nat64 = new FixedNatClass(64);\nexport const Principal = new PrincipalClass();\n/**\n *\n * @param types array of any types\n * @returns TupleClass from those types\n */\nexport function Tuple(...types) {\n return new TupleClass(types);\n}\n/**\n *\n * @param t IDL Type\n * @returns VecClass from that type\n */\nexport function Vec(t) {\n return new VecClass(t);\n}\n/**\n *\n * @param t IDL Type\n * @returns OptClass of Type\n */\nexport function Opt(t) {\n return new OptClass(t);\n}\n/**\n *\n * @param t Record of string and IDL Type\n * @returns RecordClass of string and Type\n */\nexport function Record(t) {\n return new RecordClass(t);\n}\n/**\n *\n * @param fields Record of string and IDL Type\n * @returns VariantClass\n */\nexport function Variant(fields) {\n return new VariantClass(fields);\n}\n/**\n *\n * @returns new RecClass\n */\nexport function Rec() {\n return new RecClass();\n}\n/**\n *\n * @param args array of IDL Types\n * @param ret array of IDL Types\n * @param annotations array of strings, [] by default\n * @returns new FuncClass\n */\nexport function Func(args, ret, annotations = []) {\n return new FuncClass(args, ret, annotations);\n}\n/**\n *\n * @param t Record of string and FuncClass\n * @returns ServiceClass\n */\nexport function Service(t) {\n return new ServiceClass(t);\n}\n//# sourceMappingURL=idl.js.map","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","/* eslint-disable */\n\nmodule.exports = function decodeAsm (stdlib, foreign, buffer) {\n 'use asm'\n\n // -- Imports\n\n var heap = new stdlib.Uint8Array(buffer)\n // var log = foreign.log\n var pushInt = foreign.pushInt\n var pushInt32 = foreign.pushInt32\n var pushInt32Neg = foreign.pushInt32Neg\n var pushInt64 = foreign.pushInt64\n var pushInt64Neg = foreign.pushInt64Neg\n var pushFloat = foreign.pushFloat\n var pushFloatSingle = foreign.pushFloatSingle\n var pushFloatDouble = foreign.pushFloatDouble\n var pushTrue = foreign.pushTrue\n var pushFalse = foreign.pushFalse\n var pushUndefined = foreign.pushUndefined\n var pushNull = foreign.pushNull\n var pushInfinity = foreign.pushInfinity\n var pushInfinityNeg = foreign.pushInfinityNeg\n var pushNaN = foreign.pushNaN\n var pushNaNNeg = foreign.pushNaNNeg\n\n var pushArrayStart = foreign.pushArrayStart\n var pushArrayStartFixed = foreign.pushArrayStartFixed\n var pushArrayStartFixed32 = foreign.pushArrayStartFixed32\n var pushArrayStartFixed64 = foreign.pushArrayStartFixed64\n var pushObjectStart = foreign.pushObjectStart\n var pushObjectStartFixed = foreign.pushObjectStartFixed\n var pushObjectStartFixed32 = foreign.pushObjectStartFixed32\n var pushObjectStartFixed64 = foreign.pushObjectStartFixed64\n\n var pushByteString = foreign.pushByteString\n var pushByteStringStart = foreign.pushByteStringStart\n var pushUtf8String = foreign.pushUtf8String\n var pushUtf8StringStart = foreign.pushUtf8StringStart\n\n var pushSimpleUnassigned = foreign.pushSimpleUnassigned\n\n var pushTagStart = foreign.pushTagStart\n var pushTagStart4 = foreign.pushTagStart4\n var pushTagStart8 = foreign.pushTagStart8\n var pushTagUnassigned = foreign.pushTagUnassigned\n\n var pushBreak = foreign.pushBreak\n\n var pow = stdlib.Math.pow\n\n // -- Constants\n\n\n // -- Mutable Variables\n\n var offset = 0\n var inputLength = 0\n var code = 0\n\n // Decode a cbor string represented as Uint8Array\n // which is allocated on the heap from 0 to inputLength\n //\n // input - Int\n //\n // Returns Code - Int,\n // Success = 0\n // Error > 0\n function parse (input) {\n input = input | 0\n\n offset = 0\n inputLength = input\n\n while ((offset | 0) < (inputLength | 0)) {\n code = jumpTable[heap[offset] & 255](heap[offset] | 0) | 0\n\n if ((code | 0) > 0) {\n break\n }\n }\n\n return code | 0\n }\n\n // -- Helper Function\n\n function checkOffset (n) {\n n = n | 0\n\n if ((((offset | 0) + (n | 0)) | 0) < (inputLength | 0)) {\n return 0\n }\n\n return 1\n }\n\n function readUInt16 (n) {\n n = n | 0\n\n return (\n (heap[n | 0] << 8) | heap[(n + 1) | 0]\n ) | 0\n }\n\n function readUInt32 (n) {\n n = n | 0\n\n return (\n (heap[n | 0] << 24) | (heap[(n + 1) | 0] << 16) | (heap[(n + 2) | 0] << 8) | heap[(n + 3) | 0]\n ) | 0\n }\n\n // -- Initial Byte Handlers\n\n function INT_P (octet) {\n octet = octet | 0\n\n pushInt(octet | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function UINT_P_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushInt(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function UINT_P_16 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushInt(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function UINT_P_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushInt32(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function UINT_P_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushInt64(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function INT_N (octet) {\n octet = octet | 0\n\n pushInt((-1 - ((octet - 32) | 0)) | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function UINT_N_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushInt(\n (-1 - (heap[(offset + 1) | 0] | 0)) | 0\n )\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function UINT_N_16 (octet) {\n octet = octet | 0\n\n var val = 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n val = readUInt16((offset + 1) | 0) | 0\n pushInt((-1 - (val | 0)) | 0)\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function UINT_N_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushInt32Neg(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function UINT_N_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushInt64Neg(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function BYTE_STRING (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var step = 0\n\n step = (octet - 64) | 0\n if (checkOffset(step | 0) | 0) {\n return 1\n }\n\n start = (offset + 1) | 0\n end = (((offset + 1) | 0) + (step | 0)) | 0\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_8 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n length = heap[(offset + 1) | 0] | 0\n start = (offset + 2) | 0\n end = (((offset + 2) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 1) | 0) | 0) {\n return 1\n }\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_16 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n length = readUInt16((offset + 1) | 0) | 0\n start = (offset + 3) | 0\n end = (((offset + 3) | 0) + (length | 0)) | 0\n\n\n if (checkOffset((length + 2) | 0) | 0) {\n return 1\n }\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_32 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n length = readUInt32((offset + 1) | 0) | 0\n start = (offset + 5) | 0\n end = (((offset + 5) | 0) + (length | 0)) | 0\n\n\n if (checkOffset((length + 4) | 0) | 0) {\n return 1\n }\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_64 (octet) {\n // NOT IMPLEMENTED\n octet = octet | 0\n\n return 1\n }\n\n function BYTE_STRING_BREAK (octet) {\n octet = octet | 0\n\n pushByteStringStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function UTF8_STRING (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var step = 0\n\n step = (octet - 96) | 0\n\n if (checkOffset(step | 0) | 0) {\n return 1\n }\n\n start = (offset + 1) | 0\n end = (((offset + 1) | 0) + (step | 0)) | 0\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_8 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n length = heap[(offset + 1) | 0] | 0\n start = (offset + 2) | 0\n end = (((offset + 2) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 1) | 0) | 0) {\n return 1\n }\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_16 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n length = readUInt16((offset + 1) | 0) | 0\n start = (offset + 3) | 0\n end = (((offset + 3) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 2) | 0) | 0) {\n return 1\n }\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_32 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n length = readUInt32((offset + 1) | 0) | 0\n start = (offset + 5) | 0\n end = (((offset + 5) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 4) | 0) | 0) {\n return 1\n }\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_64 (octet) {\n // NOT IMPLEMENTED\n octet = octet | 0\n\n return 1\n }\n\n function UTF8_STRING_BREAK (octet) {\n octet = octet | 0\n\n pushUtf8StringStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function ARRAY (octet) {\n octet = octet | 0\n\n pushArrayStartFixed((octet - 128) | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function ARRAY_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushArrayStartFixed(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function ARRAY_16 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushArrayStartFixed(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function ARRAY_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushArrayStartFixed32(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function ARRAY_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushArrayStartFixed64(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function ARRAY_BREAK (octet) {\n octet = octet | 0\n\n pushArrayStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function MAP (octet) {\n octet = octet | 0\n\n var step = 0\n\n step = (octet - 160) | 0\n\n if (checkOffset(step | 0) | 0) {\n return 1\n }\n\n pushObjectStartFixed(step | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function MAP_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushObjectStartFixed(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function MAP_16 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushObjectStartFixed(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function MAP_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushObjectStartFixed32(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function MAP_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushObjectStartFixed64(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function MAP_BREAK (octet) {\n octet = octet | 0\n\n pushObjectStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function TAG_KNOWN (octet) {\n octet = octet | 0\n\n pushTagStart((octet - 192| 0) | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BIGNUM_POS (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BIGNUM_NEG (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_FRAC (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BIGNUM_FLOAT (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_UNASSIGNED (octet) {\n octet = octet | 0\n\n pushTagStart((octet - 192| 0) | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BASE64_URL (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BASE64 (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BASE16 (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_MORE_1 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushTagStart(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2 | 0)\n\n return 0\n }\n\n function TAG_MORE_2 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushTagStart(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3 | 0)\n\n return 0\n }\n\n function TAG_MORE_4 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushTagStart4(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5 | 0)\n\n return 0\n }\n\n function TAG_MORE_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushTagStart8(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9 | 0)\n\n return 0\n }\n\n function SIMPLE_UNASSIGNED (octet) {\n octet = octet | 0\n\n pushSimpleUnassigned(((octet | 0) - 224) | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_FALSE (octet) {\n octet = octet | 0\n\n pushFalse()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_TRUE (octet) {\n octet = octet | 0\n\n pushTrue()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_NULL (octet) {\n octet = octet | 0\n\n pushNull()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_UNDEFINED (octet) {\n octet = octet | 0\n\n pushUndefined()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_BYTE (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushSimpleUnassigned(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function SIMPLE_FLOAT_HALF (octet) {\n octet = octet | 0\n\n var f = 0\n var g = 0\n var sign = 1.0\n var exp = 0.0\n var mant = 0.0\n var r = 0.0\n if (checkOffset(2) | 0) {\n return 1\n }\n\n f = heap[(offset + 1) | 0] | 0\n g = heap[(offset + 2) | 0] | 0\n\n if ((f | 0) & 0x80) {\n sign = -1.0\n }\n\n exp = +(((f | 0) & 0x7C) >> 2)\n mant = +((((f | 0) & 0x03) << 8) | g)\n\n if (+exp == 0.0) {\n pushFloat(+(\n (+sign) * +5.9604644775390625e-8 * (+mant)\n ))\n } else if (+exp == 31.0) {\n if (+sign == 1.0) {\n if (+mant > 0.0) {\n pushNaN()\n } else {\n pushInfinity()\n }\n } else {\n if (+mant > 0.0) {\n pushNaNNeg()\n } else {\n pushInfinityNeg()\n }\n }\n } else {\n pushFloat(+(\n +sign * pow(+2, +(+exp - 25.0)) * +(1024.0 + mant)\n ))\n }\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function SIMPLE_FLOAT_SINGLE (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushFloatSingle(\n heap[(offset + 1) | 0] | 0,\n heap[(offset + 2) | 0] | 0,\n heap[(offset + 3) | 0] | 0,\n heap[(offset + 4) | 0] | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function SIMPLE_FLOAT_DOUBLE (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushFloatDouble(\n heap[(offset + 1) | 0] | 0,\n heap[(offset + 2) | 0] | 0,\n heap[(offset + 3) | 0] | 0,\n heap[(offset + 4) | 0] | 0,\n heap[(offset + 5) | 0] | 0,\n heap[(offset + 6) | 0] | 0,\n heap[(offset + 7) | 0] | 0,\n heap[(offset + 8) | 0] | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function ERROR (octet) {\n octet = octet | 0\n\n return 1\n }\n\n function BREAK (octet) {\n octet = octet | 0\n\n pushBreak()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n // -- Jump Table\n\n var jumpTable = [\n // Integer 0x00..0x17 (0..23)\n INT_P, // 0x00\n INT_P, // 0x01\n INT_P, // 0x02\n INT_P, // 0x03\n INT_P, // 0x04\n INT_P, // 0x05\n INT_P, // 0x06\n INT_P, // 0x07\n INT_P, // 0x08\n INT_P, // 0x09\n INT_P, // 0x0A\n INT_P, // 0x0B\n INT_P, // 0x0C\n INT_P, // 0x0D\n INT_P, // 0x0E\n INT_P, // 0x0F\n INT_P, // 0x10\n INT_P, // 0x11\n INT_P, // 0x12\n INT_P, // 0x13\n INT_P, // 0x14\n INT_P, // 0x15\n INT_P, // 0x16\n INT_P, // 0x17\n // Unsigned integer (one-byte uint8_t follows)\n UINT_P_8, // 0x18\n // Unsigned integer (two-byte uint16_t follows)\n UINT_P_16, // 0x19\n // Unsigned integer (four-byte uint32_t follows)\n UINT_P_32, // 0x1a\n // Unsigned integer (eight-byte uint64_t follows)\n UINT_P_64, // 0x1b\n ERROR, // 0x1c\n ERROR, // 0x1d\n ERROR, // 0x1e\n ERROR, // 0x1f\n // Negative integer -1-0x00..-1-0x17 (-1..-24)\n INT_N, // 0x20\n INT_N, // 0x21\n INT_N, // 0x22\n INT_N, // 0x23\n INT_N, // 0x24\n INT_N, // 0x25\n INT_N, // 0x26\n INT_N, // 0x27\n INT_N, // 0x28\n INT_N, // 0x29\n INT_N, // 0x2A\n INT_N, // 0x2B\n INT_N, // 0x2C\n INT_N, // 0x2D\n INT_N, // 0x2E\n INT_N, // 0x2F\n INT_N, // 0x30\n INT_N, // 0x31\n INT_N, // 0x32\n INT_N, // 0x33\n INT_N, // 0x34\n INT_N, // 0x35\n INT_N, // 0x36\n INT_N, // 0x37\n // Negative integer -1-n (one-byte uint8_t for n follows)\n UINT_N_8, // 0x38\n // Negative integer -1-n (two-byte uint16_t for n follows)\n UINT_N_16, // 0x39\n // Negative integer -1-n (four-byte uint32_t for nfollows)\n UINT_N_32, // 0x3a\n // Negative integer -1-n (eight-byte uint64_t for n follows)\n UINT_N_64, // 0x3b\n ERROR, // 0x3c\n ERROR, // 0x3d\n ERROR, // 0x3e\n ERROR, // 0x3f\n // byte string (0x00..0x17 bytes follow)\n BYTE_STRING, // 0x40\n BYTE_STRING, // 0x41\n BYTE_STRING, // 0x42\n BYTE_STRING, // 0x43\n BYTE_STRING, // 0x44\n BYTE_STRING, // 0x45\n BYTE_STRING, // 0x46\n BYTE_STRING, // 0x47\n BYTE_STRING, // 0x48\n BYTE_STRING, // 0x49\n BYTE_STRING, // 0x4A\n BYTE_STRING, // 0x4B\n BYTE_STRING, // 0x4C\n BYTE_STRING, // 0x4D\n BYTE_STRING, // 0x4E\n BYTE_STRING, // 0x4F\n BYTE_STRING, // 0x50\n BYTE_STRING, // 0x51\n BYTE_STRING, // 0x52\n BYTE_STRING, // 0x53\n BYTE_STRING, // 0x54\n BYTE_STRING, // 0x55\n BYTE_STRING, // 0x56\n BYTE_STRING, // 0x57\n // byte string (one-byte uint8_t for n, and then n bytes follow)\n BYTE_STRING_8, // 0x58\n // byte string (two-byte uint16_t for n, and then n bytes follow)\n BYTE_STRING_16, // 0x59\n // byte string (four-byte uint32_t for n, and then n bytes follow)\n BYTE_STRING_32, // 0x5a\n // byte string (eight-byte uint64_t for n, and then n bytes follow)\n BYTE_STRING_64, // 0x5b\n ERROR, // 0x5c\n ERROR, // 0x5d\n ERROR, // 0x5e\n // byte string, byte strings follow, terminated by \"break\"\n BYTE_STRING_BREAK, // 0x5f\n // UTF-8 string (0x00..0x17 bytes follow)\n UTF8_STRING, // 0x60\n UTF8_STRING, // 0x61\n UTF8_STRING, // 0x62\n UTF8_STRING, // 0x63\n UTF8_STRING, // 0x64\n UTF8_STRING, // 0x65\n UTF8_STRING, // 0x66\n UTF8_STRING, // 0x67\n UTF8_STRING, // 0x68\n UTF8_STRING, // 0x69\n UTF8_STRING, // 0x6A\n UTF8_STRING, // 0x6B\n UTF8_STRING, // 0x6C\n UTF8_STRING, // 0x6D\n UTF8_STRING, // 0x6E\n UTF8_STRING, // 0x6F\n UTF8_STRING, // 0x70\n UTF8_STRING, // 0x71\n UTF8_STRING, // 0x72\n UTF8_STRING, // 0x73\n UTF8_STRING, // 0x74\n UTF8_STRING, // 0x75\n UTF8_STRING, // 0x76\n UTF8_STRING, // 0x77\n // UTF-8 string (one-byte uint8_t for n, and then n bytes follow)\n UTF8_STRING_8, // 0x78\n // UTF-8 string (two-byte uint16_t for n, and then n bytes follow)\n UTF8_STRING_16, // 0x79\n // UTF-8 string (four-byte uint32_t for n, and then n bytes follow)\n UTF8_STRING_32, // 0x7a\n // UTF-8 string (eight-byte uint64_t for n, and then n bytes follow)\n UTF8_STRING_64, // 0x7b\n // UTF-8 string, UTF-8 strings follow, terminated by \"break\"\n ERROR, // 0x7c\n ERROR, // 0x7d\n ERROR, // 0x7e\n UTF8_STRING_BREAK, // 0x7f\n // array (0x00..0x17 data items follow)\n ARRAY, // 0x80\n ARRAY, // 0x81\n ARRAY, // 0x82\n ARRAY, // 0x83\n ARRAY, // 0x84\n ARRAY, // 0x85\n ARRAY, // 0x86\n ARRAY, // 0x87\n ARRAY, // 0x88\n ARRAY, // 0x89\n ARRAY, // 0x8A\n ARRAY, // 0x8B\n ARRAY, // 0x8C\n ARRAY, // 0x8D\n ARRAY, // 0x8E\n ARRAY, // 0x8F\n ARRAY, // 0x90\n ARRAY, // 0x91\n ARRAY, // 0x92\n ARRAY, // 0x93\n ARRAY, // 0x94\n ARRAY, // 0x95\n ARRAY, // 0x96\n ARRAY, // 0x97\n // array (one-byte uint8_t fo, and then n data items follow)\n ARRAY_8, // 0x98\n // array (two-byte uint16_t for n, and then n data items follow)\n ARRAY_16, // 0x99\n // array (four-byte uint32_t for n, and then n data items follow)\n ARRAY_32, // 0x9a\n // array (eight-byte uint64_t for n, and then n data items follow)\n ARRAY_64, // 0x9b\n // array, data items follow, terminated by \"break\"\n ERROR, // 0x9c\n ERROR, // 0x9d\n ERROR, // 0x9e\n ARRAY_BREAK, // 0x9f\n // map (0x00..0x17 pairs of data items follow)\n MAP, // 0xa0\n MAP, // 0xa1\n MAP, // 0xa2\n MAP, // 0xa3\n MAP, // 0xa4\n MAP, // 0xa5\n MAP, // 0xa6\n MAP, // 0xa7\n MAP, // 0xa8\n MAP, // 0xa9\n MAP, // 0xaA\n MAP, // 0xaB\n MAP, // 0xaC\n MAP, // 0xaD\n MAP, // 0xaE\n MAP, // 0xaF\n MAP, // 0xb0\n MAP, // 0xb1\n MAP, // 0xb2\n MAP, // 0xb3\n MAP, // 0xb4\n MAP, // 0xb5\n MAP, // 0xb6\n MAP, // 0xb7\n // map (one-byte uint8_t for n, and then n pairs of data items follow)\n MAP_8, // 0xb8\n // map (two-byte uint16_t for n, and then n pairs of data items follow)\n MAP_16, // 0xb9\n // map (four-byte uint32_t for n, and then n pairs of data items follow)\n MAP_32, // 0xba\n // map (eight-byte uint64_t for n, and then n pairs of data items follow)\n MAP_64, // 0xbb\n ERROR, // 0xbc\n ERROR, // 0xbd\n ERROR, // 0xbe\n // map, pairs of data items follow, terminated by \"break\"\n MAP_BREAK, // 0xbf\n // Text-based date/time (data item follows; see Section 2.4.1)\n TAG_KNOWN, // 0xc0\n // Epoch-based date/time (data item follows; see Section 2.4.1)\n TAG_KNOWN, // 0xc1\n // Positive bignum (data item \"byte string\" follows)\n TAG_KNOWN, // 0xc2\n // Negative bignum (data item \"byte string\" follows)\n TAG_KNOWN, // 0xc3\n // Decimal Fraction (data item \"array\" follows; see Section 2.4.3)\n TAG_KNOWN, // 0xc4\n // Bigfloat (data item \"array\" follows; see Section 2.4.3)\n TAG_KNOWN, // 0xc5\n // (tagged item)\n TAG_UNASSIGNED, // 0xc6\n TAG_UNASSIGNED, // 0xc7\n TAG_UNASSIGNED, // 0xc8\n TAG_UNASSIGNED, // 0xc9\n TAG_UNASSIGNED, // 0xca\n TAG_UNASSIGNED, // 0xcb\n TAG_UNASSIGNED, // 0xcc\n TAG_UNASSIGNED, // 0xcd\n TAG_UNASSIGNED, // 0xce\n TAG_UNASSIGNED, // 0xcf\n TAG_UNASSIGNED, // 0xd0\n TAG_UNASSIGNED, // 0xd1\n TAG_UNASSIGNED, // 0xd2\n TAG_UNASSIGNED, // 0xd3\n TAG_UNASSIGNED, // 0xd4\n // Expected Conversion (data item follows; see Section 2.4.4.2)\n TAG_UNASSIGNED, // 0xd5\n TAG_UNASSIGNED, // 0xd6\n TAG_UNASSIGNED, // 0xd7\n // (more tagged items, 1/2/4/8 bytes and then a data item follow)\n TAG_MORE_1, // 0xd8\n TAG_MORE_2, // 0xd9\n TAG_MORE_4, // 0xda\n TAG_MORE_8, // 0xdb\n ERROR, // 0xdc\n ERROR, // 0xdd\n ERROR, // 0xde\n ERROR, // 0xdf\n // (simple value)\n SIMPLE_UNASSIGNED, // 0xe0\n SIMPLE_UNASSIGNED, // 0xe1\n SIMPLE_UNASSIGNED, // 0xe2\n SIMPLE_UNASSIGNED, // 0xe3\n SIMPLE_UNASSIGNED, // 0xe4\n SIMPLE_UNASSIGNED, // 0xe5\n SIMPLE_UNASSIGNED, // 0xe6\n SIMPLE_UNASSIGNED, // 0xe7\n SIMPLE_UNASSIGNED, // 0xe8\n SIMPLE_UNASSIGNED, // 0xe9\n SIMPLE_UNASSIGNED, // 0xea\n SIMPLE_UNASSIGNED, // 0xeb\n SIMPLE_UNASSIGNED, // 0xec\n SIMPLE_UNASSIGNED, // 0xed\n SIMPLE_UNASSIGNED, // 0xee\n SIMPLE_UNASSIGNED, // 0xef\n SIMPLE_UNASSIGNED, // 0xf0\n SIMPLE_UNASSIGNED, // 0xf1\n SIMPLE_UNASSIGNED, // 0xf2\n SIMPLE_UNASSIGNED, // 0xf3\n // False\n SIMPLE_FALSE, // 0xf4\n // True\n SIMPLE_TRUE, // 0xf5\n // Null\n SIMPLE_NULL, // 0xf6\n // Undefined\n SIMPLE_UNDEFINED, // 0xf7\n // (simple value, one byte follows)\n SIMPLE_BYTE, // 0xf8\n // Half-Precision Float (two-byte IEEE 754)\n SIMPLE_FLOAT_HALF, // 0xf9\n // Single-Precision Float (four-byte IEEE 754)\n SIMPLE_FLOAT_SINGLE, // 0xfa\n // Double-Precision Float (eight-byte IEEE 754)\n SIMPLE_FLOAT_DOUBLE, // 0xfb\n ERROR, // 0xfc\n ERROR, // 0xfd\n ERROR, // 0xfe\n // \"break\" stop code\n BREAK // 0xff\n ]\n\n // --\n\n return {\n parse: parse\n }\n}\n","'use strict'\n\nconst Bignumber = require('bignumber.js').BigNumber\n\nexports.MT = {\n POS_INT: 0,\n NEG_INT: 1,\n BYTE_STRING: 2,\n UTF8_STRING: 3,\n ARRAY: 4,\n MAP: 5,\n TAG: 6,\n SIMPLE_FLOAT: 7\n}\n\nexports.TAG = {\n DATE_STRING: 0,\n DATE_EPOCH: 1,\n POS_BIGINT: 2,\n NEG_BIGINT: 3,\n DECIMAL_FRAC: 4,\n BIGFLOAT: 5,\n BASE64URL_EXPECTED: 21,\n BASE64_EXPECTED: 22,\n BASE16_EXPECTED: 23,\n CBOR: 24,\n URI: 32,\n BASE64URL: 33,\n BASE64: 34,\n REGEXP: 35,\n MIME: 36\n}\n\nexports.NUMBYTES = {\n ZERO: 0,\n ONE: 24,\n TWO: 25,\n FOUR: 26,\n EIGHT: 27,\n INDEFINITE: 31\n}\n\nexports.SIMPLE = {\n FALSE: 20,\n TRUE: 21,\n NULL: 22,\n UNDEFINED: 23\n}\n\nexports.SYMS = {\n NULL: Symbol('null'),\n UNDEFINED: Symbol('undef'),\n PARENT: Symbol('parent'),\n BREAK: Symbol('break'),\n STREAM: Symbol('stream')\n}\n\nexports.SHIFT32 = Math.pow(2, 32)\nexports.SHIFT16 = Math.pow(2, 16)\n\nexports.MAX_SAFE_HIGH = 0x1fffff\nexports.NEG_ONE = new Bignumber(-1)\nexports.TEN = new Bignumber(10)\nexports.TWO = new Bignumber(2)\n\nexports.PARENT = {\n ARRAY: 0,\n OBJECT: 1,\n MAP: 2,\n TAG: 3,\n BYTE_STRING: 4,\n UTF8_STRING: 5\n}\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst Bignumber = require('bignumber.js').BigNumber\n\nconst constants = require('./constants')\nconst SHIFT32 = constants.SHIFT32\nconst SHIFT16 = constants.SHIFT16\nconst MAX_SAFE_HIGH = 0x1fffff\n\nexports.parseHalf = function parseHalf (buf) {\n var exp, mant, sign\n sign = buf[0] & 0x80 ? -1 : 1\n exp = (buf[0] & 0x7C) >> 2\n mant = ((buf[0] & 0x03) << 8) | buf[1]\n if (!exp) {\n return sign * 5.9604644775390625e-8 * mant\n } else if (exp === 0x1f) {\n return sign * (mant ? 0 / 0 : 2e308)\n } else {\n return sign * Math.pow(2, exp - 25) * (1024 + mant)\n }\n}\n\nfunction toHex (n) {\n if (n < 16) {\n return '0' + n.toString(16)\n }\n\n return n.toString(16)\n}\n\nexports.arrayBufferToBignumber = function (buf) {\n const len = buf.byteLength\n let res = ''\n for (let i = 0; i < len; i++) {\n res += toHex(buf[i])\n }\n\n return new Bignumber(res, 16)\n}\n\n// convert an Object into a Map\nexports.buildMap = (obj) => {\n const res = new Map()\n const keys = Object.keys(obj)\n const length = keys.length\n for (let i = 0; i < length; i++) {\n res.set(keys[i], obj[keys[i]])\n }\n return res\n}\n\nexports.buildInt32 = (f, g) => {\n return f * SHIFT16 + g\n}\n\nexports.buildInt64 = (f1, f2, g1, g2) => {\n const f = exports.buildInt32(f1, f2)\n const g = exports.buildInt32(g1, g2)\n\n if (f > MAX_SAFE_HIGH) {\n return new Bignumber(f).times(SHIFT32).plus(g)\n } else {\n return (f * SHIFT32) + g\n }\n}\n\nexports.writeHalf = function writeHalf (buf, half) {\n // assume 0, -0, NaN, Infinity, and -Infinity have already been caught\n\n // HACK: everyone settle in. This isn't going to be pretty.\n // Translate cn-cbor's C code (from Carsten Borman):\n\n // uint32_t be32;\n // uint16_t be16, u16;\n // union {\n // float f;\n // uint32_t u;\n // } u32;\n // u32.f = float_val;\n\n const u32 = Buffer.allocUnsafe(4)\n u32.writeFloatBE(half, 0)\n const u = u32.readUInt32BE(0)\n\n // if ((u32.u & 0x1FFF) == 0) { /* worth trying half */\n\n // hildjj: If the lower 13 bits are 0, we won't lose anything in the conversion\n if ((u & 0x1FFF) !== 0) {\n return false\n }\n\n // int s16 = (u32.u >> 16) & 0x8000;\n // int exp = (u32.u >> 23) & 0xff;\n // int mant = u32.u & 0x7fffff;\n\n var s16 = (u >> 16) & 0x8000 // top bit is sign\n const exp = (u >> 23) & 0xff // then 5 bits of exponent\n const mant = u & 0x7fffff\n\n // if (exp == 0 && mant == 0)\n // ; /* 0.0, -0.0 */\n\n // hildjj: zeros already handled. Assert if you don't believe me.\n\n // else if (exp >= 113 && exp <= 142) /* normalized */\n // s16 += ((exp - 112) << 10) + (mant >> 13);\n if ((exp >= 113) && (exp <= 142)) {\n s16 += ((exp - 112) << 10) + (mant >> 13)\n\n // else if (exp >= 103 && exp < 113) { /* denorm, exp16 = 0 */\n // if (mant & ((1 << (126 - exp)) - 1))\n // goto float32; /* loss of precision */\n // s16 += ((mant + 0x800000) >> (126 - exp));\n } else if ((exp >= 103) && (exp < 113)) {\n if (mant & ((1 << (126 - exp)) - 1)) {\n return false\n }\n s16 += ((mant + 0x800000) >> (126 - exp))\n\n // } else if (exp == 255 && mant == 0) { /* Inf */\n // s16 += 0x7c00;\n\n // hildjj: Infinity already handled\n\n // } else\n // goto float32; /* loss of range */\n } else {\n return false\n }\n\n // ensure_writable(3);\n // u16 = s16;\n // be16 = hton16p((const uint8_t*)&u16);\n buf.writeUInt16BE(s16, 0)\n return true\n}\n\nexports.keySorter = function (a, b) {\n var lenA = a[0].byteLength\n var lenB = b[0].byteLength\n\n if (lenA > lenB) {\n return 1\n }\n\n if (lenB > lenA) {\n return -1\n }\n\n return a[0].compare(b[0])\n}\n\n// Adapted from http://www.2ality.com/2012/03/signedzero.html\nexports.isNegativeZero = (x) => {\n return x === 0 && (1 / x < 0)\n}\n\nexports.nextPowerOf2 = (n) => {\n let count = 0\n // First n in the below condition is for\n // the case where n is 0\n if (n && !(n & (n - 1))) {\n return n\n }\n\n while (n !== 0) {\n n >>= 1\n count += 1\n }\n\n return 1 << count\n}\n","'use strict'\n\nconst constants = require('./constants')\nconst MT = constants.MT\nconst SIMPLE = constants.SIMPLE\nconst SYMS = constants.SYMS\n\n/**\n * A CBOR Simple Value that does not map onto a known constant.\n */\nclass Simple {\n /**\n * Creates an instance of Simple.\n *\n * @param {integer} value - the simple value's integer value\n */\n constructor (value) {\n if (typeof value !== 'number') {\n throw new Error('Invalid Simple type: ' + (typeof value))\n }\n if ((value < 0) || (value > 255) || ((value | 0) !== value)) {\n throw new Error('value must be a small positive integer: ' + value)\n }\n this.value = value\n }\n\n /**\n * Debug string for simple value\n *\n * @returns {string} simple(value)\n */\n toString () {\n return 'simple(' + this.value + ')'\n }\n\n /**\n * Debug string for simple value\n *\n * @returns {string} simple(value)\n */\n inspect () {\n return 'simple(' + this.value + ')'\n }\n\n /**\n * Push the simple value onto the CBOR stream\n *\n * @param {cbor.Encoder} gen The generator to push onto\n * @returns {number}\n */\n encodeCBOR (gen) {\n return gen._pushInt(this.value, MT.SIMPLE_FLOAT)\n }\n\n /**\n * Is the given object a Simple?\n *\n * @param {any} obj - object to test\n * @returns {bool} - is it Simple?\n */\n static isSimple (obj) {\n return obj instanceof Simple\n }\n\n /**\n * Decode from the CBOR additional information into a JavaScript value.\n * If the CBOR item has no parent, return a \"safe\" symbol instead of\n * `null` or `undefined`, so that the value can be passed through a\n * stream in object mode.\n *\n * @param {Number} val - the CBOR additional info to convert\n * @param {bool} hasParent - Does the CBOR item have a parent?\n * @returns {(null|undefined|Boolean|Symbol)} - the decoded value\n */\n static decode (val, hasParent) {\n if (hasParent == null) {\n hasParent = true\n }\n switch (val) {\n case SIMPLE.FALSE:\n return false\n case SIMPLE.TRUE:\n return true\n case SIMPLE.NULL:\n if (hasParent) {\n return null\n } else {\n return SYMS.NULL\n }\n case SIMPLE.UNDEFINED:\n if (hasParent) {\n return undefined\n } else {\n return SYMS.UNDEFINED\n }\n case -1:\n if (!hasParent) {\n throw new Error('Invalid BREAK')\n }\n return SYMS.BREAK\n default:\n return new Simple(val)\n }\n }\n}\n\nmodule.exports = Simple\n","'use strict'\n\n/**\n * A CBOR tagged item, where the tag does not have semantics specified at the\n * moment, or those semantics threw an error during parsing. Typically this will\n * be an extension point you're not yet expecting.\n */\nclass Tagged {\n /**\n * Creates an instance of Tagged.\n *\n * @param {Number} tag - the number of the tag\n * @param {any} value - the value inside the tag\n * @param {Error} err - the error that was thrown parsing the tag, or null\n */\n constructor (tag, value, err) {\n this.tag = tag\n this.value = value\n this.err = err\n if (typeof this.tag !== 'number') {\n throw new Error('Invalid tag type (' + (typeof this.tag) + ')')\n }\n if ((this.tag < 0) || ((this.tag | 0) !== this.tag)) {\n throw new Error('Tag must be a positive integer: ' + this.tag)\n }\n }\n\n /**\n * Convert to a String\n *\n * @returns {String} string of the form '1(2)'\n */\n toString () {\n return `${this.tag}(${JSON.stringify(this.value)})`\n }\n\n /**\n * Push the simple value onto the CBOR stream\n *\n * @param {cbor.Encoder} gen The generator to push onto\n * @returns {number}\n */\n encodeCBOR (gen) {\n gen._pushTag(this.tag)\n return gen.pushAny(this.value)\n }\n\n /**\n * If we have a converter for this type, do the conversion. Some converters\n * are built-in. Additional ones can be passed in. If you want to remove\n * a built-in converter, pass a converter in whose value is 'null' instead\n * of a function.\n *\n * @param {Object} converters - keys in the object are a tag number, the value\n * is a function that takes the decoded CBOR and returns a JavaScript value\n * of the appropriate type. Throw an exception in the function on errors.\n * @returns {any} - the converted item\n */\n convert (converters) {\n var er, f\n f = converters != null ? converters[this.tag] : undefined\n if (typeof f !== 'function') {\n f = Tagged['_tag' + this.tag]\n if (typeof f !== 'function') {\n return this\n }\n }\n try {\n return f.call(Tagged, this.value)\n } catch (error) {\n er = error\n this.err = er\n return this\n }\n }\n}\n\nmodule.exports = Tagged\n","'use strict';\n\nconst defaultBase = self.location ?\n self.location.protocol + '//' + self.location.host :\n '';\nconst URL = self.URL;\n\nclass URLWithLegacySupport {\n constructor(url = '', base = defaultBase) {\n this.super = new URL(url, base);\n this.path = this.pathname + this.search;\n this.auth =\n this.username && this.password ?\n this.username + ':' + this.password :\n null;\n\n this.query =\n this.search && this.search.startsWith('?') ?\n this.search.slice(1) :\n null;\n }\n\n get hash() {\n return this.super.hash;\n }\n get host() {\n return this.super.host;\n }\n get hostname() {\n return this.super.hostname;\n }\n get href() {\n return this.super.href;\n }\n get origin() {\n return this.super.origin;\n }\n get password() {\n return this.super.password;\n }\n get pathname() {\n return this.super.pathname;\n }\n get port() {\n return this.super.port;\n }\n get protocol() {\n return this.super.protocol;\n }\n get search() {\n return this.super.search;\n }\n get searchParams() {\n return this.super.searchParams;\n }\n get username() {\n return this.super.username;\n }\n\n set hash(hash) {\n this.super.hash = hash;\n }\n set host(host) {\n this.super.host = host;\n }\n set hostname(hostname) {\n this.super.hostname = hostname;\n }\n set href(href) {\n this.super.href = href;\n }\n set origin(origin) {\n this.super.origin = origin;\n }\n set password(password) {\n this.super.password = password;\n }\n set pathname(pathname) {\n this.super.pathname = pathname;\n }\n set port(port) {\n this.super.port = port;\n }\n set protocol(protocol) {\n this.super.protocol = protocol;\n }\n set search(search) {\n this.super.search = search;\n }\n set searchParams(searchParams) {\n this.super.searchParams = searchParams;\n }\n set username(username) {\n this.super.username = username;\n }\n\n createObjectURL(o) {\n return this.super.createObjectURL(o);\n }\n revokeObjectURL(o) {\n this.super.revokeObjectURL(o);\n }\n toJSON() {\n return this.super.toJSON();\n }\n toString() {\n return this.super.toString();\n }\n format() {\n return this.toString();\n }\n}\n\nfunction format(obj) {\n if (typeof obj === 'string') {\n const url = new URL(obj);\n\n return url.toString();\n }\n\n if (!(obj instanceof URL)) {\n const userPass =\n obj.username && obj.password ?\n `${obj.username}:${obj.password}@` :\n '';\n const auth = obj.auth ? obj.auth + '@' : '';\n const port = obj.port ? ':' + obj.port : '';\n const protocol = obj.protocol ? obj.protocol + '//' : '';\n const host = obj.host || '';\n const hostname = obj.hostname || '';\n const search = obj.search || (obj.query ? '?' + obj.query : '');\n const hash = obj.hash || '';\n const pathname = obj.pathname || '';\n const path = obj.path || pathname + search;\n\n return `${protocol}${userPass || auth}${host ||\n hostname + port}${path}${hash}`;\n }\n}\n\nmodule.exports = {\n URLWithLegacySupport,\n URLSearchParams: self.URLSearchParams,\n defaultBase,\n format\n};\n","'use strict';\n\nconst { URLWithLegacySupport, format } = require('./url');\n\nmodule.exports = (url, location = {}, protocolMap = {}, defaultProtocol) => {\n let protocol = location.protocol ?\n location.protocol.replace(':', '') :\n 'http';\n\n // Check protocol map\n protocol = (protocolMap[protocol] || defaultProtocol || protocol) + ':';\n let urlParsed;\n\n try {\n urlParsed = new URLWithLegacySupport(url);\n } catch (err) {\n urlParsed = {};\n }\n\n const base = Object.assign({}, location, {\n protocol: protocol || urlParsed.protocol,\n host: location.host || urlParsed.host\n });\n\n return new URLWithLegacySupport(url, format(base)).toString();\n};\n","'use strict';\n\nconst {\n URLWithLegacySupport,\n format,\n URLSearchParams,\n defaultBase\n} = require('./src/url');\nconst relative = require('./src/relative');\n\nmodule.exports = {\n URL: URLWithLegacySupport,\n URLSearchParams,\n format,\n relative,\n defaultBase\n};\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst ieee754 = require('ieee754')\nconst Bignumber = require('bignumber.js').BigNumber\n\nconst parser = require('./decoder.asm')\nconst utils = require('./utils')\nconst c = require('./constants')\nconst Simple = require('./simple')\nconst Tagged = require('./tagged')\nconst { URL } = require('iso-url')\n\n/**\n * Transform binary cbor data into JavaScript objects.\n */\nclass Decoder {\n /**\n * @param {Object} [opts={}]\n * @param {number} [opts.size=65536] - Size of the allocated heap.\n */\n constructor (opts) {\n opts = opts || {}\n\n if (!opts.size || opts.size < 0x10000) {\n opts.size = 0x10000\n } else {\n // Ensure the size is a power of 2\n opts.size = utils.nextPowerOf2(opts.size)\n }\n\n // Heap use to share the input with the parser\n this._heap = new ArrayBuffer(opts.size)\n this._heap8 = new Uint8Array(this._heap)\n this._buffer = Buffer.from(this._heap)\n\n this._reset()\n\n // Known tags\n this._knownTags = Object.assign({\n 0: (val) => new Date(val),\n 1: (val) => new Date(val * 1000),\n 2: (val) => utils.arrayBufferToBignumber(val),\n 3: (val) => c.NEG_ONE.minus(utils.arrayBufferToBignumber(val)),\n 4: (v) => {\n // const v = new Uint8Array(val)\n return c.TEN.pow(v[0]).times(v[1])\n },\n 5: (v) => {\n // const v = new Uint8Array(val)\n return c.TWO.pow(v[0]).times(v[1])\n },\n 32: (val) => new URL(val),\n 35: (val) => new RegExp(val)\n }, opts.tags)\n\n // Initialize asm based parser\n this.parser = parser(global, {\n // eslint-disable-next-line no-console\n log: console.log.bind(console),\n pushInt: this.pushInt.bind(this),\n pushInt32: this.pushInt32.bind(this),\n pushInt32Neg: this.pushInt32Neg.bind(this),\n pushInt64: this.pushInt64.bind(this),\n pushInt64Neg: this.pushInt64Neg.bind(this),\n pushFloat: this.pushFloat.bind(this),\n pushFloatSingle: this.pushFloatSingle.bind(this),\n pushFloatDouble: this.pushFloatDouble.bind(this),\n pushTrue: this.pushTrue.bind(this),\n pushFalse: this.pushFalse.bind(this),\n pushUndefined: this.pushUndefined.bind(this),\n pushNull: this.pushNull.bind(this),\n pushInfinity: this.pushInfinity.bind(this),\n pushInfinityNeg: this.pushInfinityNeg.bind(this),\n pushNaN: this.pushNaN.bind(this),\n pushNaNNeg: this.pushNaNNeg.bind(this),\n pushArrayStart: this.pushArrayStart.bind(this),\n pushArrayStartFixed: this.pushArrayStartFixed.bind(this),\n pushArrayStartFixed32: this.pushArrayStartFixed32.bind(this),\n pushArrayStartFixed64: this.pushArrayStartFixed64.bind(this),\n pushObjectStart: this.pushObjectStart.bind(this),\n pushObjectStartFixed: this.pushObjectStartFixed.bind(this),\n pushObjectStartFixed32: this.pushObjectStartFixed32.bind(this),\n pushObjectStartFixed64: this.pushObjectStartFixed64.bind(this),\n pushByteString: this.pushByteString.bind(this),\n pushByteStringStart: this.pushByteStringStart.bind(this),\n pushUtf8String: this.pushUtf8String.bind(this),\n pushUtf8StringStart: this.pushUtf8StringStart.bind(this),\n pushSimpleUnassigned: this.pushSimpleUnassigned.bind(this),\n pushTagUnassigned: this.pushTagUnassigned.bind(this),\n pushTagStart: this.pushTagStart.bind(this),\n pushTagStart4: this.pushTagStart4.bind(this),\n pushTagStart8: this.pushTagStart8.bind(this),\n pushBreak: this.pushBreak.bind(this)\n }, this._heap)\n }\n\n get _depth () {\n return this._parents.length\n }\n\n get _currentParent () {\n return this._parents[this._depth - 1]\n }\n\n get _ref () {\n return this._currentParent.ref\n }\n\n // Finish the current parent\n _closeParent () {\n var p = this._parents.pop()\n\n if (p.length > 0) {\n throw new Error(`Missing ${p.length} elements`)\n }\n\n switch (p.type) {\n case c.PARENT.TAG:\n this._push(\n this.createTag(p.ref[0], p.ref[1])\n )\n break\n case c.PARENT.BYTE_STRING:\n this._push(this.createByteString(p.ref, p.length))\n break\n case c.PARENT.UTF8_STRING:\n this._push(this.createUtf8String(p.ref, p.length))\n break\n case c.PARENT.MAP:\n if (p.values % 2 > 0) {\n throw new Error('Odd number of elements in the map')\n }\n this._push(this.createMap(p.ref, p.length))\n break\n case c.PARENT.OBJECT:\n if (p.values % 2 > 0) {\n throw new Error('Odd number of elements in the map')\n }\n this._push(this.createObject(p.ref, p.length))\n break\n case c.PARENT.ARRAY:\n this._push(this.createArray(p.ref, p.length))\n break\n default:\n break\n }\n\n if (this._currentParent && this._currentParent.type === c.PARENT.TAG) {\n this._dec()\n }\n }\n\n // Reduce the expected length of the current parent by one\n _dec () {\n const p = this._currentParent\n // The current parent does not know the epxected child length\n\n if (p.length < 0) {\n return\n }\n\n p.length--\n\n // All children were seen, we can close the current parent\n if (p.length === 0) {\n this._closeParent()\n }\n }\n\n // Push any value to the current parent\n _push (val, hasChildren) {\n const p = this._currentParent\n p.values++\n\n switch (p.type) {\n case c.PARENT.ARRAY:\n case c.PARENT.BYTE_STRING:\n case c.PARENT.UTF8_STRING:\n if (p.length > -1) {\n this._ref[this._ref.length - p.length] = val\n } else {\n this._ref.push(val)\n }\n this._dec()\n break\n case c.PARENT.OBJECT:\n if (p.tmpKey != null) {\n this._ref[p.tmpKey] = val\n p.tmpKey = null\n this._dec()\n } else {\n p.tmpKey = val\n\n if (typeof p.tmpKey !== 'string') {\n // too bad, convert to a Map\n p.type = c.PARENT.MAP\n p.ref = utils.buildMap(p.ref)\n }\n }\n break\n case c.PARENT.MAP:\n if (p.tmpKey != null) {\n this._ref.set(p.tmpKey, val)\n p.tmpKey = null\n this._dec()\n } else {\n p.tmpKey = val\n }\n break\n case c.PARENT.TAG:\n this._ref.push(val)\n if (!hasChildren) {\n this._dec()\n }\n break\n default:\n throw new Error('Unknown parent type')\n }\n }\n\n // Create a new parent in the parents list\n _createParent (obj, type, len) {\n this._parents[this._depth] = {\n type: type,\n length: len,\n ref: obj,\n values: 0,\n tmpKey: null\n }\n }\n\n // Reset all state back to the beginning, also used for initiatlization\n _reset () {\n this._res = []\n this._parents = [{\n type: c.PARENT.ARRAY,\n length: -1,\n ref: this._res,\n values: 0,\n tmpKey: null\n }]\n }\n\n // -- Interface to customize deoding behaviour\n createTag (tagNumber, value) {\n const typ = this._knownTags[tagNumber]\n\n if (!typ) {\n return new Tagged(tagNumber, value)\n }\n\n return typ(value)\n }\n\n createMap (obj, len) {\n return obj\n }\n\n createObject (obj, len) {\n return obj\n }\n\n createArray (arr, len) {\n return arr\n }\n\n createByteString (raw, len) {\n return Buffer.concat(raw)\n }\n\n createByteStringFromHeap (start, end) {\n if (start === end) {\n return Buffer.alloc(0)\n }\n\n return Buffer.from(this._heap.slice(start, end))\n }\n\n createInt (val) {\n return val\n }\n\n createInt32 (f, g) {\n return utils.buildInt32(f, g)\n }\n\n createInt64 (f1, f2, g1, g2) {\n return utils.buildInt64(f1, f2, g1, g2)\n }\n\n createFloat (val) {\n return val\n }\n\n createFloatSingle (a, b, c, d) {\n return ieee754.read([a, b, c, d], 0, false, 23, 4)\n }\n\n createFloatDouble (a, b, c, d, e, f, g, h) {\n return ieee754.read([a, b, c, d, e, f, g, h], 0, false, 52, 8)\n }\n\n createInt32Neg (f, g) {\n return -1 - utils.buildInt32(f, g)\n }\n\n createInt64Neg (f1, f2, g1, g2) {\n const f = utils.buildInt32(f1, f2)\n const g = utils.buildInt32(g1, g2)\n\n if (f > c.MAX_SAFE_HIGH) {\n return c.NEG_ONE.minus(new Bignumber(f).times(c.SHIFT32).plus(g))\n }\n\n return -1 - ((f * c.SHIFT32) + g)\n }\n\n createTrue () {\n return true\n }\n\n createFalse () {\n return false\n }\n\n createNull () {\n return null\n }\n\n createUndefined () {\n return undefined\n }\n\n createInfinity () {\n return Infinity\n }\n\n createInfinityNeg () {\n return -Infinity\n }\n\n createNaN () {\n return NaN\n }\n\n createNaNNeg () {\n return -NaN\n }\n\n createUtf8String (raw, len) {\n return raw.join('')\n }\n\n createUtf8StringFromHeap (start, end) {\n if (start === end) {\n return ''\n }\n\n return this._buffer.toString('utf8', start, end)\n }\n\n createSimpleUnassigned (val) {\n return new Simple(val)\n }\n\n // -- Interface for decoder.asm.js\n\n pushInt (val) {\n this._push(this.createInt(val))\n }\n\n pushInt32 (f, g) {\n this._push(this.createInt32(f, g))\n }\n\n pushInt64 (f1, f2, g1, g2) {\n this._push(this.createInt64(f1, f2, g1, g2))\n }\n\n pushFloat (val) {\n this._push(this.createFloat(val))\n }\n\n pushFloatSingle (a, b, c, d) {\n this._push(this.createFloatSingle(a, b, c, d))\n }\n\n pushFloatDouble (a, b, c, d, e, f, g, h) {\n this._push(this.createFloatDouble(a, b, c, d, e, f, g, h))\n }\n\n pushInt32Neg (f, g) {\n this._push(this.createInt32Neg(f, g))\n }\n\n pushInt64Neg (f1, f2, g1, g2) {\n this._push(this.createInt64Neg(f1, f2, g1, g2))\n }\n\n pushTrue () {\n this._push(this.createTrue())\n }\n\n pushFalse () {\n this._push(this.createFalse())\n }\n\n pushNull () {\n this._push(this.createNull())\n }\n\n pushUndefined () {\n this._push(this.createUndefined())\n }\n\n pushInfinity () {\n this._push(this.createInfinity())\n }\n\n pushInfinityNeg () {\n this._push(this.createInfinityNeg())\n }\n\n pushNaN () {\n this._push(this.createNaN())\n }\n\n pushNaNNeg () {\n this._push(this.createNaNNeg())\n }\n\n pushArrayStart () {\n this._createParent([], c.PARENT.ARRAY, -1)\n }\n\n pushArrayStartFixed (len) {\n this._createArrayStartFixed(len)\n }\n\n pushArrayStartFixed32 (len1, len2) {\n const len = utils.buildInt32(len1, len2)\n this._createArrayStartFixed(len)\n }\n\n pushArrayStartFixed64 (len1, len2, len3, len4) {\n const len = utils.buildInt64(len1, len2, len3, len4)\n this._createArrayStartFixed(len)\n }\n\n pushObjectStart () {\n this._createObjectStartFixed(-1)\n }\n\n pushObjectStartFixed (len) {\n this._createObjectStartFixed(len)\n }\n\n pushObjectStartFixed32 (len1, len2) {\n const len = utils.buildInt32(len1, len2)\n this._createObjectStartFixed(len)\n }\n\n pushObjectStartFixed64 (len1, len2, len3, len4) {\n const len = utils.buildInt64(len1, len2, len3, len4)\n this._createObjectStartFixed(len)\n }\n\n pushByteStringStart () {\n this._parents[this._depth] = {\n type: c.PARENT.BYTE_STRING,\n length: -1,\n ref: [],\n values: 0,\n tmpKey: null\n }\n }\n\n pushByteString (start, end) {\n this._push(this.createByteStringFromHeap(start, end))\n }\n\n pushUtf8StringStart () {\n this._parents[this._depth] = {\n type: c.PARENT.UTF8_STRING,\n length: -1,\n ref: [],\n values: 0,\n tmpKey: null\n }\n }\n\n pushUtf8String (start, end) {\n this._push(this.createUtf8StringFromHeap(start, end))\n }\n\n pushSimpleUnassigned (val) {\n this._push(this.createSimpleUnassigned(val))\n }\n\n pushTagStart (tag) {\n this._parents[this._depth] = {\n type: c.PARENT.TAG,\n length: 1,\n ref: [tag]\n }\n }\n\n pushTagStart4 (f, g) {\n this.pushTagStart(utils.buildInt32(f, g))\n }\n\n pushTagStart8 (f1, f2, g1, g2) {\n this.pushTagStart(utils.buildInt64(f1, f2, g1, g2))\n }\n\n pushTagUnassigned (tagNumber) {\n this._push(this.createTag(tagNumber))\n }\n\n pushBreak () {\n if (this._currentParent.length > -1) {\n throw new Error('Unexpected break')\n }\n\n this._closeParent()\n }\n\n _createObjectStartFixed (len) {\n if (len === 0) {\n this._push(this.createObject({}))\n return\n }\n\n this._createParent({}, c.PARENT.OBJECT, len)\n }\n\n _createArrayStartFixed (len) {\n if (len === 0) {\n this._push(this.createArray([]))\n return\n }\n\n this._createParent(new Array(len), c.PARENT.ARRAY, len)\n }\n\n _decode (input) {\n if (input.byteLength === 0) {\n throw new Error('Input too short')\n }\n\n this._reset()\n this._heap8.set(input)\n const code = this.parser.parse(input.byteLength)\n\n if (this._depth > 1) {\n while (this._currentParent.length === 0) {\n this._closeParent()\n }\n if (this._depth > 1) {\n throw new Error('Undeterminated nesting')\n }\n }\n\n if (code > 0) {\n throw new Error('Failed to parse')\n }\n\n if (this._res.length === 0) {\n throw new Error('No valid result')\n }\n }\n\n // -- Public Interface\n\n decodeFirst (input) {\n this._decode(input)\n\n return this._res[0]\n }\n\n decodeAll (input) {\n this._decode(input)\n\n return this._res\n }\n\n /**\n * Decode the first cbor object.\n *\n * @param {Buffer|string} input\n * @param {string} [enc='hex'] - Encoding used if a string is passed.\n * @returns {*}\n */\n static decode (input, enc) {\n if (typeof input === 'string') {\n input = Buffer.from(input, enc || 'hex')\n }\n\n const dec = new Decoder({ size: input.length })\n return dec.decodeFirst(input)\n }\n\n /**\n * Decode all cbor objects.\n *\n * @param {Buffer|string} input\n * @param {string} [enc='hex'] - Encoding used if a string is passed.\n * @returns {Array<*>}\n */\n static decodeAll (input, enc) {\n if (typeof input === 'string') {\n input = Buffer.from(input, enc || 'hex')\n }\n\n const dec = new Decoder({ size: input.length })\n return dec.decodeAll(input)\n }\n}\n\nDecoder.decodeFirst = Decoder.decode\n\nmodule.exports = Decoder\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst Decoder = require('./decoder')\nconst utils = require('./utils')\n\n/**\n * Output the diagnostic format from a stream of CBOR bytes.\n *\n */\nclass Diagnose extends Decoder {\n createTag (tagNumber, value) {\n return `${tagNumber}(${value})`\n }\n\n createInt (val) {\n return super.createInt(val).toString()\n }\n\n createInt32 (f, g) {\n return super.createInt32(f, g).toString()\n }\n\n createInt64 (f1, f2, g1, g2) {\n return super.createInt64(f1, f2, g1, g2).toString()\n }\n\n createInt32Neg (f, g) {\n return super.createInt32Neg(f, g).toString()\n }\n\n createInt64Neg (f1, f2, g1, g2) {\n return super.createInt64Neg(f1, f2, g1, g2).toString()\n }\n\n createTrue () {\n return 'true'\n }\n\n createFalse () {\n return 'false'\n }\n\n createFloat (val) {\n const fl = super.createFloat(val)\n if (utils.isNegativeZero(val)) {\n return '-0_1'\n }\n\n return `${fl}_1`\n }\n\n createFloatSingle (a, b, c, d) {\n const fl = super.createFloatSingle(a, b, c, d)\n return `${fl}_2`\n }\n\n createFloatDouble (a, b, c, d, e, f, g, h) {\n const fl = super.createFloatDouble(a, b, c, d, e, f, g, h)\n return `${fl}_3`\n }\n\n createByteString (raw, len) {\n const val = raw.join(', ')\n\n if (len === -1) {\n return `(_ ${val})`\n }\n return `h'${val}`\n }\n\n createByteStringFromHeap (start, end) {\n const val = (Buffer.from(\n super.createByteStringFromHeap(start, end)\n )).toString('hex')\n\n return `h'${val}'`\n }\n\n createInfinity () {\n return 'Infinity_1'\n }\n\n createInfinityNeg () {\n return '-Infinity_1'\n }\n\n createNaN () {\n return 'NaN_1'\n }\n\n createNaNNeg () {\n return '-NaN_1'\n }\n\n createNull () {\n return 'null'\n }\n\n createUndefined () {\n return 'undefined'\n }\n\n createSimpleUnassigned (val) {\n return `simple(${val})`\n }\n\n createArray (arr, len) {\n const val = super.createArray(arr, len)\n\n if (len === -1) {\n // indefinite\n return `[_ ${val.join(', ')}]`\n }\n\n return `[${val.join(', ')}]`\n }\n\n createMap (map, len) {\n const val = super.createMap(map)\n const list = Array.from(val.keys())\n .reduce(collectObject(val), '')\n\n if (len === -1) {\n return `{_ ${list}}`\n }\n\n return `{${list}}`\n }\n\n createObject (obj, len) {\n const val = super.createObject(obj)\n const map = Object.keys(val)\n .reduce(collectObject(val), '')\n\n if (len === -1) {\n return `{_ ${map}}`\n }\n\n return `{${map}}`\n }\n\n createUtf8String (raw, len) {\n const val = raw.join(', ')\n\n if (len === -1) {\n return `(_ ${val})`\n }\n\n return `\"${val}\"`\n }\n\n createUtf8StringFromHeap (start, end) {\n const val = (Buffer.from(\n super.createUtf8StringFromHeap(start, end)\n )).toString('utf8')\n\n return `\"${val}\"`\n }\n\n static diagnose (input, enc) {\n if (typeof input === 'string') {\n input = Buffer.from(input, enc || 'hex')\n }\n\n const dec = new Diagnose()\n return dec.decodeFirst(input)\n }\n}\n\nmodule.exports = Diagnose\n\nfunction collectObject (val) {\n return (acc, key) => {\n if (acc) {\n return `${acc}, ${key}: ${val[key]}`\n }\n return `${key}: ${val[key]}`\n }\n}\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst { URL } = require('iso-url')\nconst Bignumber = require('bignumber.js').BigNumber\n\nconst utils = require('./utils')\nconst constants = require('./constants')\nconst MT = constants.MT\nconst NUMBYTES = constants.NUMBYTES\nconst SHIFT32 = constants.SHIFT32\nconst SYMS = constants.SYMS\nconst TAG = constants.TAG\nconst HALF = (constants.MT.SIMPLE_FLOAT << 5) | constants.NUMBYTES.TWO\nconst FLOAT = (constants.MT.SIMPLE_FLOAT << 5) | constants.NUMBYTES.FOUR\nconst DOUBLE = (constants.MT.SIMPLE_FLOAT << 5) | constants.NUMBYTES.EIGHT\nconst TRUE = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.TRUE\nconst FALSE = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.FALSE\nconst UNDEFINED = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.UNDEFINED\nconst NULL = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.NULL\n\nconst MAXINT_BN = new Bignumber('0x20000000000000')\nconst BUF_NAN = Buffer.from('f97e00', 'hex')\nconst BUF_INF_NEG = Buffer.from('f9fc00', 'hex')\nconst BUF_INF_POS = Buffer.from('f97c00', 'hex')\n\nfunction toType (obj) {\n // [object Type]\n // --------8---1\n return ({}).toString.call(obj).slice(8, -1)\n}\n\n/**\n * Transform JavaScript values into CBOR bytes\n *\n */\nclass Encoder {\n /**\n * @param {Object} [options={}]\n * @param {function(Buffer)} options.stream\n */\n constructor (options) {\n options = options || {}\n\n this.streaming = typeof options.stream === 'function'\n this.onData = options.stream\n\n this.semanticTypes = [\n [URL, this._pushUrl],\n [Bignumber, this._pushBigNumber]\n ]\n\n const addTypes = options.genTypes || []\n const len = addTypes.length\n for (let i = 0; i < len; i++) {\n this.addSemanticType(\n addTypes[i][0],\n addTypes[i][1]\n )\n }\n\n this._reset()\n }\n\n addSemanticType (type, fun) {\n const len = this.semanticTypes.length\n for (let i = 0; i < len; i++) {\n const typ = this.semanticTypes[i][0]\n if (typ === type) {\n const old = this.semanticTypes[i][1]\n this.semanticTypes[i][1] = fun\n return old\n }\n }\n this.semanticTypes.push([type, fun])\n return null\n }\n\n push (val) {\n if (!val) {\n return true\n }\n\n this.result[this.offset] = val\n this.resultMethod[this.offset] = 0\n this.resultLength[this.offset] = val.length\n this.offset++\n\n if (this.streaming) {\n this.onData(this.finalize())\n }\n\n return true\n }\n\n pushWrite (val, method, len) {\n this.result[this.offset] = val\n this.resultMethod[this.offset] = method\n this.resultLength[this.offset] = len\n this.offset++\n\n if (this.streaming) {\n this.onData(this.finalize())\n }\n\n return true\n }\n\n _pushUInt8 (val) {\n return this.pushWrite(val, 1, 1)\n }\n\n _pushUInt16BE (val) {\n return this.pushWrite(val, 2, 2)\n }\n\n _pushUInt32BE (val) {\n return this.pushWrite(val, 3, 4)\n }\n\n _pushDoubleBE (val) {\n return this.pushWrite(val, 4, 8)\n }\n\n _pushNaN () {\n return this.push(BUF_NAN)\n }\n\n _pushInfinity (obj) {\n const half = (obj < 0) ? BUF_INF_NEG : BUF_INF_POS\n return this.push(half)\n }\n\n _pushFloat (obj) {\n const b2 = Buffer.allocUnsafe(2)\n\n if (utils.writeHalf(b2, obj)) {\n if (utils.parseHalf(b2) === obj) {\n return this._pushUInt8(HALF) && this.push(b2)\n }\n }\n\n const b4 = Buffer.allocUnsafe(4)\n b4.writeFloatBE(obj, 0)\n if (b4.readFloatBE(0) === obj) {\n return this._pushUInt8(FLOAT) && this.push(b4)\n }\n\n return this._pushUInt8(DOUBLE) && this._pushDoubleBE(obj)\n }\n\n _pushInt (obj, mt, orig) {\n const m = mt << 5\n if (obj < 24) {\n return this._pushUInt8(m | obj)\n }\n\n if (obj <= 0xff) {\n return this._pushUInt8(m | NUMBYTES.ONE) && this._pushUInt8(obj)\n }\n\n if (obj <= 0xffff) {\n return this._pushUInt8(m | NUMBYTES.TWO) && this._pushUInt16BE(obj)\n }\n\n if (obj <= 0xffffffff) {\n return this._pushUInt8(m | NUMBYTES.FOUR) && this._pushUInt32BE(obj)\n }\n\n if (obj <= Number.MAX_SAFE_INTEGER) {\n return this._pushUInt8(m | NUMBYTES.EIGHT) &&\n this._pushUInt32BE(Math.floor(obj / SHIFT32)) &&\n this._pushUInt32BE(obj % SHIFT32)\n }\n\n if (mt === MT.NEG_INT) {\n return this._pushFloat(orig)\n }\n\n return this._pushFloat(obj)\n }\n\n _pushIntNum (obj) {\n if (obj < 0) {\n return this._pushInt(-obj - 1, MT.NEG_INT, obj)\n } else {\n return this._pushInt(obj, MT.POS_INT)\n }\n }\n\n _pushNumber (obj) {\n switch (false) {\n case (obj === obj): // eslint-disable-line\n return this._pushNaN(obj)\n case isFinite(obj):\n return this._pushInfinity(obj)\n case ((obj % 1) !== 0):\n return this._pushIntNum(obj)\n default:\n return this._pushFloat(obj)\n }\n }\n\n _pushString (obj) {\n const len = Buffer.byteLength(obj, 'utf8')\n return this._pushInt(len, MT.UTF8_STRING) && this.pushWrite(obj, 5, len)\n }\n\n _pushBoolean (obj) {\n return this._pushUInt8(obj ? TRUE : FALSE)\n }\n\n _pushUndefined (obj) {\n return this._pushUInt8(UNDEFINED)\n }\n\n _pushArray (gen, obj) {\n const len = obj.length\n if (!gen._pushInt(len, MT.ARRAY)) {\n return false\n }\n for (let j = 0; j < len; j++) {\n if (!gen.pushAny(obj[j])) {\n return false\n }\n }\n return true\n }\n\n _pushTag (tag) {\n return this._pushInt(tag, MT.TAG)\n }\n\n _pushDate (gen, obj) {\n // Round date, to get seconds since 1970-01-01 00:00:00 as defined in\n // Sec. 2.4.1 and get a possibly more compact encoding. Note that it is\n // still allowed to encode fractions of seconds which can be achieved by\n // changing overwriting the encode function for Date objects.\n return gen._pushTag(TAG.DATE_EPOCH) && gen.pushAny(Math.round(obj / 1000))\n }\n\n _pushBuffer (gen, obj) {\n return gen._pushInt(obj.length, MT.BYTE_STRING) && gen.push(obj)\n }\n\n _pushNoFilter (gen, obj) {\n return gen._pushBuffer(gen, obj.slice())\n }\n\n _pushRegexp (gen, obj) {\n return gen._pushTag(TAG.REGEXP) && gen.pushAny(obj.source)\n }\n\n _pushSet (gen, obj) {\n if (!gen._pushInt(obj.size, MT.ARRAY)) {\n return false\n }\n for (const x of obj) {\n if (!gen.pushAny(x)) {\n return false\n }\n }\n return true\n }\n\n _pushUrl (gen, obj) {\n return gen._pushTag(TAG.URI) && gen.pushAny(obj.format())\n }\n\n _pushBigint (obj) {\n let tag = TAG.POS_BIGINT\n if (obj.isNegative()) {\n obj = obj.negated().minus(1)\n tag = TAG.NEG_BIGINT\n }\n let str = obj.toString(16)\n if (str.length % 2) {\n str = '0' + str\n }\n const buf = Buffer.from(str, 'hex')\n return this._pushTag(tag) && this._pushBuffer(this, buf)\n }\n\n _pushBigNumber (gen, obj) {\n if (obj.isNaN()) {\n return gen._pushNaN()\n }\n if (!obj.isFinite()) {\n return gen._pushInfinity(obj.isNegative() ? -Infinity : Infinity)\n }\n if (obj.isInteger()) {\n return gen._pushBigint(obj)\n }\n if (!(gen._pushTag(TAG.DECIMAL_FRAC) &&\n gen._pushInt(2, MT.ARRAY))) {\n return false\n }\n\n const dec = obj.decimalPlaces()\n const slide = obj.multipliedBy(new Bignumber(10).pow(dec))\n if (!gen._pushIntNum(-dec)) {\n return false\n }\n if (slide.abs().isLessThan(MAXINT_BN)) {\n return gen._pushIntNum(slide.toNumber())\n } else {\n return gen._pushBigint(slide)\n }\n }\n\n _pushMap (gen, obj) {\n if (!gen._pushInt(obj.size, MT.MAP)) {\n return false\n }\n\n return this._pushRawMap(\n obj.size,\n Array.from(obj)\n )\n }\n\n _pushObject (obj) {\n if (!obj) {\n return this._pushUInt8(NULL)\n }\n\n var len = this.semanticTypes.length\n for (var i = 0; i < len; i++) {\n if (obj instanceof this.semanticTypes[i][0]) {\n return this.semanticTypes[i][1].call(obj, this, obj)\n }\n }\n\n var f = obj.encodeCBOR\n if (typeof f === 'function') {\n return f.call(obj, this)\n }\n\n var keys = Object.keys(obj)\n var keyLength = keys.length\n if (!this._pushInt(keyLength, MT.MAP)) {\n return false\n }\n\n return this._pushRawMap(\n keyLength,\n keys.map((k) => [k, obj[k]])\n )\n }\n\n _pushRawMap (len, map) {\n // Sort keys for canoncialization\n // 1. encode key\n // 2. shorter key comes before longer key\n // 3. same length keys are sorted with lower\n // byte value before higher\n\n map = map.map(function (a) {\n a[0] = Encoder.encode(a[0])\n return a\n }).sort(utils.keySorter)\n\n for (var j = 0; j < len; j++) {\n if (!this.push(map[j][0])) {\n return false\n }\n\n if (!this.pushAny(map[j][1])) {\n return false\n }\n }\n\n return true\n }\n\n /**\n * Alias for `.pushAny`\n *\n * @param {*} obj\n * @returns {boolean} true on success\n */\n write (obj) {\n return this.pushAny(obj)\n }\n\n /**\n * Push any supported type onto the encoded stream\n *\n * @param {any} obj\n * @returns {boolean} true on success\n */\n pushAny (obj) {\n var typ = toType(obj)\n\n switch (typ) {\n case 'Number':\n return this._pushNumber(obj)\n case 'String':\n return this._pushString(obj)\n case 'Boolean':\n return this._pushBoolean(obj)\n case 'Object':\n return this._pushObject(obj)\n case 'Array':\n return this._pushArray(this, obj)\n case 'Uint8Array':\n return this._pushBuffer(this, Buffer.isBuffer(obj) ? obj : Buffer.from(obj))\n case 'Null':\n return this._pushUInt8(NULL)\n case 'Undefined':\n return this._pushUndefined(obj)\n case 'Map':\n return this._pushMap(this, obj)\n case 'Set':\n return this._pushSet(this, obj)\n case 'URL':\n return this._pushUrl(this, obj)\n case 'BigNumber':\n return this._pushBigNumber(this, obj)\n case 'Date':\n return this._pushDate(this, obj)\n case 'RegExp':\n return this._pushRegexp(this, obj)\n case 'Symbol':\n switch (obj) {\n case SYMS.NULL:\n return this._pushObject(null)\n case SYMS.UNDEFINED:\n return this._pushUndefined(undefined)\n // TODO: Add pluggable support for other symbols\n default:\n throw new Error('Unknown symbol: ' + obj.toString())\n }\n default:\n throw new Error('Unknown type: ' + typeof obj + ', ' + (obj ? obj.toString() : ''))\n }\n }\n\n finalize () {\n if (this.offset === 0) {\n return null\n }\n\n var result = this.result\n var resultLength = this.resultLength\n var resultMethod = this.resultMethod\n var offset = this.offset\n\n // Determine the size of the buffer\n var size = 0\n var i = 0\n\n for (; i < offset; i++) {\n size += resultLength[i]\n }\n\n var res = Buffer.allocUnsafe(size)\n var index = 0\n var length = 0\n\n // Write the content into the result buffer\n for (i = 0; i < offset; i++) {\n length = resultLength[i]\n\n switch (resultMethod[i]) {\n case 0:\n result[i].copy(res, index)\n break\n case 1:\n res.writeUInt8(result[i], index, true)\n break\n case 2:\n res.writeUInt16BE(result[i], index, true)\n break\n case 3:\n res.writeUInt32BE(result[i], index, true)\n break\n case 4:\n res.writeDoubleBE(result[i], index, true)\n break\n case 5:\n res.write(result[i], index, length, 'utf8')\n break\n default:\n throw new Error('unkown method')\n }\n\n index += length\n }\n\n var tmp = res\n\n this._reset()\n\n return tmp\n }\n\n _reset () {\n this.result = []\n this.resultMethod = []\n this.resultLength = []\n this.offset = 0\n }\n\n /**\n * Encode the given value\n * @param {*} o\n * @returns {Buffer}\n */\n static encode (o) {\n const enc = new Encoder()\n const ret = enc.pushAny(o)\n if (!ret) {\n throw new Error('Failed to encode input')\n }\n\n return enc.finalize()\n }\n}\n\nmodule.exports = Encoder\n","'use strict'\n\n// exports.Commented = require('./commented')\nexports.Diagnose = require('./diagnose')\nexports.Decoder = require('./decoder')\nexports.Encoder = require('./encoder')\nexports.Simple = require('./simple')\nexports.Tagged = require('./tagged')\n\n// exports.comment = exports.Commented.comment\nexports.decodeAll = exports.Decoder.decodeAll\nexports.decodeFirst = exports.Decoder.decodeFirst\nexports.diagnose = exports.Diagnose.diagnose\nexports.encode = exports.Encoder.encode\nexports.decode = exports.Decoder.decode\n\nexports.leveldb = {\n decode: exports.Decoder.decodeAll,\n encode: exports.Encoder.encode,\n buffer: true,\n name: 'cbor'\n}\n","import { lebEncode } from '@dfinity/candid';\nimport borc from 'borc';\nimport { sha256 } from '@noble/hashes/sha256';\nimport { compare, concat, uint8ToBuf } from './utils/buffer';\n/**\n * sha256 hash the provided Buffer\n * @param data - input to hash function\n */\nexport function hash(data) {\n return uint8ToBuf(sha256.create().update(new Uint8Array(data)).digest());\n}\n/**\n *\n * @param value unknown value\n * @returns ArrayBuffer\n */\nexport function hashValue(value) {\n if (value instanceof borc.Tagged) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return hashValue(value.value);\n }\n else if (typeof value === 'string') {\n return hashString(value);\n }\n else if (typeof value === 'number') {\n return hash(lebEncode(value));\n }\n else if (value instanceof ArrayBuffer || ArrayBuffer.isView(value)) {\n return hash(value);\n }\n else if (Array.isArray(value)) {\n const vals = value.map(hashValue);\n return hash(concat(...vals));\n }\n else if (value && typeof value === 'object' && value._isPrincipal) {\n return hash(value.toUint8Array());\n }\n else if (typeof value === 'object' &&\n value !== null &&\n typeof value.toHash === 'function') {\n return hashValue(value.toHash());\n // TODO This should be move to a specific async method as the webauthn flow required\n // the flow to be synchronous to ensure Safari touch id works.\n // } else if (value instanceof Promise) {\n // return value.then(x => hashValue(x));\n }\n else if (typeof value === 'object') {\n return hashOfMap(value);\n }\n else if (typeof value === 'bigint') {\n // Do this check much later than the other bigint check because this one is much less\n // type-safe.\n // So we want to try all the high-assurance type guards before this 'probable' one.\n return hash(lebEncode(value));\n }\n throw Object.assign(new Error(`Attempt to hash a value of unsupported type: ${value}`), {\n // include so logs/callers can understand the confusing value.\n // (when stringified in error message, prototype info is lost)\n value,\n });\n}\nconst hashString = (value) => {\n const encoded = new TextEncoder().encode(value);\n return hash(encoded);\n};\n/**\n * Get the RequestId of the provided ic-ref request.\n * RequestId is the result of the representation-independent-hash function.\n * https://sdk.dfinity.org/docs/interface-spec/index.html#hash-of-map\n * @param request - ic-ref request to hash into RequestId\n */\nexport function requestIdOf(request) {\n return hashOfMap(request);\n}\n/**\n * Hash a map into an ArrayBuffer using the representation-independent-hash function.\n * https://sdk.dfinity.org/docs/interface-spec/index.html#hash-of-map\n * @param map - Any non-nested object\n * @returns ArrayBuffer\n */\nexport function hashOfMap(map) {\n const hashed = Object.entries(map)\n .filter(([, value]) => value !== undefined)\n .map(([key, value]) => {\n const hashedKey = hashString(key);\n const hashedValue = hashValue(value);\n return [hashedKey, hashedValue];\n });\n const traversed = hashed;\n const sorted = traversed.sort(([k1], [k2]) => {\n return compare(k1, k2);\n });\n const concatenated = concat(...sorted.map(x => concat(...x)));\n const result = hash(concatenated);\n return result;\n}\n//# sourceMappingURL=request_id.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Principal } from '@dfinity/principal';\nimport { requestIdOf } from './request_id';\nimport { concat, toHex } from './utils/buffer';\nconst domainSeparator = new TextEncoder().encode('\\x0Aic-request');\n/**\n * An Identity that can sign blobs.\n */\nexport class SignIdentity {\n /**\n * Get the principal represented by this identity. Normally should be a\n * `Principal.selfAuthenticating()`.\n */\n getPrincipal() {\n if (!this._principal) {\n this._principal = Principal.selfAuthenticating(new Uint8Array(this.getPublicKey().toDer()));\n }\n return this._principal;\n }\n /**\n * Transform a request into a signed version of the request. This is done last\n * after the transforms on the body of a request. The returned object can be\n * anything, but must be serializable to CBOR.\n * @param request - internet computer request to transform\n */\n async transformRequest(request) {\n const { body } = request, fields = __rest(request, [\"body\"]);\n const requestId = requestIdOf(body);\n return Object.assign(Object.assign({}, fields), { body: {\n content: body,\n sender_pubkey: this.getPublicKey().toDer(),\n sender_sig: await this.sign(concat(domainSeparator, requestId)),\n } });\n }\n}\nexport class AnonymousIdentity {\n getPrincipal() {\n return Principal.anonymous();\n }\n async transformRequest(request) {\n return Object.assign(Object.assign({}, request), { body: { content: request.body } });\n }\n}\n/**\n * Create an IdentityDescriptor from a @dfinity/identity Identity\n * @param identity - identity describe in returned descriptor\n */\nexport function createIdentityDescriptor(identity) {\n const identityIndicator = 'getPublicKey' in identity\n ? { type: 'PublicKeyIdentity', publicKey: toHex(identity.getPublicKey().toDer()) }\n : { type: 'AnonymousIdentity' };\n return identityIndicator;\n}\n//# sourceMappingURL=auth.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst MAX_U64_NUMBER = 0x20000000000000;\nfunction _concat(a, ...args) {\n const newBuffer = new Uint8Array(a.byteLength + args.reduce((acc, b) => acc + b.byteLength, 0));\n newBuffer.set(new Uint8Array(a), 0);\n let i = a.byteLength;\n for (const b of args) {\n newBuffer.set(new Uint8Array(b), i);\n i += b.byteLength;\n }\n return newBuffer.buffer;\n}\nfunction _serializeValue(major, minor, value) {\n // Remove everything that's not an hexadecimal character. These are not\n // considered errors since the value was already validated and they might\n // be number decimals or sign.\n value = value.replace(/[^0-9a-fA-F]/g, \"\");\n // Create the buffer from the value with left padding with 0.\n const length = 2 ** (minor - 24 /* Int8 */);\n value = value.slice(-length * 2).padStart(length * 2, \"0\");\n const bytes = [(major << 5) + minor].concat(value.match(/../g).map((byte) => parseInt(byte, 16)));\n return new Uint8Array(bytes).buffer;\n}\nfunction _serializeNumber(major, value) {\n if (value < 24) {\n return new Uint8Array([(major << 5) + value]).buffer;\n }\n else {\n const minor = value <= 0xff\n ? 24 /* Int8 */\n : value <= 0xffff\n ? 25 /* Int16 */\n : value <= 0xffffffff\n ? 26 /* Int32 */\n : 27 /* Int64 */;\n return _serializeValue(major, minor, value.toString(16));\n }\n}\nfunction _serializeString(str) {\n const utf8 = [];\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i);\n if (charcode < 0x80) {\n utf8.push(charcode);\n }\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6), 0x80 | (charcode & 0x3f));\n }\n else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12), 0x80 | ((charcode >> 6) & 0x3f), 0x80 | (charcode & 0x3f));\n }\n else {\n // Surrogate pair\n i++;\n charcode = ((charcode & 0x3ff) << 10) | (str.charCodeAt(i) & 0x3ff);\n utf8.push(0xf0 | (charcode >> 18), 0x80 | ((charcode >> 12) & 0x3f), 0x80 | ((charcode >> 6) & 0x3f), 0x80 | (charcode & 0x3f));\n }\n }\n return _concat(new Uint8Array(_serializeNumber(3 /* TextString */, str.length)), new Uint8Array(utf8));\n}\n/**\n * Tag a value.\n */\nfunction tagged(tag, value) {\n if (tag == 0xd9d9f7) {\n return _concat(new Uint8Array([0xd9, 0xd9, 0xf7]), value);\n }\n if (tag < 24) {\n return _concat(new Uint8Array([(6 /* Tag */ << 5) + tag]), value);\n }\n else {\n const minor = tag <= 0xff\n ? 24 /* Int8 */\n : tag <= 0xffff\n ? 25 /* Int16 */\n : tag <= 0xffffffff\n ? 26 /* Int32 */\n : 27 /* Int64 */;\n const length = 2 ** (minor - 24 /* Int8 */);\n const value = tag\n .toString(16)\n .slice(-length * 2)\n .padStart(length * 2, \"0\");\n const bytes = [(6 /* Tag */ << 5) + minor].concat(value.match(/../g).map((byte) => parseInt(byte, 16)));\n return new Uint8Array(bytes).buffer;\n }\n}\nexports.tagged = tagged;\n/**\n * Set the raw bytes contained by this value. This should only be used with another\n * CborValue, or if you are implementing extensions to CBOR.\n * @param bytes A buffer containing the value.\n */\nfunction raw(bytes) {\n return new Uint8Array(bytes).buffer;\n}\nexports.raw = raw;\n/**\n * Encode a number that is between [0, 23].\n * @param n\n */\nfunction uSmall(n) {\n if (isNaN(n)) {\n throw new RangeError(\"Invalid number.\");\n }\n n = Math.min(Math.max(0, n), 23); // Clamp it.\n const bytes = [(0 /* UnsignedInteger */ << 5) + n];\n return new Uint8Array(bytes).buffer;\n}\nexports.uSmall = uSmall;\nfunction u8(u8, radix) {\n // Force u8 into a number, and validate it.\n u8 = parseInt(\"\" + u8, radix);\n if (isNaN(u8)) {\n throw new RangeError(\"Invalid number.\");\n }\n u8 = Math.min(Math.max(0, u8), 0xff); // Clamp it.\n u8 = u8.toString(16);\n return _serializeValue(0 /* UnsignedInteger */, 24 /* Int8 */, u8);\n}\nexports.u8 = u8;\nfunction u16(u16, radix) {\n // Force u16 into a number, and validate it.\n u16 = parseInt(\"\" + u16, radix);\n if (isNaN(u16)) {\n throw new RangeError(\"Invalid number.\");\n }\n u16 = Math.min(Math.max(0, u16), 0xffff); // Clamp it.\n u16 = u16.toString(16);\n return _serializeValue(0 /* UnsignedInteger */, 25 /* Int16 */, u16);\n}\nexports.u16 = u16;\nfunction u32(u32, radix) {\n // Force u32 into a number, and validate it.\n u32 = parseInt(\"\" + u32, radix);\n if (isNaN(u32)) {\n throw new RangeError(\"Invalid number.\");\n }\n u32 = Math.min(Math.max(0, u32), 0xffffffff); // Clamp it.\n u32 = u32.toString(16);\n return _serializeValue(0 /* UnsignedInteger */, 26 /* Int32 */, u32);\n}\nexports.u32 = u32;\nfunction u64(u64, radix) {\n // Special consideration for numbers that might be larger than expected.\n if (typeof u64 == \"string\" && radix == 16) {\n // This is the only case where we guarantee we'll encode the number directly.\n // Validate it's all hexadecimal first.\n if (u64.match(/[^0-9a-fA-F]/)) {\n throw new RangeError(\"Invalid number.\");\n }\n return _serializeValue(0 /* UnsignedInteger */, 27 /* Int64 */, u64);\n }\n // Force u64 into a number, and validate it.\n u64 = parseInt(\"\" + u64, radix);\n if (isNaN(u64)) {\n throw new RangeError(\"Invalid number.\");\n }\n u64 = Math.min(Math.max(0, u64), MAX_U64_NUMBER); // Clamp it to actual limit.\n u64 = u64.toString(16);\n return _serializeValue(0 /* UnsignedInteger */, 27 /* Int64 */, u64);\n}\nexports.u64 = u64;\n/**\n * Encode a negative number that is between [-24, -1].\n */\nfunction iSmall(n) {\n if (isNaN(n)) {\n throw new RangeError(\"Invalid number.\");\n }\n if (n === 0) {\n return uSmall(0);\n }\n // Negative n, clamped to [1, 24], minus 1 (there's no negative 0).\n n = Math.min(Math.max(0, -n), 24) - 1;\n const bytes = [(1 /* SignedInteger */ << 5) + n];\n return new Uint8Array(bytes).buffer;\n}\nexports.iSmall = iSmall;\nfunction i8(i8, radix) {\n // Force i8 into a number, and validate it.\n i8 = parseInt(\"\" + i8, radix);\n if (isNaN(i8)) {\n throw new RangeError(\"Invalid number.\");\n }\n // Negative n, clamped, minus 1 (there's no negative 0).\n i8 = Math.min(Math.max(0, -i8 - 1), 0xff);\n i8 = i8.toString(16);\n return _serializeValue(1 /* SignedInteger */, 24 /* Int8 */, i8);\n}\nexports.i8 = i8;\nfunction i16(i16, radix) {\n // Force i16 into a number, and validate it.\n i16 = parseInt(\"\" + i16, radix);\n if (isNaN(i16)) {\n throw new RangeError(\"Invalid number.\");\n }\n // Negative n, clamped, minus 1 (there's no negative 0).\n i16 = Math.min(Math.max(0, -i16 - 1), 0xffff);\n i16 = i16.toString(16);\n return _serializeValue(1 /* SignedInteger */, 25 /* Int16 */, i16);\n}\nexports.i16 = i16;\nfunction i32(i32, radix) {\n // Force i32 into a number, and validate it.\n i32 = parseInt(\"\" + i32, radix);\n if (isNaN(i32)) {\n throw new RangeError(\"Invalid number.\");\n }\n // Negative n, clamped, minus 1 (there's no negative 0).\n i32 = Math.min(Math.max(0, -i32 - 1), 0xffffffff);\n i32 = i32.toString(16);\n return _serializeValue(1 /* SignedInteger */, 26 /* Int32 */, i32);\n}\nexports.i32 = i32;\nfunction i64(i64, radix) {\n // Special consideration for numbers that might be larger than expected.\n if (typeof i64 == \"string\" && radix == 16) {\n if (i64.startsWith(\"-\")) {\n i64 = i64.slice(1);\n }\n else {\n // Clamp it.\n i64 = \"0\";\n }\n // This is the only case where we guarantee we'll encode the number directly.\n // Validate it's all hexadecimal first.\n if (i64.match(/[^0-9a-fA-F]/) || i64.length > 16) {\n throw new RangeError(\"Invalid number.\");\n }\n // We need to do -1 to the number.\n let done = false;\n let newI64 = i64.split(\"\").reduceRight((acc, x) => {\n if (done) {\n return x + acc;\n }\n let n = parseInt(x, 16) - 1;\n if (n >= 0) {\n done = true;\n return n.toString(16) + acc;\n }\n else {\n return \"f\" + acc;\n }\n }, \"\");\n if (!done) {\n // This number was 0.\n return u64(0);\n }\n return _serializeValue(1 /* SignedInteger */, 27 /* Int64 */, newI64);\n }\n // Force i64 into a number, and validate it.\n i64 = parseInt(\"\" + i64, radix);\n if (isNaN(i64)) {\n throw new RangeError(\"Invalid number.\");\n }\n i64 = Math.min(Math.max(0, -i64 - 1), 0x20000000000000); // Clamp it to actual.\n i64 = i64.toString(16);\n return _serializeValue(1 /* SignedInteger */, 27 /* Int64 */, i64);\n}\nexports.i64 = i64;\n/**\n * Encode a number using the smallest amount of bytes, by calling the methods\n * above. e.g. If the number fits in a u8, it will use that.\n */\nfunction number(n) {\n if (n >= 0) {\n if (n < 24) {\n return uSmall(n);\n }\n else if (n <= 0xff) {\n return u8(n);\n }\n else if (n <= 0xffff) {\n return u16(n);\n }\n else if (n <= 0xffffffff) {\n return u32(n);\n }\n else {\n return u64(n);\n }\n }\n else {\n if (n >= -24) {\n return iSmall(n);\n }\n else if (n >= -0xff) {\n return i8(n);\n }\n else if (n >= -0xffff) {\n return i16(n);\n }\n else if (n >= -0xffffffff) {\n return i32(n);\n }\n else {\n return i64(n);\n }\n }\n}\nexports.number = number;\n/**\n * Encode a byte array. This is different than the `raw()` method.\n */\nfunction bytes(bytes) {\n return _concat(_serializeNumber(2 /* ByteString */, bytes.byteLength), bytes);\n}\nexports.bytes = bytes;\n/**\n * Encode a JavaScript string.\n */\nfunction string(str) {\n return _serializeString(str);\n}\nexports.string = string;\n/**\n * Encode an array of cbor values.\n */\nfunction array(items) {\n return _concat(_serializeNumber(4 /* Array */, items.length), ...items);\n}\nexports.array = array;\n/**\n * Encode a map of key-value pairs. The keys are string, and the values are CBOR\n * encoded.\n */\nfunction map(items, stable = false) {\n if (!(items instanceof Map)) {\n items = new Map(Object.entries(items));\n }\n let entries = Array.from(items.entries());\n if (stable) {\n entries = entries.sort(([keyA], [keyB]) => keyA.localeCompare(keyB));\n }\n return _concat(_serializeNumber(5 /* Map */, items.size), ...entries.map(([k, v]) => _concat(_serializeString(k), v)));\n}\nexports.map = map;\n/**\n * Encode a single (32 bits) precision floating point number.\n */\nfunction singleFloat(f) {\n const single = new Float32Array([f]);\n return _concat(new Uint8Array([(7 /* SimpleValue */ << 5) + 26]), new Uint8Array(single.buffer));\n}\nexports.singleFloat = singleFloat;\n/**\n * Encode a double (64 bits) precision floating point number.\n */\nfunction doubleFloat(f) {\n const single = new Float64Array([f]);\n return _concat(new Uint8Array([(7 /* SimpleValue */ << 5) + 27]), new Uint8Array(single.buffer));\n}\nexports.doubleFloat = doubleFloat;\nfunction bool(v) {\n return v ? true_() : false_();\n}\nexports.bool = bool;\n/**\n * Encode the boolean true.\n */\nfunction true_() {\n return raw(new Uint8Array([(7 /* SimpleValue */ << 5) + 21]));\n}\nexports.true_ = true_;\n/**\n * Encode the boolean false.\n */\nfunction false_() {\n return raw(new Uint8Array([(7 /* SimpleValue */ << 5) + 20]));\n}\nexports.false_ = false_;\n/**\n * Encode the constant null.\n */\nfunction null_() {\n return raw(new Uint8Array([(7 /* SimpleValue */ << 5) + 22]));\n}\nexports.null_ = null_;\n/**\n * Encode the constant undefined.\n */\nfunction undefined_() {\n return raw(new Uint8Array([(7 /* SimpleValue */ << 5) + 23]));\n}\nexports.undefined_ = undefined_;\n//# sourceMappingURL=value.js.map","\"use strict\";\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst cbor = __importStar(require(\"./value\"));\nconst BufferClasses = [\n ArrayBuffer,\n Uint8Array,\n Uint16Array,\n Uint32Array,\n Int8Array,\n Int16Array,\n Int32Array,\n Float32Array,\n Float64Array,\n];\nclass JsonDefaultCborEncoder {\n // @param _serializer The CBOR Serializer to use.\n // @param _stable Whether or not keys from objects should be sorted (stable). This is\n // particularly useful when testing encodings between JSON objects.\n constructor(_serializer, _stable = false) {\n this._serializer = _serializer;\n this._stable = _stable;\n this.name = \"jsonDefault\";\n this.priority = -100;\n }\n match(value) {\n return [\"undefined\", \"boolean\", \"number\", \"string\", \"object\"].indexOf(typeof value) != -1;\n }\n encode(value) {\n switch (typeof value) {\n case \"undefined\":\n return cbor.undefined_();\n case \"boolean\":\n return cbor.bool(value);\n case \"number\":\n if (Math.floor(value) === value) {\n return cbor.number(value);\n }\n else {\n return cbor.doubleFloat(value);\n }\n case \"string\":\n return cbor.string(value);\n case \"object\":\n if (value === null) {\n return cbor.null_();\n }\n else if (Array.isArray(value)) {\n return cbor.array(value.map((x) => this._serializer.serializeValue(x)));\n }\n else if (BufferClasses.find((x) => value instanceof x)) {\n return cbor.bytes(value.buffer);\n }\n else if (Object.getOwnPropertyNames(value).indexOf(\"toJSON\") !== -1) {\n return this.encode(value.toJSON());\n }\n else if (value instanceof Map) {\n const m = new Map();\n for (const [key, item] of value.entries()) {\n m.set(key, this._serializer.serializeValue(item));\n }\n return cbor.map(m, this._stable);\n }\n else {\n const m = new Map();\n for (const [key, item] of Object.entries(value)) {\n m.set(key, this._serializer.serializeValue(item));\n }\n return cbor.map(m, this._stable);\n }\n default:\n throw new Error(\"Invalid value.\");\n }\n }\n}\nexports.JsonDefaultCborEncoder = JsonDefaultCborEncoder;\nclass ToCborEncoder {\n constructor() {\n this.name = \"cborEncoder\";\n this.priority = -90;\n }\n match(value) {\n return typeof value == \"object\" && typeof value[\"toCBOR\"] == \"function\";\n }\n encode(value) {\n return value.toCBOR();\n }\n}\nexports.ToCborEncoder = ToCborEncoder;\nclass CborSerializer {\n constructor() {\n this._encoders = new Set();\n }\n static withDefaultEncoders(stable = false) {\n const s = new this();\n s.addEncoder(new JsonDefaultCborEncoder(s, stable));\n s.addEncoder(new ToCborEncoder());\n return s;\n }\n removeEncoder(name) {\n // Has to make an extra call to values() to ensure it doesn't break on iteration.\n for (const encoder of this._encoders.values()) {\n if (encoder.name == name) {\n this._encoders.delete(encoder);\n }\n }\n }\n addEncoder(encoder) {\n this._encoders.add(encoder);\n }\n getEncoderFor(value) {\n let chosenEncoder = null;\n for (const encoder of this._encoders) {\n if (!chosenEncoder || encoder.priority > chosenEncoder.priority) {\n if (encoder.match(value)) {\n chosenEncoder = encoder;\n }\n }\n }\n if (chosenEncoder === null) {\n throw new Error(\"Could not find an encoder for value.\");\n }\n return chosenEncoder;\n }\n serializeValue(value) {\n return this.getEncoderFor(value).encode(value);\n }\n serialize(value) {\n return this.serializeValue(value);\n }\n}\nexports.CborSerializer = CborSerializer;\nclass SelfDescribeCborSerializer extends CborSerializer {\n serialize(value) {\n return cbor.raw(new Uint8Array([\n // Self describe CBOR.\n ...new Uint8Array([0xd9, 0xd9, 0xf7]),\n ...new Uint8Array(super.serializeValue(value)),\n ]));\n }\n}\nexports.SelfDescribeCborSerializer = SelfDescribeCborSerializer;\n//# sourceMappingURL=serializer.js.map","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./serializer\"));\nconst value = __importStar(require(\"./value\"));\nexports.value = value;\n//# sourceMappingURL=index.js.map","// This file is based on:\n// https://github.com/dfinity-lab/dfinity/blob/9bca65f8edd65701ea6bdb00e0752f9186bbc893/docs/spec/public/index.adoc#cbor-encoding-of-requests-and-responses\nimport borc from 'borc';\nimport * as cbor from 'simple-cbor';\nimport { SelfDescribeCborSerializer } from 'simple-cbor';\nimport { concat, fromHex, toHex } from './utils/buffer';\n// We are using hansl/simple-cbor for CBOR serialization, to avoid issues with\n// encoding the uint64 values that the HTTP handler of the client expects for\n// canister IDs. However, simple-cbor does not yet provide deserialization so\n// we are using `Uint8Array` so that we can use the dignifiedquire/borc CBOR\n// decoder.\nclass PrincipalEncoder {\n get name() {\n return 'Principal';\n }\n get priority() {\n return 0;\n }\n match(value) {\n return value && value._isPrincipal === true;\n }\n encode(v) {\n return cbor.value.bytes(v.toUint8Array());\n }\n}\nclass BufferEncoder {\n get name() {\n return 'Buffer';\n }\n get priority() {\n return 1;\n }\n match(value) {\n return value instanceof ArrayBuffer || ArrayBuffer.isView(value);\n }\n encode(v) {\n return cbor.value.bytes(new Uint8Array(v));\n }\n}\nclass BigIntEncoder {\n get name() {\n return 'BigInt';\n }\n get priority() {\n return 1;\n }\n match(value) {\n return typeof value === `bigint`;\n }\n encode(v) {\n // Always use a bigint encoding.\n if (v > BigInt(0)) {\n return cbor.value.tagged(2, cbor.value.bytes(fromHex(v.toString(16))));\n }\n else {\n return cbor.value.tagged(3, cbor.value.bytes(fromHex((BigInt('-1') * v).toString(16))));\n }\n }\n}\nconst serializer = SelfDescribeCborSerializer.withDefaultEncoders(true);\nserializer.addEncoder(new PrincipalEncoder());\nserializer.addEncoder(new BufferEncoder());\nserializer.addEncoder(new BigIntEncoder());\nexport var CborTag;\n(function (CborTag) {\n CborTag[CborTag[\"Uint64LittleEndian\"] = 71] = \"Uint64LittleEndian\";\n CborTag[CborTag[\"Semantic\"] = 55799] = \"Semantic\";\n})(CborTag || (CborTag = {}));\n/**\n * Encode a JavaScript value into CBOR.\n */\nexport function encode(value) {\n return serializer.serialize(value);\n}\nfunction decodePositiveBigInt(buf) {\n const len = buf.byteLength;\n let res = BigInt(0);\n for (let i = 0; i < len; i++) {\n res = res * BigInt(0x100) + BigInt(buf[i]);\n }\n return res;\n}\n// A BORC subclass that decodes byte strings to ArrayBuffer instead of the Buffer class.\nclass Uint8ArrayDecoder extends borc.Decoder {\n createByteString(raw) {\n return concat(...raw);\n }\n createByteStringFromHeap(start, end) {\n if (start === end) {\n return new ArrayBuffer(0);\n }\n return new Uint8Array(this._heap.slice(start, end));\n }\n}\nexport function decode(input) {\n const buffer = new Uint8Array(input);\n const decoder = new Uint8ArrayDecoder({\n size: buffer.byteLength,\n tags: {\n // Override tags 2 and 3 for BigInt support (borc supports only BigNumber).\n 2: val => decodePositiveBigInt(val),\n 3: val => -decodePositiveBigInt(val),\n [CborTag.Semantic]: (value) => value,\n },\n });\n try {\n return decoder.decodeFirst(buffer);\n }\n catch (e) {\n throw new Error(`Failed to decode CBOR: ${e}, input: ${toHex(buffer)}`);\n }\n}\n//# sourceMappingURL=cbor.js.map","/**\n * Generates a random unsigned 32-bit integer between 0 and 0xffffffff\n * @returns {number} a random number\n */\nexport const randomNumber = () => {\n // determine whether browser crypto is available\n if (typeof window !== 'undefined' && !!window.crypto && !!window.crypto.getRandomValues) {\n const array = new Uint32Array(1);\n window.crypto.getRandomValues(array);\n return array[0];\n }\n // A second check for webcrypto, in case it is loaded under global instead of window\n if (typeof crypto !== 'undefined' && crypto.getRandomValues) {\n const array = new Uint32Array(1);\n crypto.getRandomValues(array);\n return array[0];\n }\n // determine whether node crypto is available\n if (typeof crypto !== 'undefined' && crypto.randomInt) {\n return crypto.randomInt(0, 0xffffffff);\n }\n // fall back to Math.random\n return Math.floor(Math.random() * 0xffffffff);\n};\n//# sourceMappingURL=random.js.map","import { randomNumber } from '../../utils/random';\n// The types of values allowed in the `request_type` field for submit requests.\nexport var SubmitRequestType;\n(function (SubmitRequestType) {\n SubmitRequestType[\"Call\"] = \"call\";\n})(SubmitRequestType || (SubmitRequestType = {}));\n/**\n * Create a random Nonce, based on random values\n */\nexport function makeNonce() {\n // Encode 128 bits.\n const buffer = new ArrayBuffer(16);\n const view = new DataView(buffer);\n const rand1 = randomNumber();\n const rand2 = randomNumber();\n const rand3 = randomNumber();\n const rand4 = randomNumber();\n view.setUint32(0, rand1);\n view.setUint32(4, rand2);\n view.setUint32(8, rand3);\n view.setUint32(12, rand4);\n return buffer;\n}\n//# sourceMappingURL=types.js.map","import { lebEncode } from '@dfinity/candid';\nimport * as cbor from 'simple-cbor';\nimport { makeNonce, } from './types';\nconst NANOSECONDS_PER_MILLISECONDS = BigInt(1000000);\nconst REPLICA_PERMITTED_DRIFT_MILLISECONDS = 60 * 1000;\nexport class Expiry {\n constructor(deltaInMSec) {\n // if ingress as seconds is less than 90, round to nearest second\n if (deltaInMSec < 90 * 1000) {\n // Raw value without subtraction of REPLICA_PERMITTED_DRIFT_MILLISECONDS\n const raw_value = BigInt(Date.now() + deltaInMSec) * NANOSECONDS_PER_MILLISECONDS;\n const ingress_as_seconds = raw_value / BigInt(1000000000);\n this._value = ingress_as_seconds * BigInt(1000000000);\n return;\n }\n // Use bigint because it can overflow the maximum number allowed in a double float.\n const raw_value = BigInt(Math.floor(Date.now() + deltaInMSec - REPLICA_PERMITTED_DRIFT_MILLISECONDS)) *\n NANOSECONDS_PER_MILLISECONDS;\n // round down to the nearest second (since )\n const ingress_as_seconds = raw_value / BigInt(1000000000);\n // round down to nearest minute\n const ingress_as_minutes = ingress_as_seconds / BigInt(60);\n const rounded_down_nanos = ingress_as_minutes * BigInt(60) * BigInt(1000000000);\n this._value = rounded_down_nanos;\n }\n toCBOR() {\n // TODO: change this to take the minimum amount of space (it always takes 8 bytes now).\n return cbor.value.u64(this._value.toString(16), 16);\n }\n toHash() {\n return lebEncode(this._value);\n }\n}\n/**\n * Create a Nonce transform, which takes a function that returns a Buffer, and adds it\n * as the nonce to every call requests.\n * @param nonceFn A function that returns a buffer. By default uses a semi-random method.\n */\nexport function makeNonceTransform(nonceFn = makeNonce) {\n return async (request) => {\n // Nonce needs to be inserted into the header for all requests, to enable logs to be correlated with requests.\n const headers = request.request.headers;\n // TODO: uncomment this when the http proxy supports it.\n // headers.set('X-IC-Request-ID', toHex(new Uint8Array(nonce)));\n request.request.headers = headers;\n // Nonce only needs to be inserted into the body for async calls, to prevent replay attacks.\n if (request.endpoint === \"call\" /* Endpoint.Call */) {\n request.body.nonce = nonceFn();\n }\n };\n}\n/**\n * Create a transform that adds a delay (by default 5 minutes) to the expiry.\n *\n * @param delayInMilliseconds The delay to add to the call time, in milliseconds.\n */\nexport function makeExpiryTransform(delayInMilliseconds) {\n return async (request) => {\n request.body.ingress_expiry = new Expiry(delayInMilliseconds);\n };\n}\n/**\n * Maps the default fetch headers field to the serializable HttpHeaderField.\n *\n * @param headers Fetch definition of the headers type\n * @returns array of header fields\n */\nexport function httpHeadersTransform(headers) {\n const headerFields = [];\n headers.forEach((value, key) => {\n headerFields.push([key, value]);\n });\n return headerFields;\n}\n//# sourceMappingURL=transforms.js.map","import { AgentError } from '../../errors';\nexport class AgentHTTPResponseError extends AgentError {\n constructor(message, response) {\n super(message);\n this.response = response;\n this.name = this.constructor.name;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n//# sourceMappingURL=errors.js.map","/**\n * Hex, bytes and number utilities.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// 100 lines of code in the file are duplicated from noble-hashes (utils).\n// This is OK: `abstract` directory does not use noble-hashes.\n// User may opt-in into using different hashing library. This way, noble-hashes\n// won't be included into their bundle.\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nexport function isBytes(a) {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\nexport function abytes(item) {\n if (!isBytes(item))\n throw new Error('Uint8Array expected');\n}\nexport function abool(title, value) {\n if (typeof value !== 'boolean')\n throw new Error(title + ' boolean expected, got ' + value);\n}\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n abytes(bytes);\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\nexport function numberToHexUnpadded(num) {\n const hex = num.toString(16);\n return hex.length & 1 ? '0' + hex : hex;\n}\nexport function hexToNumber(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n return hex === '' ? _0n : BigInt('0x' + hex); // Big Endian\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 };\nfunction asciiToBase16(ch) {\n if (ch >= asciis._0 && ch <= asciis._9)\n return ch - asciis._0; // '2' => 50-48\n if (ch >= asciis.A && ch <= asciis.F)\n return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n if (ch >= asciis.a && ch <= asciis.f)\n return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n return;\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new Error('hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n }\n return array;\n}\n// BE: Big Endian, LE: Little Endian\nexport function bytesToNumberBE(bytes) {\n return hexToNumber(bytesToHex(bytes));\n}\nexport function bytesToNumberLE(bytes) {\n abytes(bytes);\n return hexToNumber(bytesToHex(Uint8Array.from(bytes).reverse()));\n}\nexport function numberToBytesBE(n, len) {\n return hexToBytes(n.toString(16).padStart(len * 2, '0'));\n}\nexport function numberToBytesLE(n, len) {\n return numberToBytesBE(n, len).reverse();\n}\n// Unpadded, rarely used\nexport function numberToVarBytesBE(n) {\n return hexToBytes(numberToHexUnpadded(n));\n}\n/**\n * Takes hex string or Uint8Array, converts to Uint8Array.\n * Validates output length.\n * Will throw error for other types.\n * @param title descriptive title for an error e.g. 'private key'\n * @param hex hex string or Uint8Array\n * @param expectedLength optional, will compare to result array's length\n * @returns\n */\nexport function ensureBytes(title, hex, expectedLength) {\n let res;\n if (typeof hex === 'string') {\n try {\n res = hexToBytes(hex);\n }\n catch (e) {\n throw new Error(title + ' must be hex string or Uint8Array, cause: ' + e);\n }\n }\n else if (isBytes(hex)) {\n // Uint8Array.from() instead of hash.slice() because node.js Buffer\n // is instance of Uint8Array, and its slice() creates **mutable** copy\n res = Uint8Array.from(hex);\n }\n else {\n throw new Error(title + ' must be hex string or Uint8Array');\n }\n const len = res.length;\n if (typeof expectedLength === 'number' && len !== expectedLength)\n throw new Error(title + ' of length ' + expectedLength + ' expected, got ' + len);\n return res;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n// Compares 2 u8a-s in kinda constant time\nexport function equalBytes(a, b) {\n if (a.length !== b.length)\n return false;\n let diff = 0;\n for (let i = 0; i < a.length; i++)\n diff |= a[i] ^ b[i];\n return diff === 0;\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error('string expected');\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n// Is positive bigint\nconst isPosBig = (n) => typeof n === 'bigint' && _0n <= n;\nexport function inRange(n, min, max) {\n return isPosBig(n) && isPosBig(min) && isPosBig(max) && min <= n && n < max;\n}\n/**\n * Asserts min <= n < max. NOTE: It's < max and not <= max.\n * @example\n * aInRange('x', x, 1n, 256n); // would assume x is in (1n..255n)\n */\nexport function aInRange(title, n, min, max) {\n // Why min <= n < max and not a (min < n < max) OR b (min <= n <= max)?\n // consider P=256n, min=0n, max=P\n // - a for min=0 would require -1: `inRange('x', x, -1n, P)`\n // - b would commonly require subtraction: `inRange('x', x, 0n, P - 1n)`\n // - our way is the cleanest: `inRange('x', x, 0n, P)\n if (!inRange(n, min, max))\n throw new Error('expected valid ' + title + ': ' + min + ' <= n < ' + max + ', got ' + n);\n}\n// Bit operations\n/**\n * Calculates amount of bits in a bigint.\n * Same as `n.toString(2).length`\n */\nexport function bitLen(n) {\n let len;\n for (len = 0; n > _0n; n >>= _1n, len += 1)\n ;\n return len;\n}\n/**\n * Gets single bit at position.\n * NOTE: first bit position is 0 (same as arrays)\n * Same as `!!+Array.from(n.toString(2)).reverse()[pos]`\n */\nexport function bitGet(n, pos) {\n return (n >> BigInt(pos)) & _1n;\n}\n/**\n * Sets single bit at position.\n */\nexport function bitSet(n, pos, value) {\n return n | ((value ? _1n : _0n) << BigInt(pos));\n}\n/**\n * Calculate mask for N bits. Not using ** operator with bigints because of old engines.\n * Same as BigInt(`0b${Array(i).fill('1').join('')}`)\n */\nexport const bitMask = (n) => (_2n << BigInt(n - 1)) - _1n;\n// DRBG\nconst u8n = (data) => new Uint8Array(data); // creates Uint8Array\nconst u8fr = (arr) => Uint8Array.from(arr); // another shortcut\n/**\n * Minimal HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n * @returns function that will call DRBG until 2nd arg returns something meaningful\n * @example\n * const drbg = createHmacDRBG(32, 32, hmac);\n * drbg(seed, bytesToKey); // bytesToKey must return Key or undefined\n */\nexport function createHmacDrbg(hashLen, qByteLen, hmacFn) {\n if (typeof hashLen !== 'number' || hashLen < 2)\n throw new Error('hashLen must be a number');\n if (typeof qByteLen !== 'number' || qByteLen < 2)\n throw new Error('qByteLen must be a number');\n if (typeof hmacFn !== 'function')\n throw new Error('hmacFn must be a function');\n // Step B, Step C: set hashLen to 8*ceil(hlen/8)\n let v = u8n(hashLen); // Minimal non-full-spec HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n let k = u8n(hashLen); // Steps B and C of RFC6979 3.2: set hashLen, in our case always same\n let i = 0; // Iterations counter, will throw when over 1000\n const reset = () => {\n v.fill(1);\n k.fill(0);\n i = 0;\n };\n const h = (...b) => hmacFn(k, v, ...b); // hmac(k)(v, ...values)\n const reseed = (seed = u8n()) => {\n // HMAC-DRBG reseed() function. Steps D-G\n k = h(u8fr([0x00]), seed); // k = hmac(k || v || 0x00 || seed)\n v = h(); // v = hmac(k || v)\n if (seed.length === 0)\n return;\n k = h(u8fr([0x01]), seed); // k = hmac(k || v || 0x01 || seed)\n v = h(); // v = hmac(k || v)\n };\n const gen = () => {\n // HMAC-DRBG generate() function\n if (i++ >= 1000)\n throw new Error('drbg: tried 1000 values');\n let len = 0;\n const out = [];\n while (len < qByteLen) {\n v = h();\n const sl = v.slice();\n out.push(sl);\n len += v.length;\n }\n return concatBytes(...out);\n };\n const genUntil = (seed, pred) => {\n reset();\n reseed(seed); // Steps D-G\n let res = undefined; // Step H: grind until k is in [1..n-1]\n while (!(res = pred(gen())))\n reseed();\n reset();\n return res;\n };\n return genUntil;\n}\n// Validating curves and fields\nconst validatorFns = {\n bigint: (val) => typeof val === 'bigint',\n function: (val) => typeof val === 'function',\n boolean: (val) => typeof val === 'boolean',\n string: (val) => typeof val === 'string',\n stringOrUint8Array: (val) => typeof val === 'string' || isBytes(val),\n isSafeInteger: (val) => Number.isSafeInteger(val),\n array: (val) => Array.isArray(val),\n field: (val, object) => object.Fp.isValid(val),\n hash: (val) => typeof val === 'function' && Number.isSafeInteger(val.outputLen),\n};\n// type Record = { [P in K]: T; }\nexport function validateObject(object, validators, optValidators = {}) {\n const checkField = (fieldName, type, isOptional) => {\n const checkVal = validatorFns[type];\n if (typeof checkVal !== 'function')\n throw new Error('invalid validator function');\n const val = object[fieldName];\n if (isOptional && val === undefined)\n return;\n if (!checkVal(val, object)) {\n throw new Error('param ' + String(fieldName) + ' is invalid. Expected ' + type + ', got ' + val);\n }\n };\n for (const [fieldName, type] of Object.entries(validators))\n checkField(fieldName, type, false);\n for (const [fieldName, type] of Object.entries(optValidators))\n checkField(fieldName, type, true);\n return object;\n}\n// validate type tests\n// const o: { a: number; b: number; c: number } = { a: 1, b: 5, c: 6 };\n// const z0 = validateObject(o, { a: 'isSafeInteger' }, { c: 'bigint' }); // Ok!\n// // Should fail type-check\n// const z1 = validateObject(o, { a: 'tmp' }, { c: 'zz' });\n// const z2 = validateObject(o, { a: 'isSafeInteger' }, { c: 'zz' });\n// const z3 = validateObject(o, { test: 'boolean', z: 'bug' });\n// const z4 = validateObject(o, { a: 'boolean', z: 'bug' });\n/**\n * throws not implemented error\n */\nexport const notImplemented = () => {\n throw new Error('not implemented');\n};\n/**\n * Memoizes (caches) computation result.\n * Uses WeakMap: the value is going auto-cleaned by GC after last reference is removed.\n */\nexport function memoized(fn) {\n const map = new WeakMap();\n return (arg, ...args) => {\n const val = map.get(arg);\n if (val !== undefined)\n return val;\n const computed = fn(arg, ...args);\n map.set(arg, computed);\n return computed;\n };\n}\n//# sourceMappingURL=utils.js.map","/**\n * Utils for modular division and finite fields.\n * A finite field over 11 is integer number operations `mod 11`.\n * There is no division: it is replaced by modular multiplicative inverse.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { bitMask, bytesToNumberBE, bytesToNumberLE, ensureBytes, numberToBytesBE, numberToBytesLE, validateObject, } from './utils.js';\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = /* @__PURE__ */ BigInt(2), _3n = /* @__PURE__ */ BigInt(3);\n// prettier-ignore\nconst _4n = /* @__PURE__ */ BigInt(4), _5n = /* @__PURE__ */ BigInt(5), _8n = /* @__PURE__ */ BigInt(8);\n// prettier-ignore\nconst _9n = /* @__PURE__ */ BigInt(9), _16n = /* @__PURE__ */ BigInt(16);\n// Calculates a modulo b\nexport function mod(a, b) {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\n/**\n * Efficiently raise num to power and do modular division.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n * @todo use field version && remove\n * @example\n * pow(2n, 6n, 11n) // 64n % 11n == 9n\n */\nexport function pow(num, power, modulo) {\n if (power < _0n)\n throw new Error('invalid exponent, negatives unsupported');\n if (modulo <= _0n)\n throw new Error('invalid modulus');\n if (modulo === _1n)\n return _0n;\n let res = _1n;\n while (power > _0n) {\n if (power & _1n)\n res = (res * num) % modulo;\n num = (num * num) % modulo;\n power >>= _1n;\n }\n return res;\n}\n/** Does `x^(2^power)` mod p. `pow2(30, 4)` == `30^(2^4)` */\nexport function pow2(x, power, modulo) {\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= modulo;\n }\n return res;\n}\n/**\n * Inverses number over modulo.\n * Implemented using [Euclidean GCD](https://brilliant.org/wiki/extended-euclidean-algorithm/).\n */\nexport function invert(number, modulo) {\n if (number === _0n)\n throw new Error('invert: expected non-zero number');\n if (modulo <= _0n)\n throw new Error('invert: expected positive modulus, got ' + modulo);\n // Fermat's little theorem \"CT-like\" version inv(n) = n^(m-2) mod m is 30x slower.\n let a = mod(number, modulo);\n let b = modulo;\n // prettier-ignore\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n // JIT applies optimization if those two lines follow each other\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n // prettier-ignore\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n)\n throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\n/**\n * Tonelli-Shanks square root search algorithm.\n * 1. https://eprint.iacr.org/2012/685.pdf (page 12)\n * 2. Square Roots from 1; 24, 51, 10 to Dan Shanks\n * Will start an infinite loop if field order P is not prime.\n * @param P field order\n * @returns function that takes field Fp (created from P) and number n\n */\nexport function tonelliShanks(P) {\n // Legendre constant: used to calculate Legendre symbol (a | p),\n // which denotes the value of a^((p-1)/2) (mod p).\n // (a | p) ≡ 1 if a is a square (mod p)\n // (a | p) ≡ -1 if a is not a square (mod p)\n // (a | p) ≡ 0 if a ≡ 0 (mod p)\n const legendreC = (P - _1n) / _2n;\n let Q, S, Z;\n // Step 1: By factoring out powers of 2 from p - 1,\n // find q and s such that p - 1 = q*(2^s) with q odd\n for (Q = P - _1n, S = 0; Q % _2n === _0n; Q /= _2n, S++)\n ;\n // Step 2: Select a non-square z such that (z | p) ≡ -1 and set c ≡ zq\n for (Z = _2n; Z < P && pow(Z, legendreC, P) !== P - _1n; Z++) {\n // Crash instead of infinity loop, we cannot reasonable count until P.\n if (Z > 1000)\n throw new Error('Cannot find square root: likely non-prime P');\n }\n // Fast-path\n if (S === 1) {\n const p1div4 = (P + _1n) / _4n;\n return function tonelliFast(Fp, n) {\n const root = Fp.pow(n, p1div4);\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n return root;\n };\n }\n // Slow-path\n const Q1div2 = (Q + _1n) / _2n;\n return function tonelliSlow(Fp, n) {\n // Step 0: Check that n is indeed a square: (n | p) should not be ≡ -1\n if (Fp.pow(n, legendreC) === Fp.neg(Fp.ONE))\n throw new Error('Cannot find square root');\n let r = S;\n // TODO: will fail at Fp2/etc\n let g = Fp.pow(Fp.mul(Fp.ONE, Z), Q); // will update both x and b\n let x = Fp.pow(n, Q1div2); // first guess at the square root\n let b = Fp.pow(n, Q); // first guess at the fudge factor\n while (!Fp.eql(b, Fp.ONE)) {\n if (Fp.eql(b, Fp.ZERO))\n return Fp.ZERO; // https://en.wikipedia.org/wiki/Tonelli%E2%80%93Shanks_algorithm (4. If t = 0, return r = 0)\n // Find m such b^(2^m)==1\n let m = 1;\n for (let t2 = Fp.sqr(b); m < r; m++) {\n if (Fp.eql(t2, Fp.ONE))\n break;\n t2 = Fp.sqr(t2); // t2 *= t2\n }\n // NOTE: r-m-1 can be bigger than 32, need to convert to bigint before shift, otherwise there will be overflow\n const ge = Fp.pow(g, _1n << BigInt(r - m - 1)); // ge = 2^(r-m-1)\n g = Fp.sqr(ge); // g = ge * ge\n x = Fp.mul(x, ge); // x *= ge\n b = Fp.mul(b, g); // b *= g\n r = m;\n }\n return x;\n };\n}\n/**\n * Square root for a finite field. It will try to check if optimizations are applicable and fall back to 4:\n *\n * 1. P ≡ 3 (mod 4)\n * 2. P ≡ 5 (mod 8)\n * 3. P ≡ 9 (mod 16)\n * 4. Tonelli-Shanks algorithm\n *\n * Different algorithms can give different roots, it is up to user to decide which one they want.\n * For example there is FpSqrtOdd/FpSqrtEven to choice root based on oddness (used for hash-to-curve).\n */\nexport function FpSqrt(P) {\n // P ≡ 3 (mod 4)\n // √n = n^((P+1)/4)\n if (P % _4n === _3n) {\n // Not all roots possible!\n // const ORDER =\n // 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaabn;\n // const NUM = 72057594037927816n;\n const p1div4 = (P + _1n) / _4n;\n return function sqrt3mod4(Fp, n) {\n const root = Fp.pow(n, p1div4);\n // Throw if root**2 != n\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n return root;\n };\n }\n // Atkin algorithm for q ≡ 5 (mod 8), https://eprint.iacr.org/2012/685.pdf (page 10)\n if (P % _8n === _5n) {\n const c1 = (P - _5n) / _8n;\n return function sqrt5mod8(Fp, n) {\n const n2 = Fp.mul(n, _2n);\n const v = Fp.pow(n2, c1);\n const nv = Fp.mul(n, v);\n const i = Fp.mul(Fp.mul(nv, _2n), v);\n const root = Fp.mul(nv, Fp.sub(i, Fp.ONE));\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n return root;\n };\n }\n // P ≡ 9 (mod 16)\n if (P % _16n === _9n) {\n // NOTE: tonelli is too slow for bls-Fp2 calculations even on start\n // Means we cannot use sqrt for constants at all!\n //\n // const c1 = Fp.sqrt(Fp.negate(Fp.ONE)); // 1. c1 = sqrt(-1) in F, i.e., (c1^2) == -1 in F\n // const c2 = Fp.sqrt(c1); // 2. c2 = sqrt(c1) in F, i.e., (c2^2) == c1 in F\n // const c3 = Fp.sqrt(Fp.negate(c1)); // 3. c3 = sqrt(-c1) in F, i.e., (c3^2) == -c1 in F\n // const c4 = (P + _7n) / _16n; // 4. c4 = (q + 7) / 16 # Integer arithmetic\n // sqrt = (x) => {\n // let tv1 = Fp.pow(x, c4); // 1. tv1 = x^c4\n // let tv2 = Fp.mul(c1, tv1); // 2. tv2 = c1 * tv1\n // const tv3 = Fp.mul(c2, tv1); // 3. tv3 = c2 * tv1\n // let tv4 = Fp.mul(c3, tv1); // 4. tv4 = c3 * tv1\n // const e1 = Fp.equals(Fp.square(tv2), x); // 5. e1 = (tv2^2) == x\n // const e2 = Fp.equals(Fp.square(tv3), x); // 6. e2 = (tv3^2) == x\n // tv1 = Fp.cmov(tv1, tv2, e1); // 7. tv1 = CMOV(tv1, tv2, e1) # Select tv2 if (tv2^2) == x\n // tv2 = Fp.cmov(tv4, tv3, e2); // 8. tv2 = CMOV(tv4, tv3, e2) # Select tv3 if (tv3^2) == x\n // const e3 = Fp.equals(Fp.square(tv2), x); // 9. e3 = (tv2^2) == x\n // return Fp.cmov(tv1, tv2, e3); // 10. z = CMOV(tv1, tv2, e3) # Select the sqrt from tv1 and tv2\n // }\n }\n // Other cases: Tonelli-Shanks algorithm\n return tonelliShanks(P);\n}\n// Little-endian check for first LE bit (last BE bit);\nexport const isNegativeLE = (num, modulo) => (mod(num, modulo) & _1n) === _1n;\n// prettier-ignore\nconst FIELD_FIELDS = [\n 'create', 'isValid', 'is0', 'neg', 'inv', 'sqrt', 'sqr',\n 'eql', 'add', 'sub', 'mul', 'pow', 'div',\n 'addN', 'subN', 'mulN', 'sqrN'\n];\nexport function validateField(field) {\n const initial = {\n ORDER: 'bigint',\n MASK: 'bigint',\n BYTES: 'isSafeInteger',\n BITS: 'isSafeInteger',\n };\n const opts = FIELD_FIELDS.reduce((map, val) => {\n map[val] = 'function';\n return map;\n }, initial);\n return validateObject(field, opts);\n}\n// Generic field functions\n/**\n * Same as `pow` but for Fp: non-constant-time.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n */\nexport function FpPow(f, num, power) {\n // Should have same speed as pow for bigints\n // TODO: benchmark!\n if (power < _0n)\n throw new Error('invalid exponent, negatives unsupported');\n if (power === _0n)\n return f.ONE;\n if (power === _1n)\n return num;\n let p = f.ONE;\n let d = num;\n while (power > _0n) {\n if (power & _1n)\n p = f.mul(p, d);\n d = f.sqr(d);\n power >>= _1n;\n }\n return p;\n}\n/**\n * Efficiently invert an array of Field elements.\n * `inv(0)` will return `undefined` here: make sure to throw an error.\n */\nexport function FpInvertBatch(f, nums) {\n const tmp = new Array(nums.length);\n // Walk from first to last, multiply them by each other MOD p\n const lastMultiplied = nums.reduce((acc, num, i) => {\n if (f.is0(num))\n return acc;\n tmp[i] = acc;\n return f.mul(acc, num);\n }, f.ONE);\n // Invert last element\n const inverted = f.inv(lastMultiplied);\n // Walk from last to first, multiply them by inverted each other MOD p\n nums.reduceRight((acc, num, i) => {\n if (f.is0(num))\n return acc;\n tmp[i] = f.mul(acc, tmp[i]);\n return f.mul(acc, num);\n }, inverted);\n return tmp;\n}\nexport function FpDiv(f, lhs, rhs) {\n return f.mul(lhs, typeof rhs === 'bigint' ? invert(rhs, f.ORDER) : f.inv(rhs));\n}\n/**\n * Legendre symbol.\n * * (a | p) ≡ 1 if a is a square (mod p), quadratic residue\n * * (a | p) ≡ -1 if a is not a square (mod p), quadratic non residue\n * * (a | p) ≡ 0 if a ≡ 0 (mod p)\n */\nexport function FpLegendre(order) {\n const legendreConst = (order - _1n) / _2n; // Integer arithmetic\n return (f, x) => f.pow(x, legendreConst);\n}\n// This function returns True whenever the value x is a square in the field F.\nexport function FpIsSquare(f) {\n const legendre = FpLegendre(f.ORDER);\n return (x) => {\n const p = legendre(f, x);\n return f.eql(p, f.ZERO) || f.eql(p, f.ONE);\n };\n}\n// CURVE.n lengths\nexport function nLength(n, nBitLength) {\n // Bit size, byte size of CURVE.n\n const _nBitLength = nBitLength !== undefined ? nBitLength : n.toString(2).length;\n const nByteLength = Math.ceil(_nBitLength / 8);\n return { nBitLength: _nBitLength, nByteLength };\n}\n/**\n * Initializes a finite field over prime.\n * Major performance optimizations:\n * * a) denormalized operations like mulN instead of mul\n * * b) same object shape: never add or remove keys\n * * c) Object.freeze\n * Fragile: always run a benchmark on a change.\n * Security note: operations don't check 'isValid' for all elements for performance reasons,\n * it is caller responsibility to check this.\n * This is low-level code, please make sure you know what you're doing.\n * @param ORDER prime positive bigint\n * @param bitLen how many bits the field consumes\n * @param isLE (def: false) if encoding / decoding should be in little-endian\n * @param redef optional faster redefinitions of sqrt and other methods\n */\nexport function Field(ORDER, bitLen, isLE = false, redef = {}) {\n if (ORDER <= _0n)\n throw new Error('invalid field: expected ORDER > 0, got ' + ORDER);\n const { nBitLength: BITS, nByteLength: BYTES } = nLength(ORDER, bitLen);\n if (BYTES > 2048)\n throw new Error('invalid field: expected ORDER of <= 2048 bytes');\n let sqrtP; // cached sqrtP\n const f = Object.freeze({\n ORDER,\n isLE,\n BITS,\n BYTES,\n MASK: bitMask(BITS),\n ZERO: _0n,\n ONE: _1n,\n create: (num) => mod(num, ORDER),\n isValid: (num) => {\n if (typeof num !== 'bigint')\n throw new Error('invalid field element: expected bigint, got ' + typeof num);\n return _0n <= num && num < ORDER; // 0 is valid element, but it's not invertible\n },\n is0: (num) => num === _0n,\n isOdd: (num) => (num & _1n) === _1n,\n neg: (num) => mod(-num, ORDER),\n eql: (lhs, rhs) => lhs === rhs,\n sqr: (num) => mod(num * num, ORDER),\n add: (lhs, rhs) => mod(lhs + rhs, ORDER),\n sub: (lhs, rhs) => mod(lhs - rhs, ORDER),\n mul: (lhs, rhs) => mod(lhs * rhs, ORDER),\n pow: (num, power) => FpPow(f, num, power),\n div: (lhs, rhs) => mod(lhs * invert(rhs, ORDER), ORDER),\n // Same as above, but doesn't normalize\n sqrN: (num) => num * num,\n addN: (lhs, rhs) => lhs + rhs,\n subN: (lhs, rhs) => lhs - rhs,\n mulN: (lhs, rhs) => lhs * rhs,\n inv: (num) => invert(num, ORDER),\n sqrt: redef.sqrt ||\n ((n) => {\n if (!sqrtP)\n sqrtP = FpSqrt(ORDER);\n return sqrtP(f, n);\n }),\n invertBatch: (lst) => FpInvertBatch(f, lst),\n // TODO: do we really need constant cmov?\n // We don't have const-time bigints anyway, so probably will be not very useful\n cmov: (a, b, c) => (c ? b : a),\n toBytes: (num) => (isLE ? numberToBytesLE(num, BYTES) : numberToBytesBE(num, BYTES)),\n fromBytes: (bytes) => {\n if (bytes.length !== BYTES)\n throw new Error('Field.fromBytes: expected ' + BYTES + ' bytes, got ' + bytes.length);\n return isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n },\n });\n return Object.freeze(f);\n}\nexport function FpSqrtOdd(Fp, elm) {\n if (!Fp.isOdd)\n throw new Error(\"Field doesn't have isOdd\");\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? root : Fp.neg(root);\n}\nexport function FpSqrtEven(Fp, elm) {\n if (!Fp.isOdd)\n throw new Error(\"Field doesn't have isOdd\");\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? Fp.neg(root) : root;\n}\n/**\n * \"Constant-time\" private key generation utility.\n * Same as mapKeyToField, but accepts less bytes (40 instead of 48 for 32-byte field).\n * Which makes it slightly more biased, less secure.\n * @deprecated use `mapKeyToField` instead\n */\nexport function hashToPrivateScalar(hash, groupOrder, isLE = false) {\n hash = ensureBytes('privateHash', hash);\n const hashLen = hash.length;\n const minLen = nLength(groupOrder).nByteLength + 8;\n if (minLen < 24 || hashLen < minLen || hashLen > 1024)\n throw new Error('hashToPrivateScalar: expected ' + minLen + '-1024 bytes of input, got ' + hashLen);\n const num = isLE ? bytesToNumberLE(hash) : bytesToNumberBE(hash);\n return mod(num, groupOrder - _1n) + _1n;\n}\n/**\n * Returns total number of bytes consumed by the field element.\n * For example, 32 bytes for usual 256-bit weierstrass curve.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of field\n */\nexport function getFieldBytesLength(fieldOrder) {\n if (typeof fieldOrder !== 'bigint')\n throw new Error('field order must be bigint');\n const bitLength = fieldOrder.toString(2).length;\n return Math.ceil(bitLength / 8);\n}\n/**\n * Returns minimal amount of bytes that can be safely reduced\n * by field order.\n * Should be 2^-128 for 128-bit curve such as P256.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of target hash\n */\nexport function getMinHashLength(fieldOrder) {\n const length = getFieldBytesLength(fieldOrder);\n return length + Math.ceil(length / 2);\n}\n/**\n * \"Constant-time\" private key generation utility.\n * Can take (n + n/2) or more bytes of uniform input e.g. from CSPRNG or KDF\n * and convert them into private scalar, with the modulo bias being negligible.\n * Needs at least 48 bytes of input for 32-byte private key.\n * https://research.kudelskisecurity.com/2020/07/28/the-definitive-guide-to-modulo-bias-and-how-to-avoid-it/\n * FIPS 186-5, A.2 https://csrc.nist.gov/publications/detail/fips/186/5/final\n * RFC 9380, https://www.rfc-editor.org/rfc/rfc9380#section-5\n * @param hash hash output from SHA3 or a similar function\n * @param groupOrder size of subgroup - (e.g. secp256k1.CURVE.n)\n * @param isLE interpret hash bytes as LE num\n * @returns valid private scalar\n */\nexport function mapHashToField(key, fieldOrder, isLE = false) {\n const len = key.length;\n const fieldLen = getFieldBytesLength(fieldOrder);\n const minLen = getMinHashLength(fieldOrder);\n // No small numbers: need to understand bias story. No huge numbers: easier to detect JS timings.\n if (len < 16 || len < minLen || len > 1024)\n throw new Error('expected ' + minLen + '-1024 bytes of input, got ' + len);\n const num = isLE ? bytesToNumberLE(key) : bytesToNumberBE(key);\n // `mod(x, 11)` can sometimes produce 0. `mod(x, 10) + 1` is the same, but no 0\n const reduced = mod(num, fieldOrder - _1n) + _1n;\n return isLE ? numberToBytesLE(reduced, fieldLen) : numberToBytesBE(reduced, fieldLen);\n}\n//# sourceMappingURL=modular.js.map","import { mod } from './modular.js';\nimport { abytes, bytesToNumberBE, concatBytes, utf8ToBytes, validateObject } from './utils.js';\n// Octet Stream to Integer. \"spec\" implementation of os2ip is 2.5x slower vs bytesToNumberBE.\nconst os2ip = bytesToNumberBE;\n// Integer to Octet Stream (numberToBytesBE)\nfunction i2osp(value, length) {\n anum(value);\n anum(length);\n if (value < 0 || value >= 1 << (8 * length))\n throw new Error('invalid I2OSP input: ' + value);\n const res = Array.from({ length }).fill(0);\n for (let i = length - 1; i >= 0; i--) {\n res[i] = value & 0xff;\n value >>>= 8;\n }\n return new Uint8Array(res);\n}\nfunction strxor(a, b) {\n const arr = new Uint8Array(a.length);\n for (let i = 0; i < a.length; i++) {\n arr[i] = a[i] ^ b[i];\n }\n return arr;\n}\nfunction anum(item) {\n if (!Number.isSafeInteger(item))\n throw new Error('number expected');\n}\n/**\n * Produces a uniformly random byte string using a cryptographic hash function H that outputs b bits.\n * [RFC 9380 5.3.1](https://www.rfc-editor.org/rfc/rfc9380#section-5.3.1).\n */\nexport function expand_message_xmd(msg, DST, lenInBytes, H) {\n abytes(msg);\n abytes(DST);\n anum(lenInBytes);\n // https://www.rfc-editor.org/rfc/rfc9380#section-5.3.3\n if (DST.length > 255)\n DST = H(concatBytes(utf8ToBytes('H2C-OVERSIZE-DST-'), DST));\n const { outputLen: b_in_bytes, blockLen: r_in_bytes } = H;\n const ell = Math.ceil(lenInBytes / b_in_bytes);\n if (lenInBytes > 65535 || ell > 255)\n throw new Error('expand_message_xmd: invalid lenInBytes');\n const DST_prime = concatBytes(DST, i2osp(DST.length, 1));\n const Z_pad = i2osp(0, r_in_bytes);\n const l_i_b_str = i2osp(lenInBytes, 2); // len_in_bytes_str\n const b = new Array(ell);\n const b_0 = H(concatBytes(Z_pad, msg, l_i_b_str, i2osp(0, 1), DST_prime));\n b[0] = H(concatBytes(b_0, i2osp(1, 1), DST_prime));\n for (let i = 1; i <= ell; i++) {\n const args = [strxor(b_0, b[i - 1]), i2osp(i + 1, 1), DST_prime];\n b[i] = H(concatBytes(...args));\n }\n const pseudo_random_bytes = concatBytes(...b);\n return pseudo_random_bytes.slice(0, lenInBytes);\n}\n/**\n * Produces a uniformly random byte string using an extendable-output function (XOF) H.\n * 1. The collision resistance of H MUST be at least k bits.\n * 2. H MUST be an XOF that has been proved indifferentiable from\n * a random oracle under a reasonable cryptographic assumption.\n * [RFC 9380 5.3.2](https://www.rfc-editor.org/rfc/rfc9380#section-5.3.2).\n */\nexport function expand_message_xof(msg, DST, lenInBytes, k, H) {\n abytes(msg);\n abytes(DST);\n anum(lenInBytes);\n // https://www.rfc-editor.org/rfc/rfc9380#section-5.3.3\n // DST = H('H2C-OVERSIZE-DST-' || a_very_long_DST, Math.ceil((lenInBytes * k) / 8));\n if (DST.length > 255) {\n const dkLen = Math.ceil((2 * k) / 8);\n DST = H.create({ dkLen }).update(utf8ToBytes('H2C-OVERSIZE-DST-')).update(DST).digest();\n }\n if (lenInBytes > 65535 || DST.length > 255)\n throw new Error('expand_message_xof: invalid lenInBytes');\n return (H.create({ dkLen: lenInBytes })\n .update(msg)\n .update(i2osp(lenInBytes, 2))\n // 2. DST_prime = DST || I2OSP(len(DST), 1)\n .update(DST)\n .update(i2osp(DST.length, 1))\n .digest());\n}\n/**\n * Hashes arbitrary-length byte strings to a list of one or more elements of a finite field F.\n * [RFC 9380 5.2](https://www.rfc-editor.org/rfc/rfc9380#section-5.2).\n * @param msg a byte string containing the message to hash\n * @param count the number of elements of F to output\n * @param options `{DST: string, p: bigint, m: number, k: number, expand: 'xmd' | 'xof', hash: H}`, see above\n * @returns [u_0, ..., u_(count - 1)], a list of field elements.\n */\nexport function hash_to_field(msg, count, options) {\n validateObject(options, {\n DST: 'stringOrUint8Array',\n p: 'bigint',\n m: 'isSafeInteger',\n k: 'isSafeInteger',\n hash: 'hash',\n });\n const { p, k, m, hash, expand, DST: _DST } = options;\n abytes(msg);\n anum(count);\n const DST = typeof _DST === 'string' ? utf8ToBytes(_DST) : _DST;\n const log2p = p.toString(2).length;\n const L = Math.ceil((log2p + k) / 8); // section 5.1 of ietf draft link above\n const len_in_bytes = count * m * L;\n let prb; // pseudo_random_bytes\n if (expand === 'xmd') {\n prb = expand_message_xmd(msg, DST, len_in_bytes, hash);\n }\n else if (expand === 'xof') {\n prb = expand_message_xof(msg, DST, len_in_bytes, k, hash);\n }\n else if (expand === '_internal_pass') {\n // for internal tests only\n prb = msg;\n }\n else {\n throw new Error('expand must be \"xmd\" or \"xof\"');\n }\n const u = new Array(count);\n for (let i = 0; i < count; i++) {\n const e = new Array(m);\n for (let j = 0; j < m; j++) {\n const elm_offset = L * (j + i * m);\n const tv = prb.subarray(elm_offset, elm_offset + L);\n e[j] = mod(os2ip(tv), p);\n }\n u[i] = e;\n }\n return u;\n}\nexport function isogenyMap(field, map) {\n // Make same order as in spec\n const COEFF = map.map((i) => Array.from(i).reverse());\n return (x, y) => {\n const [xNum, xDen, yNum, yDen] = COEFF.map((val) => val.reduce((acc, i) => field.add(field.mul(acc, x), i)));\n x = field.div(xNum, xDen); // xNum / xDen\n y = field.mul(y, field.div(yNum, yDen)); // y * (yNum / yDev)\n return { x: x, y: y };\n };\n}\n/** Creates hash-to-curve methods from EC Point and mapToCurve function. */\nexport function createHasher(Point, mapToCurve, def) {\n if (typeof mapToCurve !== 'function')\n throw new Error('mapToCurve() must be defined');\n return {\n // Encodes byte string to elliptic curve.\n // hash_to_curve from https://www.rfc-editor.org/rfc/rfc9380#section-3\n hashToCurve(msg, options) {\n const u = hash_to_field(msg, 2, { ...def, DST: def.DST, ...options });\n const u0 = Point.fromAffine(mapToCurve(u[0]));\n const u1 = Point.fromAffine(mapToCurve(u[1]));\n const P = u0.add(u1).clearCofactor();\n P.assertValidity();\n return P;\n },\n // Encodes byte string to elliptic curve.\n // encode_to_curve from https://www.rfc-editor.org/rfc/rfc9380#section-3\n encodeToCurve(msg, options) {\n const u = hash_to_field(msg, 1, { ...def, DST: def.encodeDST, ...options });\n const P = Point.fromAffine(mapToCurve(u[0])).clearCofactor();\n P.assertValidity();\n return P;\n },\n // Same as encodeToCurve, but without hash\n mapToCurve(scalars) {\n if (!Array.isArray(scalars))\n throw new Error('mapToCurve: expected array of bigints');\n for (const i of scalars)\n if (typeof i !== 'bigint')\n throw new Error('mapToCurve: expected array of bigints');\n const P = Point.fromAffine(mapToCurve(scalars)).clearCofactor();\n P.assertValidity();\n return P;\n },\n };\n}\n//# sourceMappingURL=hash-to-curve.js.map","/**\n * Methods for elliptic curve multiplication by scalars.\n * Contains wNAF, pippenger\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { validateField, nLength } from './modular.js';\nimport { validateObject, bitLen } from './utils.js';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nfunction constTimeNegate(condition, item) {\n const neg = item.negate();\n return condition ? neg : item;\n}\nfunction validateW(W, bits) {\n if (!Number.isSafeInteger(W) || W <= 0 || W > bits)\n throw new Error('invalid window size, expected [1..' + bits + '], got W=' + W);\n}\nfunction calcWOpts(W, bits) {\n validateW(W, bits);\n const windows = Math.ceil(bits / W) + 1; // +1, because\n const windowSize = 2 ** (W - 1); // -1 because we skip zero\n return { windows, windowSize };\n}\nfunction validateMSMPoints(points, c) {\n if (!Array.isArray(points))\n throw new Error('array expected');\n points.forEach((p, i) => {\n if (!(p instanceof c))\n throw new Error('invalid point at index ' + i);\n });\n}\nfunction validateMSMScalars(scalars, field) {\n if (!Array.isArray(scalars))\n throw new Error('array of scalars expected');\n scalars.forEach((s, i) => {\n if (!field.isValid(s))\n throw new Error('invalid scalar at index ' + i);\n });\n}\n// Since points in different groups cannot be equal (different object constructor),\n// we can have single place to store precomputes\nconst pointPrecomputes = new WeakMap();\nconst pointWindowSizes = new WeakMap(); // This allows use make points immutable (nothing changes inside)\nfunction getW(P) {\n return pointWindowSizes.get(P) || 1;\n}\n/**\n * Elliptic curve multiplication of Point by scalar. Fragile.\n * Scalars should always be less than curve order: this should be checked inside of a curve itself.\n * Creates precomputation tables for fast multiplication:\n * - private scalar is split by fixed size windows of W bits\n * - every window point is collected from window's table & added to accumulator\n * - since windows are different, same point inside tables won't be accessed more than once per calc\n * - each multiplication is 'Math.ceil(CURVE_ORDER / 𝑊) + 1' point additions (fixed for any scalar)\n * - +1 window is neccessary for wNAF\n * - wNAF reduces table size: 2x less memory + 2x faster generation, but 10% slower multiplication\n *\n * @todo Research returning 2d JS array of windows, instead of a single window.\n * This would allow windows to be in different memory locations\n */\nexport function wNAF(c, bits) {\n return {\n constTimeNegate,\n hasPrecomputes(elm) {\n return getW(elm) !== 1;\n },\n // non-const time multiplication ladder\n unsafeLadder(elm, n, p = c.ZERO) {\n let d = elm;\n while (n > _0n) {\n if (n & _1n)\n p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n },\n /**\n * Creates a wNAF precomputation window. Used for caching.\n * Default window size is set by `utils.precompute()` and is equal to 8.\n * Number of precomputed points depends on the curve size:\n * 2^(𝑊−1) * (Math.ceil(𝑛 / 𝑊) + 1), where:\n * - 𝑊 is the window size\n * - 𝑛 is the bitlength of the curve order.\n * For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224.\n * @param elm Point instance\n * @param W window size\n * @returns precomputed point tables flattened to a single array\n */\n precomputeWindow(elm, W) {\n const { windows, windowSize } = calcWOpts(W, bits);\n const points = [];\n let p = elm;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n // =1, because we skip zero\n for (let i = 1; i < windowSize; i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n },\n /**\n * Implements ec multiplication using precomputed tables and w-ary non-adjacent form.\n * @param W window size\n * @param precomputes precomputed tables\n * @param n scalar (we don't check here, but should be less than curve order)\n * @returns real and fake (for const-time) points\n */\n wNAF(W, precomputes, n) {\n // TODO: maybe check that scalar is less than group order? wNAF behavious is undefined otherwise\n // But need to carefully remove other checks before wNAF. ORDER == bits here\n const { windows, windowSize } = calcWOpts(W, bits);\n let p = c.ZERO;\n let f = c.BASE;\n const mask = BigInt(2 ** W - 1); // Create mask with W ones: 0b1111 for W=4 etc.\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n // Extract W bits.\n let wbits = Number(n & mask);\n // Shift number by W bits.\n n >>= shiftBy;\n // If the bits are bigger than max size, we'll split those.\n // +224 => 256 - 32\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n // This code was first written with assumption that 'f' and 'p' will never be infinity point:\n // since each addition is multiplied by 2 ** W, it cannot cancel each other. However,\n // there is negate now: it is possible that negated element from low value\n // would be the same as high element, which will create carry into next window.\n // It's not obvious how this can fail, but still worth investigating later.\n // Check if we're onto Zero point.\n // Add random point inside current window to f.\n const offset1 = offset;\n const offset2 = offset + Math.abs(wbits) - 1; // -1 because we skip zero\n const cond1 = window % 2 !== 0;\n const cond2 = wbits < 0;\n if (wbits === 0) {\n // The most important part for const-time getPublicKey\n f = f.add(constTimeNegate(cond1, precomputes[offset1]));\n }\n else {\n p = p.add(constTimeNegate(cond2, precomputes[offset2]));\n }\n }\n // JIT-compiler should not eliminate f here, since it will later be used in normalizeZ()\n // Even if the variable is still unused, there are some checks which will\n // throw an exception, so compiler needs to prove they won't happen, which is hard.\n // At this point there is a way to F be infinity-point even if p is not,\n // which makes it less const-time: around 1 bigint multiply.\n return { p, f };\n },\n /**\n * Implements ec unsafe (non const-time) multiplication using precomputed tables and w-ary non-adjacent form.\n * @param W window size\n * @param precomputes precomputed tables\n * @param n scalar (we don't check here, but should be less than curve order)\n * @param acc accumulator point to add result of multiplication\n * @returns point\n */\n wNAFUnsafe(W, precomputes, n, acc = c.ZERO) {\n const { windows, windowSize } = calcWOpts(W, bits);\n const mask = BigInt(2 ** W - 1); // Create mask with W ones: 0b1111 for W=4 etc.\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n if (n === _0n)\n break; // No need to go over empty scalar\n // Extract W bits.\n let wbits = Number(n & mask);\n // Shift number by W bits.\n n >>= shiftBy;\n // If the bits are bigger than max size, we'll split those.\n // +224 => 256 - 32\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n if (wbits === 0)\n continue;\n let curr = precomputes[offset + Math.abs(wbits) - 1]; // -1 because we skip zero\n if (wbits < 0)\n curr = curr.negate();\n // NOTE: by re-using acc, we can save a lot of additions in case of MSM\n acc = acc.add(curr);\n }\n return acc;\n },\n getPrecomputes(W, P, transform) {\n // Calculate precomputes on a first run, reuse them after\n let comp = pointPrecomputes.get(P);\n if (!comp) {\n comp = this.precomputeWindow(P, W);\n if (W !== 1)\n pointPrecomputes.set(P, transform(comp));\n }\n return comp;\n },\n wNAFCached(P, n, transform) {\n const W = getW(P);\n return this.wNAF(W, this.getPrecomputes(W, P, transform), n);\n },\n wNAFCachedUnsafe(P, n, transform, prev) {\n const W = getW(P);\n if (W === 1)\n return this.unsafeLadder(P, n, prev); // For W=1 ladder is ~x2 faster\n return this.wNAFUnsafe(W, this.getPrecomputes(W, P, transform), n, prev);\n },\n // We calculate precomputes for elliptic curve point multiplication\n // using windowed method. This specifies window size and\n // stores precomputed values. Usually only base point would be precomputed.\n setWindowSize(P, W) {\n validateW(W, bits);\n pointWindowSizes.set(P, W);\n pointPrecomputes.delete(P);\n },\n };\n}\n/**\n * Pippenger algorithm for multi-scalar multiplication (MSM, Pa + Qb + Rc + ...).\n * 30x faster vs naive addition on L=4096, 10x faster with precomputes.\n * For N=254bit, L=1, it does: 1024 ADD + 254 DBL. For L=5: 1536 ADD + 254 DBL.\n * Algorithmically constant-time (for same L), even when 1 point + scalar, or when scalar = 0.\n * @param c Curve Point constructor\n * @param fieldN field over CURVE.N - important that it's not over CURVE.P\n * @param points array of L curve points\n * @param scalars array of L scalars (aka private keys / bigints)\n */\nexport function pippenger(c, fieldN, points, scalars) {\n // If we split scalars by some window (let's say 8 bits), every chunk will only\n // take 256 buckets even if there are 4096 scalars, also re-uses double.\n // TODO:\n // - https://eprint.iacr.org/2024/750.pdf\n // - https://tches.iacr.org/index.php/TCHES/article/view/10287\n // 0 is accepted in scalars\n validateMSMPoints(points, c);\n validateMSMScalars(scalars, fieldN);\n if (points.length !== scalars.length)\n throw new Error('arrays of points and scalars must have equal length');\n const zero = c.ZERO;\n const wbits = bitLen(BigInt(points.length));\n const windowSize = wbits > 12 ? wbits - 3 : wbits > 4 ? wbits - 2 : wbits ? 2 : 1; // in bits\n const MASK = (1 << windowSize) - 1;\n const buckets = new Array(MASK + 1).fill(zero); // +1 for zero array\n const lastBits = Math.floor((fieldN.BITS - 1) / windowSize) * windowSize;\n let sum = zero;\n for (let i = lastBits; i >= 0; i -= windowSize) {\n buckets.fill(zero);\n for (let j = 0; j < scalars.length; j++) {\n const scalar = scalars[j];\n const wbits = Number((scalar >> BigInt(i)) & BigInt(MASK));\n buckets[wbits] = buckets[wbits].add(points[j]);\n }\n let resI = zero; // not using this will do small speed-up, but will lose ct\n // Skip first bucket, because it is zero\n for (let j = buckets.length - 1, sumI = zero; j > 0; j--) {\n sumI = sumI.add(buckets[j]);\n resI = resI.add(sumI);\n }\n sum = sum.add(resI);\n if (i !== 0)\n for (let j = 0; j < windowSize; j++)\n sum = sum.double();\n }\n return sum;\n}\n/**\n * Precomputed multi-scalar multiplication (MSM, Pa + Qb + Rc + ...).\n * @param c Curve Point constructor\n * @param fieldN field over CURVE.N - important that it's not over CURVE.P\n * @param points array of L curve points\n * @returns function which multiplies points with scaars\n */\nexport function precomputeMSMUnsafe(c, fieldN, points, windowSize) {\n /**\n * Performance Analysis of Window-based Precomputation\n *\n * Base Case (256-bit scalar, 8-bit window):\n * - Standard precomputation requires:\n * - 31 additions per scalar × 256 scalars = 7,936 ops\n * - Plus 255 summary additions = 8,191 total ops\n * Note: Summary additions can be optimized via accumulator\n *\n * Chunked Precomputation Analysis:\n * - Using 32 chunks requires:\n * - 255 additions per chunk\n * - 256 doublings\n * - Total: (255 × 32) + 256 = 8,416 ops\n *\n * Memory Usage Comparison:\n * Window Size | Standard Points | Chunked Points\n * ------------|-----------------|---------------\n * 4-bit | 520 | 15\n * 8-bit | 4,224 | 255\n * 10-bit | 13,824 | 1,023\n * 16-bit | 557,056 | 65,535\n *\n * Key Advantages:\n * 1. Enables larger window sizes due to reduced memory overhead\n * 2. More efficient for smaller scalar counts:\n * - 16 chunks: (16 × 255) + 256 = 4,336 ops\n * - ~2x faster than standard 8,191 ops\n *\n * Limitations:\n * - Not suitable for plain precomputes (requires 256 constant doublings)\n * - Performance degrades with larger scalar counts:\n * - Optimal for ~256 scalars\n * - Less efficient for 4096+ scalars (Pippenger preferred)\n */\n validateW(windowSize, fieldN.BITS);\n validateMSMPoints(points, c);\n const zero = c.ZERO;\n const tableSize = 2 ** windowSize - 1; // table size (without zero)\n const chunks = Math.ceil(fieldN.BITS / windowSize); // chunks of item\n const MASK = BigInt((1 << windowSize) - 1);\n const tables = points.map((p) => {\n const res = [];\n for (let i = 0, acc = p; i < tableSize; i++) {\n res.push(acc);\n acc = acc.add(p);\n }\n return res;\n });\n return (scalars) => {\n validateMSMScalars(scalars, fieldN);\n if (scalars.length > points.length)\n throw new Error('array of scalars must be smaller than array of points');\n let res = zero;\n for (let i = 0; i < chunks; i++) {\n // No need to double if accumulator is still zero.\n if (res !== zero)\n for (let j = 0; j < windowSize; j++)\n res = res.double();\n const shiftBy = BigInt(chunks * windowSize - (i + 1) * windowSize);\n for (let j = 0; j < scalars.length; j++) {\n const n = scalars[j];\n const curr = Number((n >> shiftBy) & MASK);\n if (!curr)\n continue; // skip zero scalars chunks\n res = res.add(tables[j][curr - 1]);\n }\n }\n return res;\n };\n}\nexport function validateBasic(curve) {\n validateField(curve.Fp);\n validateObject(curve, {\n n: 'bigint',\n h: 'bigint',\n Gx: 'field',\n Gy: 'field',\n }, {\n nBitLength: 'isSafeInteger',\n nByteLength: 'isSafeInteger',\n });\n // Set defaults\n return Object.freeze({\n ...nLength(curve.n, curve.nBitLength),\n ...curve,\n ...{ p: curve.Fp.ORDER },\n });\n}\n//# sourceMappingURL=curve.js.map","/**\n * Short Weierstrass curve methods. The formula is: y² = x³ + ax + b.\n *\n * ### Design rationale for types\n *\n * * Interaction between classes from different curves should fail:\n * `k256.Point.BASE.add(p256.Point.BASE)`\n * * For this purpose we want to use `instanceof` operator, which is fast and works during runtime\n * * Different calls of `curve()` would return different classes -\n * `curve(params) !== curve(params)`: if somebody decided to monkey-patch their curve,\n * it won't affect others\n *\n * TypeScript can't infer types for classes created inside a function. Classes is one instance\n * of nominative types in TypeScript and interfaces only check for shape, so it's hard to create\n * unique type for every function call.\n *\n * We can use generic types via some param, like curve opts, but that would:\n * 1. Enable interaction between `curve(params)` and `curve(params)` (curves of same params)\n * which is hard to debug.\n * 2. Params can be generic and we can't enforce them to be constant value:\n * if somebody creates curve from non-constant params,\n * it would be allowed to interact with other curves with non-constant params\n *\n * @todo https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-7.html#unique-symbol\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { validateBasic, wNAF, pippenger, } from './curve.js';\nimport * as mod from './modular.js';\nimport * as ut from './utils.js';\nimport { ensureBytes, memoized, abool } from './utils.js';\nfunction validateSigVerOpts(opts) {\n if (opts.lowS !== undefined)\n abool('lowS', opts.lowS);\n if (opts.prehash !== undefined)\n abool('prehash', opts.prehash);\n}\nfunction validatePointOpts(curve) {\n const opts = validateBasic(curve);\n ut.validateObject(opts, {\n a: 'field',\n b: 'field',\n }, {\n allowedPrivateKeyLengths: 'array',\n wrapPrivateKey: 'boolean',\n isTorsionFree: 'function',\n clearCofactor: 'function',\n allowInfinityPoint: 'boolean',\n fromBytes: 'function',\n toBytes: 'function',\n });\n const { endo, Fp, a } = opts;\n if (endo) {\n if (!Fp.eql(a, Fp.ZERO)) {\n throw new Error('invalid endomorphism, can only be defined for Koblitz curves that have a=0');\n }\n if (typeof endo !== 'object' ||\n typeof endo.beta !== 'bigint' ||\n typeof endo.splitScalar !== 'function') {\n throw new Error('invalid endomorphism, expected beta: bigint and splitScalar: function');\n }\n }\n return Object.freeze({ ...opts });\n}\nconst { bytesToNumberBE: b2n, hexToBytes: h2b } = ut;\nexport class DERErr extends Error {\n constructor(m = '') {\n super(m);\n }\n}\n/**\n * ASN.1 DER encoding utilities. ASN is very complex & fragile. Format:\n *\n * [0x30 (SEQUENCE), bytelength, 0x02 (INTEGER), intLength, R, 0x02 (INTEGER), intLength, S]\n *\n * Docs: https://letsencrypt.org/docs/a-warm-welcome-to-asn1-and-der/, https://luca.ntop.org/Teaching/Appunti/asn1.html\n */\nexport const DER = {\n // asn.1 DER encoding utils\n Err: DERErr,\n // Basic building block is TLV (Tag-Length-Value)\n _tlv: {\n encode: (tag, data) => {\n const { Err: E } = DER;\n if (tag < 0 || tag > 256)\n throw new E('tlv.encode: wrong tag');\n if (data.length & 1)\n throw new E('tlv.encode: unpadded data');\n const dataLen = data.length / 2;\n const len = ut.numberToHexUnpadded(dataLen);\n if ((len.length / 2) & 128)\n throw new E('tlv.encode: long form length too big');\n // length of length with long form flag\n const lenLen = dataLen > 127 ? ut.numberToHexUnpadded((len.length / 2) | 128) : '';\n const t = ut.numberToHexUnpadded(tag);\n return t + lenLen + len + data;\n },\n // v - value, l - left bytes (unparsed)\n decode(tag, data) {\n const { Err: E } = DER;\n let pos = 0;\n if (tag < 0 || tag > 256)\n throw new E('tlv.encode: wrong tag');\n if (data.length < 2 || data[pos++] !== tag)\n throw new E('tlv.decode: wrong tlv');\n const first = data[pos++];\n const isLong = !!(first & 128); // First bit of first length byte is flag for short/long form\n let length = 0;\n if (!isLong)\n length = first;\n else {\n // Long form: [longFlag(1bit), lengthLength(7bit), length (BE)]\n const lenLen = first & 127;\n if (!lenLen)\n throw new E('tlv.decode(long): indefinite length not supported');\n if (lenLen > 4)\n throw new E('tlv.decode(long): byte length is too big'); // this will overflow u32 in js\n const lengthBytes = data.subarray(pos, pos + lenLen);\n if (lengthBytes.length !== lenLen)\n throw new E('tlv.decode: length bytes not complete');\n if (lengthBytes[0] === 0)\n throw new E('tlv.decode(long): zero leftmost byte');\n for (const b of lengthBytes)\n length = (length << 8) | b;\n pos += lenLen;\n if (length < 128)\n throw new E('tlv.decode(long): not minimal encoding');\n }\n const v = data.subarray(pos, pos + length);\n if (v.length !== length)\n throw new E('tlv.decode: wrong value length');\n return { v, l: data.subarray(pos + length) };\n },\n },\n // https://crypto.stackexchange.com/a/57734 Leftmost bit of first byte is 'negative' flag,\n // since we always use positive integers here. It must always be empty:\n // - add zero byte if exists\n // - if next byte doesn't have a flag, leading zero is not allowed (minimal encoding)\n _int: {\n encode(num) {\n const { Err: E } = DER;\n if (num < _0n)\n throw new E('integer: negative integers are not allowed');\n let hex = ut.numberToHexUnpadded(num);\n // Pad with zero byte if negative flag is present\n if (Number.parseInt(hex[0], 16) & 0b1000)\n hex = '00' + hex;\n if (hex.length & 1)\n throw new E('unexpected DER parsing assertion: unpadded hex');\n return hex;\n },\n decode(data) {\n const { Err: E } = DER;\n if (data[0] & 128)\n throw new E('invalid signature integer: negative');\n if (data[0] === 0x00 && !(data[1] & 128))\n throw new E('invalid signature integer: unnecessary leading zero');\n return b2n(data);\n },\n },\n toSig(hex) {\n // parse DER signature\n const { Err: E, _int: int, _tlv: tlv } = DER;\n const data = typeof hex === 'string' ? h2b(hex) : hex;\n ut.abytes(data);\n const { v: seqBytes, l: seqLeftBytes } = tlv.decode(0x30, data);\n if (seqLeftBytes.length)\n throw new E('invalid signature: left bytes after parsing');\n const { v: rBytes, l: rLeftBytes } = tlv.decode(0x02, seqBytes);\n const { v: sBytes, l: sLeftBytes } = tlv.decode(0x02, rLeftBytes);\n if (sLeftBytes.length)\n throw new E('invalid signature: left bytes after parsing');\n return { r: int.decode(rBytes), s: int.decode(sBytes) };\n },\n hexFromSig(sig) {\n const { _tlv: tlv, _int: int } = DER;\n const rs = tlv.encode(0x02, int.encode(sig.r));\n const ss = tlv.encode(0x02, int.encode(sig.s));\n const seq = rs + ss;\n return tlv.encode(0x30, seq);\n },\n};\n// Be friendly to bad ECMAScript parsers by not using bigint literals\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3), _4n = BigInt(4);\nexport function weierstrassPoints(opts) {\n const CURVE = validatePointOpts(opts);\n const { Fp } = CURVE; // All curves has same field / group length as for now, but they can differ\n const Fn = mod.Field(CURVE.n, CURVE.nBitLength);\n const toBytes = CURVE.toBytes ||\n ((_c, point, _isCompressed) => {\n const a = point.toAffine();\n return ut.concatBytes(Uint8Array.from([0x04]), Fp.toBytes(a.x), Fp.toBytes(a.y));\n });\n const fromBytes = CURVE.fromBytes ||\n ((bytes) => {\n // const head = bytes[0];\n const tail = bytes.subarray(1);\n // if (head !== 0x04) throw new Error('Only non-compressed encoding is supported');\n const x = Fp.fromBytes(tail.subarray(0, Fp.BYTES));\n const y = Fp.fromBytes(tail.subarray(Fp.BYTES, 2 * Fp.BYTES));\n return { x, y };\n });\n /**\n * y² = x³ + ax + b: Short weierstrass curve formula\n * @returns y²\n */\n function weierstrassEquation(x) {\n const { a, b } = CURVE;\n const x2 = Fp.sqr(x); // x * x\n const x3 = Fp.mul(x2, x); // x2 * x\n return Fp.add(Fp.add(x3, Fp.mul(x, a)), b); // x3 + a * x + b\n }\n // Validate whether the passed curve params are valid.\n // We check if curve equation works for generator point.\n // `assertValidity()` won't work: `isTorsionFree()` is not available at this point in bls12-381.\n // ProjectivePoint class has not been initialized yet.\n if (!Fp.eql(Fp.sqr(CURVE.Gy), weierstrassEquation(CURVE.Gx)))\n throw new Error('bad generator point: equation left != right');\n // Valid group elements reside in range 1..n-1\n function isWithinCurveOrder(num) {\n return ut.inRange(num, _1n, CURVE.n);\n }\n // Validates if priv key is valid and converts it to bigint.\n // Supports options allowedPrivateKeyLengths and wrapPrivateKey.\n function normPrivateKeyToScalar(key) {\n const { allowedPrivateKeyLengths: lengths, nByteLength, wrapPrivateKey, n: N } = CURVE;\n if (lengths && typeof key !== 'bigint') {\n if (ut.isBytes(key))\n key = ut.bytesToHex(key);\n // Normalize to hex string, pad. E.g. P521 would norm 130-132 char hex to 132-char bytes\n if (typeof key !== 'string' || !lengths.includes(key.length))\n throw new Error('invalid private key');\n key = key.padStart(nByteLength * 2, '0');\n }\n let num;\n try {\n num =\n typeof key === 'bigint'\n ? key\n : ut.bytesToNumberBE(ensureBytes('private key', key, nByteLength));\n }\n catch (error) {\n throw new Error('invalid private key, expected hex or ' + nByteLength + ' bytes, got ' + typeof key);\n }\n if (wrapPrivateKey)\n num = mod.mod(num, N); // disabled by default, enabled for BLS\n ut.aInRange('private key', num, _1n, N); // num in range [1..N-1]\n return num;\n }\n function assertPrjPoint(other) {\n if (!(other instanceof Point))\n throw new Error('ProjectivePoint expected');\n }\n // Memoized toAffine / validity check. They are heavy. Points are immutable.\n // Converts Projective point to affine (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n // (x, y, z) ∋ (x=x/z, y=y/z)\n const toAffineMemo = memoized((p, iz) => {\n const { px: x, py: y, pz: z } = p;\n // Fast-path for normalized points\n if (Fp.eql(z, Fp.ONE))\n return { x, y };\n const is0 = p.is0();\n // If invZ was 0, we return zero point. However we still want to execute\n // all operations, so we replace invZ with a random number, 1.\n if (iz == null)\n iz = is0 ? Fp.ONE : Fp.inv(z);\n const ax = Fp.mul(x, iz);\n const ay = Fp.mul(y, iz);\n const zz = Fp.mul(z, iz);\n if (is0)\n return { x: Fp.ZERO, y: Fp.ZERO };\n if (!Fp.eql(zz, Fp.ONE))\n throw new Error('invZ was invalid');\n return { x: ax, y: ay };\n });\n // NOTE: on exception this will crash 'cached' and no value will be set.\n // Otherwise true will be return\n const assertValidMemo = memoized((p) => {\n if (p.is0()) {\n // (0, 1, 0) aka ZERO is invalid in most contexts.\n // In BLS, ZERO can be serialized, so we allow it.\n // (0, 0, 0) is invalid representation of ZERO.\n if (CURVE.allowInfinityPoint && !Fp.is0(p.py))\n return;\n throw new Error('bad point: ZERO');\n }\n // Some 3rd-party test vectors require different wording between here & `fromCompressedHex`\n const { x, y } = p.toAffine();\n // Check if x, y are valid field elements\n if (!Fp.isValid(x) || !Fp.isValid(y))\n throw new Error('bad point: x or y not FE');\n const left = Fp.sqr(y); // y²\n const right = weierstrassEquation(x); // x³ + ax + b\n if (!Fp.eql(left, right))\n throw new Error('bad point: equation left != right');\n if (!p.isTorsionFree())\n throw new Error('bad point: not in prime-order subgroup');\n return true;\n });\n /**\n * Projective Point works in 3d / projective (homogeneous) coordinates: (x, y, z) ∋ (x=x/z, y=y/z)\n * Default Point works in 2d / affine coordinates: (x, y)\n * We're doing calculations in projective, because its operations don't require costly inversion.\n */\n class Point {\n constructor(px, py, pz) {\n this.px = px;\n this.py = py;\n this.pz = pz;\n if (px == null || !Fp.isValid(px))\n throw new Error('x required');\n if (py == null || !Fp.isValid(py))\n throw new Error('y required');\n if (pz == null || !Fp.isValid(pz))\n throw new Error('z required');\n Object.freeze(this);\n }\n // Does not validate if the point is on-curve.\n // Use fromHex instead, or call assertValidity() later.\n static fromAffine(p) {\n const { x, y } = p || {};\n if (!p || !Fp.isValid(x) || !Fp.isValid(y))\n throw new Error('invalid affine point');\n if (p instanceof Point)\n throw new Error('projective point not allowed');\n const is0 = (i) => Fp.eql(i, Fp.ZERO);\n // fromAffine(x:0, y:0) would produce (x:0, y:0, z:1), but we need (x:0, y:1, z:0)\n if (is0(x) && is0(y))\n return Point.ZERO;\n return new Point(x, y, Fp.ONE);\n }\n get x() {\n return this.toAffine().x;\n }\n get y() {\n return this.toAffine().y;\n }\n /**\n * Takes a bunch of Projective Points but executes only one\n * inversion on all of them. Inversion is very slow operation,\n * so this improves performance massively.\n * Optimization: converts a list of projective points to a list of identical points with Z=1.\n */\n static normalizeZ(points) {\n const toInv = Fp.invertBatch(points.map((p) => p.pz));\n return points.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);\n }\n /**\n * Converts hash string or Uint8Array to Point.\n * @param hex short/long ECDSA hex\n */\n static fromHex(hex) {\n const P = Point.fromAffine(fromBytes(ensureBytes('pointHex', hex)));\n P.assertValidity();\n return P;\n }\n // Multiplies generator point by privateKey.\n static fromPrivateKey(privateKey) {\n return Point.BASE.multiply(normPrivateKeyToScalar(privateKey));\n }\n // Multiscalar Multiplication\n static msm(points, scalars) {\n return pippenger(Point, Fn, points, scalars);\n }\n // \"Private method\", don't use it directly\n _setWindowSize(windowSize) {\n wnaf.setWindowSize(this, windowSize);\n }\n // A point on curve is valid if it conforms to equation.\n assertValidity() {\n assertValidMemo(this);\n }\n hasEvenY() {\n const { y } = this.toAffine();\n if (Fp.isOdd)\n return !Fp.isOdd(y);\n throw new Error(\"Field doesn't support isOdd\");\n }\n /**\n * Compare one point to another.\n */\n equals(other) {\n assertPrjPoint(other);\n const { px: X1, py: Y1, pz: Z1 } = this;\n const { px: X2, py: Y2, pz: Z2 } = other;\n const U1 = Fp.eql(Fp.mul(X1, Z2), Fp.mul(X2, Z1));\n const U2 = Fp.eql(Fp.mul(Y1, Z2), Fp.mul(Y2, Z1));\n return U1 && U2;\n }\n /**\n * Flips point to one corresponding to (x, -y) in Affine coordinates.\n */\n negate() {\n return new Point(this.px, Fp.neg(this.py), this.pz);\n }\n // Renes-Costello-Batina exception-free doubling formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 3\n // Cost: 8M + 3S + 3*a + 2*b3 + 15add.\n double() {\n const { a, b } = CURVE;\n const b3 = Fp.mul(b, _3n);\n const { px: X1, py: Y1, pz: Z1 } = this;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n let t0 = Fp.mul(X1, X1); // step 1\n let t1 = Fp.mul(Y1, Y1);\n let t2 = Fp.mul(Z1, Z1);\n let t3 = Fp.mul(X1, Y1);\n t3 = Fp.add(t3, t3); // step 5\n Z3 = Fp.mul(X1, Z1);\n Z3 = Fp.add(Z3, Z3);\n X3 = Fp.mul(a, Z3);\n Y3 = Fp.mul(b3, t2);\n Y3 = Fp.add(X3, Y3); // step 10\n X3 = Fp.sub(t1, Y3);\n Y3 = Fp.add(t1, Y3);\n Y3 = Fp.mul(X3, Y3);\n X3 = Fp.mul(t3, X3);\n Z3 = Fp.mul(b3, Z3); // step 15\n t2 = Fp.mul(a, t2);\n t3 = Fp.sub(t0, t2);\n t3 = Fp.mul(a, t3);\n t3 = Fp.add(t3, Z3);\n Z3 = Fp.add(t0, t0); // step 20\n t0 = Fp.add(Z3, t0);\n t0 = Fp.add(t0, t2);\n t0 = Fp.mul(t0, t3);\n Y3 = Fp.add(Y3, t0);\n t2 = Fp.mul(Y1, Z1); // step 25\n t2 = Fp.add(t2, t2);\n t0 = Fp.mul(t2, t3);\n X3 = Fp.sub(X3, t0);\n Z3 = Fp.mul(t2, t1);\n Z3 = Fp.add(Z3, Z3); // step 30\n Z3 = Fp.add(Z3, Z3);\n return new Point(X3, Y3, Z3);\n }\n // Renes-Costello-Batina exception-free addition formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 1\n // Cost: 12M + 0S + 3*a + 3*b3 + 23add.\n add(other) {\n assertPrjPoint(other);\n const { px: X1, py: Y1, pz: Z1 } = this;\n const { px: X2, py: Y2, pz: Z2 } = other;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n const a = CURVE.a;\n const b3 = Fp.mul(CURVE.b, _3n);\n let t0 = Fp.mul(X1, X2); // step 1\n let t1 = Fp.mul(Y1, Y2);\n let t2 = Fp.mul(Z1, Z2);\n let t3 = Fp.add(X1, Y1);\n let t4 = Fp.add(X2, Y2); // step 5\n t3 = Fp.mul(t3, t4);\n t4 = Fp.add(t0, t1);\n t3 = Fp.sub(t3, t4);\n t4 = Fp.add(X1, Z1);\n let t5 = Fp.add(X2, Z2); // step 10\n t4 = Fp.mul(t4, t5);\n t5 = Fp.add(t0, t2);\n t4 = Fp.sub(t4, t5);\n t5 = Fp.add(Y1, Z1);\n X3 = Fp.add(Y2, Z2); // step 15\n t5 = Fp.mul(t5, X3);\n X3 = Fp.add(t1, t2);\n t5 = Fp.sub(t5, X3);\n Z3 = Fp.mul(a, t4);\n X3 = Fp.mul(b3, t2); // step 20\n Z3 = Fp.add(X3, Z3);\n X3 = Fp.sub(t1, Z3);\n Z3 = Fp.add(t1, Z3);\n Y3 = Fp.mul(X3, Z3);\n t1 = Fp.add(t0, t0); // step 25\n t1 = Fp.add(t1, t0);\n t2 = Fp.mul(a, t2);\n t4 = Fp.mul(b3, t4);\n t1 = Fp.add(t1, t2);\n t2 = Fp.sub(t0, t2); // step 30\n t2 = Fp.mul(a, t2);\n t4 = Fp.add(t4, t2);\n t0 = Fp.mul(t1, t4);\n Y3 = Fp.add(Y3, t0);\n t0 = Fp.mul(t5, t4); // step 35\n X3 = Fp.mul(t3, X3);\n X3 = Fp.sub(X3, t0);\n t0 = Fp.mul(t3, t1);\n Z3 = Fp.mul(t5, Z3);\n Z3 = Fp.add(Z3, t0); // step 40\n return new Point(X3, Y3, Z3);\n }\n subtract(other) {\n return this.add(other.negate());\n }\n is0() {\n return this.equals(Point.ZERO);\n }\n wNAF(n) {\n return wnaf.wNAFCached(this, n, Point.normalizeZ);\n }\n /**\n * Non-constant-time multiplication. Uses double-and-add algorithm.\n * It's faster, but should only be used when you don't care about\n * an exposed private key e.g. sig verification, which works over *public* keys.\n */\n multiplyUnsafe(sc) {\n const { endo, n: N } = CURVE;\n ut.aInRange('scalar', sc, _0n, N);\n const I = Point.ZERO;\n if (sc === _0n)\n return I;\n if (this.is0() || sc === _1n)\n return this;\n // Case a: no endomorphism. Case b: has precomputes.\n if (!endo || wnaf.hasPrecomputes(this))\n return wnaf.wNAFCachedUnsafe(this, sc, Point.normalizeZ);\n // Case c: endomorphism\n let { k1neg, k1, k2neg, k2 } = endo.splitScalar(sc);\n let k1p = I;\n let k2p = I;\n let d = this;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n)\n k1p = k1p.add(d);\n if (k2 & _1n)\n k2p = k2p.add(d);\n d = d.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n return k1p.add(k2p);\n }\n /**\n * Constant time multiplication.\n * Uses wNAF method. Windowed method may be 10% faster,\n * but takes 2x longer to generate and consumes 2x memory.\n * Uses precomputes when available.\n * Uses endomorphism for Koblitz curves.\n * @param scalar by which the point would be multiplied\n * @returns New point\n */\n multiply(scalar) {\n const { endo, n: N } = CURVE;\n ut.aInRange('scalar', scalar, _1n, N);\n let point, fake; // Fake point is used to const-time mult\n if (endo) {\n const { k1neg, k1, k2neg, k2 } = endo.splitScalar(scalar);\n let { p: k1p, f: f1p } = this.wNAF(k1);\n let { p: k2p, f: f2p } = this.wNAF(k2);\n k1p = wnaf.constTimeNegate(k1neg, k1p);\n k2p = wnaf.constTimeNegate(k2neg, k2p);\n k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n point = k1p.add(k2p);\n fake = f1p.add(f2p);\n }\n else {\n const { p, f } = this.wNAF(scalar);\n point = p;\n fake = f;\n }\n // Normalize `z` for both points, but return only real one\n return Point.normalizeZ([point, fake])[0];\n }\n /**\n * Efficiently calculate `aP + bQ`. Unsafe, can expose private key, if used incorrectly.\n * Not using Strauss-Shamir trick: precomputation tables are faster.\n * The trick could be useful if both P and Q are not G (not in our case).\n * @returns non-zero affine point\n */\n multiplyAndAddUnsafe(Q, a, b) {\n const G = Point.BASE; // No Strauss-Shamir trick: we have 10% faster G precomputes\n const mul = (P, a // Select faster multiply() method\n ) => (a === _0n || a === _1n || !P.equals(G) ? P.multiplyUnsafe(a) : P.multiply(a));\n const sum = mul(this, a).add(mul(Q, b));\n return sum.is0() ? undefined : sum;\n }\n // Converts Projective point to affine (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n // (x, y, z) ∋ (x=x/z, y=y/z)\n toAffine(iz) {\n return toAffineMemo(this, iz);\n }\n isTorsionFree() {\n const { h: cofactor, isTorsionFree } = CURVE;\n if (cofactor === _1n)\n return true; // No subgroups, always torsion-free\n if (isTorsionFree)\n return isTorsionFree(Point, this);\n throw new Error('isTorsionFree() has not been declared for the elliptic curve');\n }\n clearCofactor() {\n const { h: cofactor, clearCofactor } = CURVE;\n if (cofactor === _1n)\n return this; // Fast-path\n if (clearCofactor)\n return clearCofactor(Point, this);\n return this.multiplyUnsafe(CURVE.h);\n }\n toRawBytes(isCompressed = true) {\n abool('isCompressed', isCompressed);\n this.assertValidity();\n return toBytes(Point, this, isCompressed);\n }\n toHex(isCompressed = true) {\n abool('isCompressed', isCompressed);\n return ut.bytesToHex(this.toRawBytes(isCompressed));\n }\n }\n Point.BASE = new Point(CURVE.Gx, CURVE.Gy, Fp.ONE);\n Point.ZERO = new Point(Fp.ZERO, Fp.ONE, Fp.ZERO);\n const _bits = CURVE.nBitLength;\n const wnaf = wNAF(Point, CURVE.endo ? Math.ceil(_bits / 2) : _bits);\n // Validate if generator point is on curve\n return {\n CURVE,\n ProjectivePoint: Point,\n normPrivateKeyToScalar,\n weierstrassEquation,\n isWithinCurveOrder,\n };\n}\nfunction validateOpts(curve) {\n const opts = validateBasic(curve);\n ut.validateObject(opts, {\n hash: 'hash',\n hmac: 'function',\n randomBytes: 'function',\n }, {\n bits2int: 'function',\n bits2int_modN: 'function',\n lowS: 'boolean',\n });\n return Object.freeze({ lowS: true, ...opts });\n}\n/**\n * Creates short weierstrass curve and ECDSA signature methods for it.\n * @example\n * import { Field } from '@noble/curves/abstract/modular';\n * // Before that, define BigInt-s: a, b, p, n, Gx, Gy\n * const curve = weierstrass({ a, b, Fp: Field(p), n, Gx, Gy, h: 1n })\n */\nexport function weierstrass(curveDef) {\n const CURVE = validateOpts(curveDef);\n const { Fp, n: CURVE_ORDER } = CURVE;\n const compressedLen = Fp.BYTES + 1; // e.g. 33 for 32\n const uncompressedLen = 2 * Fp.BYTES + 1; // e.g. 65 for 32\n function modN(a) {\n return mod.mod(a, CURVE_ORDER);\n }\n function invN(a) {\n return mod.invert(a, CURVE_ORDER);\n }\n const { ProjectivePoint: Point, normPrivateKeyToScalar, weierstrassEquation, isWithinCurveOrder, } = weierstrassPoints({\n ...CURVE,\n toBytes(_c, point, isCompressed) {\n const a = point.toAffine();\n const x = Fp.toBytes(a.x);\n const cat = ut.concatBytes;\n abool('isCompressed', isCompressed);\n if (isCompressed) {\n return cat(Uint8Array.from([point.hasEvenY() ? 0x02 : 0x03]), x);\n }\n else {\n return cat(Uint8Array.from([0x04]), x, Fp.toBytes(a.y));\n }\n },\n fromBytes(bytes) {\n const len = bytes.length;\n const head = bytes[0];\n const tail = bytes.subarray(1);\n // this.assertValidity() is done inside of fromHex\n if (len === compressedLen && (head === 0x02 || head === 0x03)) {\n const x = ut.bytesToNumberBE(tail);\n if (!ut.inRange(x, _1n, Fp.ORDER))\n throw new Error('Point is not on curve');\n const y2 = weierstrassEquation(x); // y² = x³ + ax + b\n let y;\n try {\n y = Fp.sqrt(y2); // y = y² ^ (p+1)/4\n }\n catch (sqrtError) {\n const suffix = sqrtError instanceof Error ? ': ' + sqrtError.message : '';\n throw new Error('Point is not on curve' + suffix);\n }\n const isYOdd = (y & _1n) === _1n;\n // ECDSA\n const isHeadOdd = (head & 1) === 1;\n if (isHeadOdd !== isYOdd)\n y = Fp.neg(y);\n return { x, y };\n }\n else if (len === uncompressedLen && head === 0x04) {\n const x = Fp.fromBytes(tail.subarray(0, Fp.BYTES));\n const y = Fp.fromBytes(tail.subarray(Fp.BYTES, 2 * Fp.BYTES));\n return { x, y };\n }\n else {\n const cl = compressedLen;\n const ul = uncompressedLen;\n throw new Error('invalid Point, expected length of ' + cl + ', or uncompressed ' + ul + ', got ' + len);\n }\n },\n });\n const numToNByteStr = (num) => ut.bytesToHex(ut.numberToBytesBE(num, CURVE.nByteLength));\n function isBiggerThanHalfOrder(number) {\n const HALF = CURVE_ORDER >> _1n;\n return number > HALF;\n }\n function normalizeS(s) {\n return isBiggerThanHalfOrder(s) ? modN(-s) : s;\n }\n // slice bytes num\n const slcNum = (b, from, to) => ut.bytesToNumberBE(b.slice(from, to));\n /**\n * ECDSA signature with its (r, s) properties. Supports DER & compact representations.\n */\n class Signature {\n constructor(r, s, recovery) {\n this.r = r;\n this.s = s;\n this.recovery = recovery;\n this.assertValidity();\n }\n // pair (bytes of r, bytes of s)\n static fromCompact(hex) {\n const l = CURVE.nByteLength;\n hex = ensureBytes('compactSignature', hex, l * 2);\n return new Signature(slcNum(hex, 0, l), slcNum(hex, l, 2 * l));\n }\n // DER encoded ECDSA signature\n // https://bitcoin.stackexchange.com/questions/57644/what-are-the-parts-of-a-bitcoin-transaction-input-script\n static fromDER(hex) {\n const { r, s } = DER.toSig(ensureBytes('DER', hex));\n return new Signature(r, s);\n }\n assertValidity() {\n ut.aInRange('r', this.r, _1n, CURVE_ORDER); // r in [1..N]\n ut.aInRange('s', this.s, _1n, CURVE_ORDER); // s in [1..N]\n }\n addRecoveryBit(recovery) {\n return new Signature(this.r, this.s, recovery);\n }\n recoverPublicKey(msgHash) {\n const { r, s, recovery: rec } = this;\n const h = bits2int_modN(ensureBytes('msgHash', msgHash)); // Truncate hash\n if (rec == null || ![0, 1, 2, 3].includes(rec))\n throw new Error('recovery id invalid');\n const radj = rec === 2 || rec === 3 ? r + CURVE.n : r;\n if (radj >= Fp.ORDER)\n throw new Error('recovery id 2 or 3 invalid');\n const prefix = (rec & 1) === 0 ? '02' : '03';\n const R = Point.fromHex(prefix + numToNByteStr(radj));\n const ir = invN(radj); // r^-1\n const u1 = modN(-h * ir); // -hr^-1\n const u2 = modN(s * ir); // sr^-1\n const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2); // (sr^-1)R-(hr^-1)G = -(hr^-1)G + (sr^-1)\n if (!Q)\n throw new Error('point at infinify'); // unsafe is fine: no priv data leaked\n Q.assertValidity();\n return Q;\n }\n // Signatures should be low-s, to prevent malleability.\n hasHighS() {\n return isBiggerThanHalfOrder(this.s);\n }\n normalizeS() {\n return this.hasHighS() ? new Signature(this.r, modN(-this.s), this.recovery) : this;\n }\n // DER-encoded\n toDERRawBytes() {\n return ut.hexToBytes(this.toDERHex());\n }\n toDERHex() {\n return DER.hexFromSig({ r: this.r, s: this.s });\n }\n // padded bytes of r, then padded bytes of s\n toCompactRawBytes() {\n return ut.hexToBytes(this.toCompactHex());\n }\n toCompactHex() {\n return numToNByteStr(this.r) + numToNByteStr(this.s);\n }\n }\n const utils = {\n isValidPrivateKey(privateKey) {\n try {\n normPrivateKeyToScalar(privateKey);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n normPrivateKeyToScalar: normPrivateKeyToScalar,\n /**\n * Produces cryptographically secure private key from random of size\n * (groupLen + ceil(groupLen / 2)) with modulo bias being negligible.\n */\n randomPrivateKey: () => {\n const length = mod.getMinHashLength(CURVE.n);\n return mod.mapHashToField(CURVE.randomBytes(length), CURVE.n);\n },\n /**\n * Creates precompute table for an arbitrary EC point. Makes point \"cached\".\n * Allows to massively speed-up `point.multiply(scalar)`.\n * @returns cached point\n * @example\n * const fast = utils.precompute(8, ProjectivePoint.fromHex(someonesPubKey));\n * fast.multiply(privKey); // much faster ECDH now\n */\n precompute(windowSize = 8, point = Point.BASE) {\n point._setWindowSize(windowSize);\n point.multiply(BigInt(3)); // 3 is arbitrary, just need any number here\n return point;\n },\n };\n /**\n * Computes public key for a private key. Checks for validity of the private key.\n * @param privateKey private key\n * @param isCompressed whether to return compact (default), or full key\n * @returns Public key, full when isCompressed=false; short when isCompressed=true\n */\n function getPublicKey(privateKey, isCompressed = true) {\n return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n }\n /**\n * Quick and dirty check for item being public key. Does not validate hex, or being on-curve.\n */\n function isProbPub(item) {\n const arr = ut.isBytes(item);\n const str = typeof item === 'string';\n const len = (arr || str) && item.length;\n if (arr)\n return len === compressedLen || len === uncompressedLen;\n if (str)\n return len === 2 * compressedLen || len === 2 * uncompressedLen;\n if (item instanceof Point)\n return true;\n return false;\n }\n /**\n * ECDH (Elliptic Curve Diffie Hellman).\n * Computes shared public key from private key and public key.\n * Checks: 1) private key validity 2) shared key is on-curve.\n * Does NOT hash the result.\n * @param privateA private key\n * @param publicB different public key\n * @param isCompressed whether to return compact (default), or full key\n * @returns shared public key\n */\n function getSharedSecret(privateA, publicB, isCompressed = true) {\n if (isProbPub(privateA))\n throw new Error('first arg must be private key');\n if (!isProbPub(publicB))\n throw new Error('second arg must be public key');\n const b = Point.fromHex(publicB); // check for being on-curve\n return b.multiply(normPrivateKeyToScalar(privateA)).toRawBytes(isCompressed);\n }\n // RFC6979: ensure ECDSA msg is X bytes and < N. RFC suggests optional truncating via bits2octets.\n // FIPS 186-4 4.6 suggests the leftmost min(nBitLen, outLen) bits, which matches bits2int.\n // bits2int can produce res>N, we can do mod(res, N) since the bitLen is the same.\n // int2octets can't be used; pads small msgs with 0: unacceptatble for trunc as per RFC vectors\n const bits2int = CURVE.bits2int ||\n function (bytes) {\n // Our custom check \"just in case\"\n if (bytes.length > 8192)\n throw new Error('input is too large');\n // For curves with nBitLength % 8 !== 0: bits2octets(bits2octets(m)) !== bits2octets(m)\n // for some cases, since bytes.length * 8 is not actual bitLength.\n const num = ut.bytesToNumberBE(bytes); // check for == u8 done here\n const delta = bytes.length * 8 - CURVE.nBitLength; // truncate to nBitLength leftmost bits\n return delta > 0 ? num >> BigInt(delta) : num;\n };\n const bits2int_modN = CURVE.bits2int_modN ||\n function (bytes) {\n return modN(bits2int(bytes)); // can't use bytesToNumberBE here\n };\n // NOTE: pads output with zero as per spec\n const ORDER_MASK = ut.bitMask(CURVE.nBitLength);\n /**\n * Converts to bytes. Checks if num in `[0..ORDER_MASK-1]` e.g.: `[0..2^256-1]`.\n */\n function int2octets(num) {\n ut.aInRange('num < 2^' + CURVE.nBitLength, num, _0n, ORDER_MASK);\n // works with order, can have different size than numToField!\n return ut.numberToBytesBE(num, CURVE.nByteLength);\n }\n // Steps A, D of RFC6979 3.2\n // Creates RFC6979 seed; converts msg/privKey to numbers.\n // Used only in sign, not in verify.\n // NOTE: we cannot assume here that msgHash has same amount of bytes as curve order,\n // this will be invalid at least for P521. Also it can be bigger for P224 + SHA256\n function prepSig(msgHash, privateKey, opts = defaultSigOpts) {\n if (['recovered', 'canonical'].some((k) => k in opts))\n throw new Error('sign() legacy options not supported');\n const { hash, randomBytes } = CURVE;\n let { lowS, prehash, extraEntropy: ent } = opts; // generates low-s sigs by default\n if (lowS == null)\n lowS = true; // RFC6979 3.2: we skip step A, because we already provide hash\n msgHash = ensureBytes('msgHash', msgHash);\n validateSigVerOpts(opts);\n if (prehash)\n msgHash = ensureBytes('prehashed msgHash', hash(msgHash));\n // We can't later call bits2octets, since nested bits2int is broken for curves\n // with nBitLength % 8 !== 0. Because of that, we unwrap it here as int2octets call.\n // const bits2octets = (bits) => int2octets(bits2int_modN(bits))\n const h1int = bits2int_modN(msgHash);\n const d = normPrivateKeyToScalar(privateKey); // validate private key, convert to bigint\n const seedArgs = [int2octets(d), int2octets(h1int)];\n // extraEntropy. RFC6979 3.6: additional k' (optional).\n if (ent != null && ent !== false) {\n // K = HMAC_K(V || 0x00 || int2octets(x) || bits2octets(h1) || k')\n const e = ent === true ? randomBytes(Fp.BYTES) : ent; // generate random bytes OR pass as-is\n seedArgs.push(ensureBytes('extraEntropy', e)); // check for being bytes\n }\n const seed = ut.concatBytes(...seedArgs); // Step D of RFC6979 3.2\n const m = h1int; // NOTE: no need to call bits2int second time here, it is inside truncateHash!\n // Converts signature params into point w r/s, checks result for validity.\n function k2sig(kBytes) {\n // RFC 6979 Section 3.2, step 3: k = bits2int(T)\n const k = bits2int(kBytes); // Cannot use fields methods, since it is group element\n if (!isWithinCurveOrder(k))\n return; // Important: all mod() calls here must be done over N\n const ik = invN(k); // k^-1 mod n\n const q = Point.BASE.multiply(k).toAffine(); // q = Gk\n const r = modN(q.x); // r = q.x mod n\n if (r === _0n)\n return;\n // Can use scalar blinding b^-1(bm + bdr) where b ∈ [1,q−1] according to\n // https://tches.iacr.org/index.php/TCHES/article/view/7337/6509. We've decided against it:\n // a) dependency on CSPRNG b) 15% slowdown c) doesn't really help since bigints are not CT\n const s = modN(ik * modN(m + r * d)); // Not using blinding here\n if (s === _0n)\n return;\n let recovery = (q.x === r ? 0 : 2) | Number(q.y & _1n); // recovery bit (2 or 3, when q.x > n)\n let normS = s;\n if (lowS && isBiggerThanHalfOrder(s)) {\n normS = normalizeS(s); // if lowS was passed, ensure s is always\n recovery ^= 1; // // in the bottom half of N\n }\n return new Signature(r, normS, recovery); // use normS, not s\n }\n return { seed, k2sig };\n }\n const defaultSigOpts = { lowS: CURVE.lowS, prehash: false };\n const defaultVerOpts = { lowS: CURVE.lowS, prehash: false };\n /**\n * Signs message hash with a private key.\n * ```\n * sign(m, d, k) where\n * (x, y) = G × k\n * r = x mod n\n * s = (m + dr)/k mod n\n * ```\n * @param msgHash NOT message. msg needs to be hashed to `msgHash`, or use `prehash`.\n * @param privKey private key\n * @param opts lowS for non-malleable sigs. extraEntropy for mixing randomness into k. prehash will hash first arg.\n * @returns signature with recovery param\n */\n function sign(msgHash, privKey, opts = defaultSigOpts) {\n const { seed, k2sig } = prepSig(msgHash, privKey, opts); // Steps A, D of RFC6979 3.2.\n const C = CURVE;\n const drbg = ut.createHmacDrbg(C.hash.outputLen, C.nByteLength, C.hmac);\n return drbg(seed, k2sig); // Steps B, C, D, E, F, G\n }\n // Enable precomputes. Slows down first publicKey computation by 20ms.\n Point.BASE._setWindowSize(8);\n // utils.precompute(8, ProjectivePoint.BASE)\n /**\n * Verifies a signature against message hash and public key.\n * Rejects lowS signatures by default: to override,\n * specify option `{lowS: false}`. Implements section 4.1.4 from https://www.secg.org/sec1-v2.pdf:\n *\n * ```\n * verify(r, s, h, P) where\n * U1 = hs^-1 mod n\n * U2 = rs^-1 mod n\n * R = U1⋅G - U2⋅P\n * mod(R.x, n) == r\n * ```\n */\n function verify(signature, msgHash, publicKey, opts = defaultVerOpts) {\n const sg = signature;\n msgHash = ensureBytes('msgHash', msgHash);\n publicKey = ensureBytes('publicKey', publicKey);\n const { lowS, prehash, format } = opts;\n // Verify opts, deduce signature format\n validateSigVerOpts(opts);\n if ('strict' in opts)\n throw new Error('options.strict was renamed to lowS');\n if (format !== undefined && format !== 'compact' && format !== 'der')\n throw new Error('format must be compact or der');\n const isHex = typeof sg === 'string' || ut.isBytes(sg);\n const isObj = !isHex &&\n !format &&\n typeof sg === 'object' &&\n sg !== null &&\n typeof sg.r === 'bigint' &&\n typeof sg.s === 'bigint';\n if (!isHex && !isObj)\n throw new Error('invalid signature, expected Uint8Array, hex string or Signature instance');\n let _sig = undefined;\n let P;\n try {\n if (isObj)\n _sig = new Signature(sg.r, sg.s);\n if (isHex) {\n // Signature can be represented in 2 ways: compact (2*nByteLength) & DER (variable-length).\n // Since DER can also be 2*nByteLength bytes, we check for it first.\n try {\n if (format !== 'compact')\n _sig = Signature.fromDER(sg);\n }\n catch (derError) {\n if (!(derError instanceof DER.Err))\n throw derError;\n }\n if (!_sig && format !== 'der')\n _sig = Signature.fromCompact(sg);\n }\n P = Point.fromHex(publicKey);\n }\n catch (error) {\n return false;\n }\n if (!_sig)\n return false;\n if (lowS && _sig.hasHighS())\n return false;\n if (prehash)\n msgHash = CURVE.hash(msgHash);\n const { r, s } = _sig;\n const h = bits2int_modN(msgHash); // Cannot use fields methods, since it is group element\n const is = invN(s); // s^-1\n const u1 = modN(h * is); // u1 = hs^-1 mod n\n const u2 = modN(r * is); // u2 = rs^-1 mod n\n const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2)?.toAffine(); // R = u1⋅G + u2⋅P\n if (!R)\n return false;\n const v = modN(R.x);\n return v === r;\n }\n return {\n CURVE,\n getPublicKey,\n getSharedSecret,\n sign,\n verify,\n ProjectivePoint: Point,\n Signature,\n utils,\n };\n}\n/**\n * Implementation of the Shallue and van de Woestijne method for any weierstrass curve.\n * TODO: check if there is a way to merge this with uvRatio in Edwards; move to modular.\n * b = True and y = sqrt(u / v) if (u / v) is square in F, and\n * b = False and y = sqrt(Z * (u / v)) otherwise.\n * @param Fp\n * @param Z\n * @returns\n */\nexport function SWUFpSqrtRatio(Fp, Z) {\n // Generic implementation\n const q = Fp.ORDER;\n let l = _0n;\n for (let o = q - _1n; o % _2n === _0n; o /= _2n)\n l += _1n;\n const c1 = l; // 1. c1, the largest integer such that 2^c1 divides q - 1.\n // We need 2n ** c1 and 2n ** (c1-1). We can't use **; but we can use <<.\n // 2n ** c1 == 2n << (c1-1)\n const _2n_pow_c1_1 = _2n << (c1 - _1n - _1n);\n const _2n_pow_c1 = _2n_pow_c1_1 * _2n;\n const c2 = (q - _1n) / _2n_pow_c1; // 2. c2 = (q - 1) / (2^c1) # Integer arithmetic\n const c3 = (c2 - _1n) / _2n; // 3. c3 = (c2 - 1) / 2 # Integer arithmetic\n const c4 = _2n_pow_c1 - _1n; // 4. c4 = 2^c1 - 1 # Integer arithmetic\n const c5 = _2n_pow_c1_1; // 5. c5 = 2^(c1 - 1) # Integer arithmetic\n const c6 = Fp.pow(Z, c2); // 6. c6 = Z^c2\n const c7 = Fp.pow(Z, (c2 + _1n) / _2n); // 7. c7 = Z^((c2 + 1) / 2)\n let sqrtRatio = (u, v) => {\n let tv1 = c6; // 1. tv1 = c6\n let tv2 = Fp.pow(v, c4); // 2. tv2 = v^c4\n let tv3 = Fp.sqr(tv2); // 3. tv3 = tv2^2\n tv3 = Fp.mul(tv3, v); // 4. tv3 = tv3 * v\n let tv5 = Fp.mul(u, tv3); // 5. tv5 = u * tv3\n tv5 = Fp.pow(tv5, c3); // 6. tv5 = tv5^c3\n tv5 = Fp.mul(tv5, tv2); // 7. tv5 = tv5 * tv2\n tv2 = Fp.mul(tv5, v); // 8. tv2 = tv5 * v\n tv3 = Fp.mul(tv5, u); // 9. tv3 = tv5 * u\n let tv4 = Fp.mul(tv3, tv2); // 10. tv4 = tv3 * tv2\n tv5 = Fp.pow(tv4, c5); // 11. tv5 = tv4^c5\n let isQR = Fp.eql(tv5, Fp.ONE); // 12. isQR = tv5 == 1\n tv2 = Fp.mul(tv3, c7); // 13. tv2 = tv3 * c7\n tv5 = Fp.mul(tv4, tv1); // 14. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, isQR); // 15. tv3 = CMOV(tv2, tv3, isQR)\n tv4 = Fp.cmov(tv5, tv4, isQR); // 16. tv4 = CMOV(tv5, tv4, isQR)\n // 17. for i in (c1, c1 - 1, ..., 2):\n for (let i = c1; i > _1n; i--) {\n let tv5 = i - _2n; // 18. tv5 = i - 2\n tv5 = _2n << (tv5 - _1n); // 19. tv5 = 2^tv5\n let tvv5 = Fp.pow(tv4, tv5); // 20. tv5 = tv4^tv5\n const e1 = Fp.eql(tvv5, Fp.ONE); // 21. e1 = tv5 == 1\n tv2 = Fp.mul(tv3, tv1); // 22. tv2 = tv3 * tv1\n tv1 = Fp.mul(tv1, tv1); // 23. tv1 = tv1 * tv1\n tvv5 = Fp.mul(tv4, tv1); // 24. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, e1); // 25. tv3 = CMOV(tv2, tv3, e1)\n tv4 = Fp.cmov(tvv5, tv4, e1); // 26. tv4 = CMOV(tv5, tv4, e1)\n }\n return { isValid: isQR, value: tv3 };\n };\n if (Fp.ORDER % _4n === _3n) {\n // sqrt_ratio_3mod4(u, v)\n const c1 = (Fp.ORDER - _3n) / _4n; // 1. c1 = (q - 3) / 4 # Integer arithmetic\n const c2 = Fp.sqrt(Fp.neg(Z)); // 2. c2 = sqrt(-Z)\n sqrtRatio = (u, v) => {\n let tv1 = Fp.sqr(v); // 1. tv1 = v^2\n const tv2 = Fp.mul(u, v); // 2. tv2 = u * v\n tv1 = Fp.mul(tv1, tv2); // 3. tv1 = tv1 * tv2\n let y1 = Fp.pow(tv1, c1); // 4. y1 = tv1^c1\n y1 = Fp.mul(y1, tv2); // 5. y1 = y1 * tv2\n const y2 = Fp.mul(y1, c2); // 6. y2 = y1 * c2\n const tv3 = Fp.mul(Fp.sqr(y1), v); // 7. tv3 = y1^2; 8. tv3 = tv3 * v\n const isQR = Fp.eql(tv3, u); // 9. isQR = tv3 == u\n let y = Fp.cmov(y2, y1, isQR); // 10. y = CMOV(y2, y1, isQR)\n return { isValid: isQR, value: y }; // 11. return (isQR, y) isQR ? y : y*c2\n };\n }\n // No curves uses that\n // if (Fp.ORDER % _8n === _5n) // sqrt_ratio_5mod8\n return sqrtRatio;\n}\n/**\n * Simplified Shallue-van de Woestijne-Ulas Method\n * https://www.rfc-editor.org/rfc/rfc9380#section-6.6.2\n */\nexport function mapToCurveSimpleSWU(Fp, opts) {\n mod.validateField(Fp);\n if (!Fp.isValid(opts.A) || !Fp.isValid(opts.B) || !Fp.isValid(opts.Z))\n throw new Error('mapToCurveSimpleSWU: invalid opts');\n const sqrtRatio = SWUFpSqrtRatio(Fp, opts.Z);\n if (!Fp.isOdd)\n throw new Error('Fp.isOdd is not implemented!');\n // Input: u, an element of F.\n // Output: (x, y), a point on E.\n return (u) => {\n // prettier-ignore\n let tv1, tv2, tv3, tv4, tv5, tv6, x, y;\n tv1 = Fp.sqr(u); // 1. tv1 = u^2\n tv1 = Fp.mul(tv1, opts.Z); // 2. tv1 = Z * tv1\n tv2 = Fp.sqr(tv1); // 3. tv2 = tv1^2\n tv2 = Fp.add(tv2, tv1); // 4. tv2 = tv2 + tv1\n tv3 = Fp.add(tv2, Fp.ONE); // 5. tv3 = tv2 + 1\n tv3 = Fp.mul(tv3, opts.B); // 6. tv3 = B * tv3\n tv4 = Fp.cmov(opts.Z, Fp.neg(tv2), !Fp.eql(tv2, Fp.ZERO)); // 7. tv4 = CMOV(Z, -tv2, tv2 != 0)\n tv4 = Fp.mul(tv4, opts.A); // 8. tv4 = A * tv4\n tv2 = Fp.sqr(tv3); // 9. tv2 = tv3^2\n tv6 = Fp.sqr(tv4); // 10. tv6 = tv4^2\n tv5 = Fp.mul(tv6, opts.A); // 11. tv5 = A * tv6\n tv2 = Fp.add(tv2, tv5); // 12. tv2 = tv2 + tv5\n tv2 = Fp.mul(tv2, tv3); // 13. tv2 = tv2 * tv3\n tv6 = Fp.mul(tv6, tv4); // 14. tv6 = tv6 * tv4\n tv5 = Fp.mul(tv6, opts.B); // 15. tv5 = B * tv6\n tv2 = Fp.add(tv2, tv5); // 16. tv2 = tv2 + tv5\n x = Fp.mul(tv1, tv3); // 17. x = tv1 * tv3\n const { isValid, value } = sqrtRatio(tv2, tv6); // 18. (is_gx1_square, y1) = sqrt_ratio(tv2, tv6)\n y = Fp.mul(tv1, u); // 19. y = tv1 * u -> Z * u^3 * y1\n y = Fp.mul(y, value); // 20. y = y * y1\n x = Fp.cmov(x, tv3, isValid); // 21. x = CMOV(x, tv3, is_gx1_square)\n y = Fp.cmov(y, value, isValid); // 22. y = CMOV(y, y1, is_gx1_square)\n const e1 = Fp.isOdd(u) === Fp.isOdd(y); // 23. e1 = sgn0(u) == sgn0(y)\n y = Fp.cmov(Fp.neg(y), y, e1); // 24. y = CMOV(-y, y, e1)\n x = Fp.div(x, tv4); // 25. x = x / tv4\n return { x, y };\n };\n}\n//# sourceMappingURL=weierstrass.js.map","/**\n * BLS (Barreto-Lynn-Scott) family of pairing-friendly curves.\n * BLS != BLS.\n * The file implements BLS (Boneh-Lynn-Shacham) signatures.\n * Used in both BLS (Barreto-Lynn-Scott) and BN (Barreto-Naehrig)\n * families of pairing-friendly curves.\n * Consists of two curves: G1 and G2:\n * - G1 is a subgroup of (x, y) E(Fq) over y² = x³ + 4.\n * - G2 is a subgroup of ((x₁, x₂+i), (y₁, y₂+i)) E(Fq²) over y² = x³ + 4(1 + i) where i is √-1\n * - Gt, created by bilinear (ate) pairing e(G1, G2), consists of p-th roots of unity in\n * Fq^k where k is embedding degree. Only degree 12 is currently supported, 24 is not.\n * Pairing is used to aggregate and verify signatures.\n * There are two main ways to use it:\n * 1. Fp for short private keys, Fp₂ for signatures\n * 2. Fp for short signatures, Fp₂ for private keys\n * @module\n **/\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// TODO: import { AffinePoint } from './curve.js';\nimport { getMinHashLength, mapHashToField } from './modular.js';\nimport { ensureBytes, memoized } from './utils.js';\n// prettier-ignore\nimport { createHasher } from './hash-to-curve.js';\nimport { weierstrassPoints, } from './weierstrass.js';\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3);\n// Not used with BLS12-381 (no sequential `11` in X). Useful for other curves.\nfunction NAfDecomposition(a) {\n const res = [];\n // a>1 because of marker bit\n for (; a > _1n; a >>= _1n) {\n if ((a & _1n) === _0n)\n res.unshift(0);\n else if ((a & _3n) === _3n) {\n res.unshift(-1);\n a += _1n;\n }\n else\n res.unshift(1);\n }\n return res;\n}\nexport function bls(CURVE) {\n // Fields are specific for curve, so for now we'll need to pass them with opts\n const { Fp, Fr, Fp2, Fp6, Fp12 } = CURVE.fields;\n const BLS_X_IS_NEGATIVE = CURVE.params.xNegative;\n const TWIST = CURVE.params.twistType;\n // Point on G1 curve: (x, y)\n const G1_ = weierstrassPoints({ n: Fr.ORDER, ...CURVE.G1 });\n const G1 = Object.assign(G1_, createHasher(G1_.ProjectivePoint, CURVE.G1.mapToCurve, {\n ...CURVE.htfDefaults,\n ...CURVE.G1.htfDefaults,\n }));\n // Point on G2 curve (complex numbers): (x₁, x₂+i), (y₁, y₂+i)\n const G2_ = weierstrassPoints({ n: Fr.ORDER, ...CURVE.G2 });\n const G2 = Object.assign(G2_, createHasher(G2_.ProjectivePoint, CURVE.G2.mapToCurve, {\n ...CURVE.htfDefaults,\n ...CURVE.G2.htfDefaults,\n }));\n // Applies sparse multiplication as line function\n let lineFunction;\n if (TWIST === 'multiplicative') {\n lineFunction = (c0, c1, c2, f, Px, Py) => Fp12.mul014(f, c0, Fp2.mul(c1, Px), Fp2.mul(c2, Py));\n }\n else if (TWIST === 'divisive') {\n // NOTE: it should be [c0, c1, c2], but we use different order here to reduce complexity of\n // precompute calculations.\n lineFunction = (c0, c1, c2, f, Px, Py) => Fp12.mul034(f, Fp2.mul(c2, Py), Fp2.mul(c1, Px), c0);\n }\n else\n throw new Error('bls: unknown twist type');\n const Fp2div2 = Fp2.div(Fp2.ONE, Fp2.mul(Fp2.ONE, _2n));\n function pointDouble(ell, Rx, Ry, Rz) {\n const t0 = Fp2.sqr(Ry); // Ry²\n const t1 = Fp2.sqr(Rz); // Rz²\n const t2 = Fp2.mulByB(Fp2.mul(t1, _3n)); // 3 * T1 * B\n const t3 = Fp2.mul(t2, _3n); // 3 * T2\n const t4 = Fp2.sub(Fp2.sub(Fp2.sqr(Fp2.add(Ry, Rz)), t1), t0); // (Ry + Rz)² - T1 - T0\n const c0 = Fp2.sub(t2, t0); // T2 - T0 (i)\n const c1 = Fp2.mul(Fp2.sqr(Rx), _3n); // 3 * Rx²\n const c2 = Fp2.neg(t4); // -T4 (-h)\n ell.push([c0, c1, c2]);\n Rx = Fp2.mul(Fp2.mul(Fp2.mul(Fp2.sub(t0, t3), Rx), Ry), Fp2div2); // ((T0 - T3) * Rx * Ry) / 2\n Ry = Fp2.sub(Fp2.sqr(Fp2.mul(Fp2.add(t0, t3), Fp2div2)), Fp2.mul(Fp2.sqr(t2), _3n)); // ((T0 + T3) / 2)² - 3 * T2²\n Rz = Fp2.mul(t0, t4); // T0 * T4\n return { Rx, Ry, Rz };\n }\n function pointAdd(ell, Rx, Ry, Rz, Qx, Qy) {\n // Addition\n const t0 = Fp2.sub(Ry, Fp2.mul(Qy, Rz)); // Ry - Qy * Rz\n const t1 = Fp2.sub(Rx, Fp2.mul(Qx, Rz)); // Rx - Qx * Rz\n const c0 = Fp2.sub(Fp2.mul(t0, Qx), Fp2.mul(t1, Qy)); // T0 * Qx - T1 * Qy == Ry * Qx - Rx * Qy\n const c1 = Fp2.neg(t0); // -T0 == Qy * Rz - Ry\n const c2 = t1; // == Rx - Qx * Rz\n ell.push([c0, c1, c2]);\n const t2 = Fp2.sqr(t1); // T1²\n const t3 = Fp2.mul(t2, t1); // T2 * T1\n const t4 = Fp2.mul(t2, Rx); // T2 * Rx\n const t5 = Fp2.add(Fp2.sub(t3, Fp2.mul(t4, _2n)), Fp2.mul(Fp2.sqr(t0), Rz)); // T3 - 2 * T4 + T0² * Rz\n Rx = Fp2.mul(t1, t5); // T1 * T5\n Ry = Fp2.sub(Fp2.mul(Fp2.sub(t4, t5), t0), Fp2.mul(t3, Ry)); // (T4 - T5) * T0 - T3 * Ry\n Rz = Fp2.mul(Rz, t3); // Rz * T3\n return { Rx, Ry, Rz };\n }\n // Pre-compute coefficients for sparse multiplication\n // Point addition and point double calculations is reused for coefficients\n // pointAdd happens only if bit set, so wNAF is reasonable. Unfortunately we cannot combine\n // add + double in windowed precomputes here, otherwise it would be single op (since X is static)\n const ATE_NAF = NAfDecomposition(CURVE.params.ateLoopSize);\n const calcPairingPrecomputes = memoized((point) => {\n const p = point;\n const { x, y } = p.toAffine();\n // prettier-ignore\n const Qx = x, Qy = y, negQy = Fp2.neg(y);\n // prettier-ignore\n let Rx = Qx, Ry = Qy, Rz = Fp2.ONE;\n const ell = [];\n for (const bit of ATE_NAF) {\n const cur = [];\n ({ Rx, Ry, Rz } = pointDouble(cur, Rx, Ry, Rz));\n if (bit)\n ({ Rx, Ry, Rz } = pointAdd(cur, Rx, Ry, Rz, Qx, bit === -1 ? negQy : Qy));\n ell.push(cur);\n }\n if (CURVE.postPrecompute) {\n const last = ell[ell.length - 1];\n CURVE.postPrecompute(Rx, Ry, Rz, Qx, Qy, pointAdd.bind(null, last));\n }\n return ell;\n });\n function millerLoopBatch(pairs, withFinalExponent = false) {\n let f12 = Fp12.ONE;\n if (pairs.length) {\n const ellLen = pairs[0][0].length;\n for (let i = 0; i < ellLen; i++) {\n f12 = Fp12.sqr(f12); // This allows us to do sqr only one time for all pairings\n // NOTE: we apply multiple pairings in parallel here\n for (const [ell, Px, Py] of pairs) {\n for (const [c0, c1, c2] of ell[i])\n f12 = lineFunction(c0, c1, c2, f12, Px, Py);\n }\n }\n }\n if (BLS_X_IS_NEGATIVE)\n f12 = Fp12.conjugate(f12);\n return withFinalExponent ? Fp12.finalExponentiate(f12) : f12;\n }\n // Calculates product of multiple pairings\n // This up to x2 faster than just `map(({g1, g2})=>pairing({g1,g2}))`\n function pairingBatch(pairs, withFinalExponent = true) {\n const res = [];\n // This cache precomputed toAffine for all points\n G1.ProjectivePoint.normalizeZ(pairs.map(({ g1 }) => g1));\n G2.ProjectivePoint.normalizeZ(pairs.map(({ g2 }) => g2));\n for (const { g1, g2 } of pairs) {\n if (g1.equals(G1.ProjectivePoint.ZERO) || g2.equals(G2.ProjectivePoint.ZERO))\n throw new Error('pairing is not available for ZERO point');\n // This uses toAffine inside\n g1.assertValidity();\n g2.assertValidity();\n const Qa = g1.toAffine();\n res.push([calcPairingPrecomputes(g2), Qa.x, Qa.y]);\n }\n return millerLoopBatch(res, withFinalExponent);\n }\n // Calculates bilinear pairing\n function pairing(Q, P, withFinalExponent = true) {\n return pairingBatch([{ g1: Q, g2: P }], withFinalExponent);\n }\n const utils = {\n randomPrivateKey: () => {\n const length = getMinHashLength(Fr.ORDER);\n return mapHashToField(CURVE.randomBytes(length), Fr.ORDER);\n },\n calcPairingPrecomputes,\n };\n const { ShortSignature } = CURVE.G1;\n const { Signature } = CURVE.G2;\n function normP1(point) {\n return point instanceof G1.ProjectivePoint ? point : G1.ProjectivePoint.fromHex(point);\n }\n function normP1Hash(point, htfOpts) {\n return point instanceof G1.ProjectivePoint\n ? point\n : G1.hashToCurve(ensureBytes('point', point), htfOpts);\n }\n function normP2(point) {\n return point instanceof G2.ProjectivePoint ? point : Signature.fromHex(point);\n }\n function normP2Hash(point, htfOpts) {\n return point instanceof G2.ProjectivePoint\n ? point\n : G2.hashToCurve(ensureBytes('point', point), htfOpts);\n }\n // Multiplies generator (G1) by private key.\n // P = pk x G\n function getPublicKey(privateKey) {\n return G1.ProjectivePoint.fromPrivateKey(privateKey).toRawBytes(true);\n }\n // Multiplies generator (G2) by private key.\n // P = pk x G\n function getPublicKeyForShortSignatures(privateKey) {\n return G2.ProjectivePoint.fromPrivateKey(privateKey).toRawBytes(true);\n }\n function sign(message, privateKey, htfOpts) {\n const msgPoint = normP2Hash(message, htfOpts);\n msgPoint.assertValidity();\n const sigPoint = msgPoint.multiply(G1.normPrivateKeyToScalar(privateKey));\n if (message instanceof G2.ProjectivePoint)\n return sigPoint;\n return Signature.toRawBytes(sigPoint);\n }\n function signShortSignature(message, privateKey, htfOpts) {\n const msgPoint = normP1Hash(message, htfOpts);\n msgPoint.assertValidity();\n const sigPoint = msgPoint.multiply(G1.normPrivateKeyToScalar(privateKey));\n if (message instanceof G1.ProjectivePoint)\n return sigPoint;\n return ShortSignature.toRawBytes(sigPoint);\n }\n // Checks if pairing of public key & hash is equal to pairing of generator & signature.\n // e(P, H(m)) == e(G, S)\n function verify(signature, message, publicKey, htfOpts) {\n const P = normP1(publicKey);\n const Hm = normP2Hash(message, htfOpts);\n const G = G1.ProjectivePoint.BASE;\n const S = normP2(signature);\n const exp = pairingBatch([\n { g1: P.negate(), g2: Hm }, // ePHM = pairing(P.negate(), Hm, false);\n { g1: G, g2: S }, // eGS = pairing(G, S, false);\n ]);\n return Fp12.eql(exp, Fp12.ONE);\n }\n // Checks if pairing of public key & hash is equal to pairing of generator & signature.\n // e(S, G) == e(H(m), P)\n function verifyShortSignature(signature, message, publicKey, htfOpts) {\n const P = normP2(publicKey);\n const Hm = normP1Hash(message, htfOpts);\n const G = G2.ProjectivePoint.BASE;\n const S = normP1(signature);\n const exp = pairingBatch([\n { g1: Hm, g2: P }, // eHmP = pairing(Hm, P, false);\n { g1: S, g2: G.negate() }, // eSG = pairing(S, G.negate(), false);\n ]);\n return Fp12.eql(exp, Fp12.ONE);\n }\n function aNonEmpty(arr) {\n if (!Array.isArray(arr) || arr.length === 0)\n throw new Error('expected non-empty array');\n }\n function aggregatePublicKeys(publicKeys) {\n aNonEmpty(publicKeys);\n const agg = publicKeys.map(normP1).reduce((sum, p) => sum.add(p), G1.ProjectivePoint.ZERO);\n const aggAffine = agg; //.toAffine();\n if (publicKeys[0] instanceof G1.ProjectivePoint) {\n aggAffine.assertValidity();\n return aggAffine;\n }\n // toRawBytes ensures point validity\n return aggAffine.toRawBytes(true);\n }\n function aggregateSignatures(signatures) {\n aNonEmpty(signatures);\n const agg = signatures.map(normP2).reduce((sum, s) => sum.add(s), G2.ProjectivePoint.ZERO);\n const aggAffine = agg; //.toAffine();\n if (signatures[0] instanceof G2.ProjectivePoint) {\n aggAffine.assertValidity();\n return aggAffine;\n }\n return Signature.toRawBytes(aggAffine);\n }\n function aggregateShortSignatures(signatures) {\n aNonEmpty(signatures);\n const agg = signatures.map(normP1).reduce((sum, s) => sum.add(s), G1.ProjectivePoint.ZERO);\n const aggAffine = agg; //.toAffine();\n if (signatures[0] instanceof G1.ProjectivePoint) {\n aggAffine.assertValidity();\n return aggAffine;\n }\n return ShortSignature.toRawBytes(aggAffine);\n }\n // https://ethresear.ch/t/fast-verification-of-multiple-bls-signatures/5407\n // e(G, S) = e(G, SUM(n)(Si)) = MUL(n)(e(G, Si))\n function verifyBatch(signature, \n // TODO: maybe `{message: G2Hex, publicKey: G1Hex}[]` instead?\n messages, publicKeys, htfOpts) {\n aNonEmpty(messages);\n if (publicKeys.length !== messages.length)\n throw new Error('amount of public keys and messages should be equal');\n const sig = normP2(signature);\n const nMessages = messages.map((i) => normP2Hash(i, htfOpts));\n const nPublicKeys = publicKeys.map(normP1);\n // NOTE: this works only for exact same object\n const messagePubKeyMap = new Map();\n for (let i = 0; i < nPublicKeys.length; i++) {\n const pub = nPublicKeys[i];\n const msg = nMessages[i];\n let keys = messagePubKeyMap.get(msg);\n if (keys === undefined) {\n keys = [];\n messagePubKeyMap.set(msg, keys);\n }\n keys.push(pub);\n }\n const paired = [];\n try {\n for (const [msg, keys] of messagePubKeyMap) {\n const groupPublicKey = keys.reduce((acc, msg) => acc.add(msg));\n paired.push({ g1: groupPublicKey, g2: msg });\n }\n paired.push({ g1: G1.ProjectivePoint.BASE.negate(), g2: sig });\n return Fp12.eql(pairingBatch(paired), Fp12.ONE);\n }\n catch {\n return false;\n }\n }\n G1.ProjectivePoint.BASE._setWindowSize(4);\n return {\n getPublicKey,\n getPublicKeyForShortSignatures,\n sign,\n signShortSignature,\n verify,\n verifyBatch,\n verifyShortSignature,\n aggregatePublicKeys,\n aggregateSignatures,\n aggregateShortSignatures,\n millerLoopBatch,\n pairing,\n pairingBatch,\n G1,\n G2,\n Signature,\n ShortSignature,\n fields: {\n Fr,\n Fp,\n Fp2,\n Fp6,\n Fp12,\n },\n params: {\n ateLoopSize: CURVE.params.ateLoopSize,\n r: CURVE.params.r,\n G1b: CURVE.G1.b,\n G2b: CURVE.G2.b,\n },\n utils,\n };\n}\n//# sourceMappingURL=bls.js.map","/**\n * Towered extension fields.\n * Rather than implementing a massive 12th-degree extension directly, it is more efficient\n * to build it up from smaller extensions: a tower of extensions.\n *\n * For BLS12-381, the Fp12 field is implemented as a quadratic (degree two) extension,\n * on top of a cubic (degree three) extension, on top of a quadratic extension of Fp.\n *\n * For more info: \"Pairings for beginners\" by Costello, section 7.3.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport * as mod from './modular.js';\nimport { bitLen, bitMask, concatBytes, notImplemented } from './utils.js';\n// Be friendly to bad ECMAScript parsers by not using bigint literals\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3);\nfunction calcFrobeniusCoefficients(Fp, nonResidue, modulus, degree, num = 1, divisor) {\n const _divisor = BigInt(divisor === undefined ? degree : divisor);\n const towerModulus = modulus ** BigInt(degree);\n const res = [];\n for (let i = 0; i < num; i++) {\n const a = BigInt(i + 1);\n const powers = [];\n for (let j = 0, qPower = _1n; j < degree; j++) {\n const power = ((a * qPower - a) / _divisor) % towerModulus;\n powers.push(Fp.pow(nonResidue, power));\n qPower *= modulus;\n }\n res.push(powers);\n }\n return res;\n}\n// This works same at least for bls12-381, bn254 and bls12-377\nexport function psiFrobenius(Fp, Fp2, base) {\n // Ψ endomorphism\n const PSI_X = Fp2.pow(base, (Fp.ORDER - _1n) / _3n); // u^((p-1)/3)\n const PSI_Y = Fp2.pow(base, (Fp.ORDER - _1n) / _2n); // u^((p-1)/2)\n function psi(x, y) {\n // This x10 faster than previous version in bls12-381\n const x2 = Fp2.mul(Fp2.frobeniusMap(x, 1), PSI_X);\n const y2 = Fp2.mul(Fp2.frobeniusMap(y, 1), PSI_Y);\n return [x2, y2];\n }\n // Ψ²(P) endomorphism (psi2(x) = psi(psi(x)))\n const PSI2_X = Fp2.pow(base, (Fp.ORDER ** _2n - _1n) / _3n); // u^((p^2 - 1)/3)\n // This equals -1, which causes y to be Fp2.neg(y).\n // But not sure if there are case when this is not true?\n const PSI2_Y = Fp2.pow(base, (Fp.ORDER ** _2n - _1n) / _2n); // u^((p^2 - 1)/3)\n if (!Fp2.eql(PSI2_Y, Fp2.neg(Fp2.ONE)))\n throw new Error('psiFrobenius: PSI2_Y!==-1');\n function psi2(x, y) {\n return [Fp2.mul(x, PSI2_X), Fp2.neg(y)];\n }\n // Map points\n const mapAffine = (fn) => (c, P) => {\n const affine = P.toAffine();\n const p = fn(affine.x, affine.y);\n return c.fromAffine({ x: p[0], y: p[1] });\n };\n const G2psi = mapAffine(psi);\n const G2psi2 = mapAffine(psi2);\n return { psi, psi2, G2psi, G2psi2, PSI_X, PSI_Y, PSI2_X, PSI2_Y };\n}\nexport function tower12(opts) {\n const { ORDER } = opts;\n // Fp\n const Fp = mod.Field(ORDER);\n const FpNONRESIDUE = Fp.create(opts.NONRESIDUE || BigInt(-1));\n const FpLegendre = mod.FpLegendre(ORDER);\n const Fpdiv2 = Fp.div(Fp.ONE, _2n); // 1/2\n // Fp2\n const FP2_FROBENIUS_COEFFICIENTS = calcFrobeniusCoefficients(Fp, FpNONRESIDUE, Fp.ORDER, 2)[0];\n const Fp2Add = ({ c0, c1 }, { c0: r0, c1: r1 }) => ({\n c0: Fp.add(c0, r0),\n c1: Fp.add(c1, r1),\n });\n const Fp2Subtract = ({ c0, c1 }, { c0: r0, c1: r1 }) => ({\n c0: Fp.sub(c0, r0),\n c1: Fp.sub(c1, r1),\n });\n const Fp2Multiply = ({ c0, c1 }, rhs) => {\n if (typeof rhs === 'bigint')\n return { c0: Fp.mul(c0, rhs), c1: Fp.mul(c1, rhs) };\n // (a+bi)(c+di) = (ac−bd) + (ad+bc)i\n const { c0: r0, c1: r1 } = rhs;\n let t1 = Fp.mul(c0, r0); // c0 * o0\n let t2 = Fp.mul(c1, r1); // c1 * o1\n // (T1 - T2) + ((c0 + c1) * (r0 + r1) - (T1 + T2))*i\n const o0 = Fp.sub(t1, t2);\n const o1 = Fp.sub(Fp.mul(Fp.add(c0, c1), Fp.add(r0, r1)), Fp.add(t1, t2));\n return { c0: o0, c1: o1 };\n };\n const Fp2Square = ({ c0, c1 }) => {\n const a = Fp.add(c0, c1);\n const b = Fp.sub(c0, c1);\n const c = Fp.add(c0, c0);\n return { c0: Fp.mul(a, b), c1: Fp.mul(c, c1) };\n };\n const Fp2fromBigTuple = (tuple) => {\n if (tuple.length !== 2)\n throw new Error('invalid tuple');\n const fps = tuple.map((n) => Fp.create(n));\n return { c0: fps[0], c1: fps[1] };\n };\n const FP2_ORDER = ORDER * ORDER;\n const Fp2Nonresidue = Fp2fromBigTuple(opts.FP2_NONRESIDUE);\n const Fp2 = {\n ORDER: FP2_ORDER,\n isLE: Fp.isLE,\n NONRESIDUE: Fp2Nonresidue,\n BITS: bitLen(FP2_ORDER),\n BYTES: Math.ceil(bitLen(FP2_ORDER) / 8),\n MASK: bitMask(bitLen(FP2_ORDER)),\n ZERO: { c0: Fp.ZERO, c1: Fp.ZERO },\n ONE: { c0: Fp.ONE, c1: Fp.ZERO },\n create: (num) => num,\n isValid: ({ c0, c1 }) => typeof c0 === 'bigint' && typeof c1 === 'bigint',\n is0: ({ c0, c1 }) => Fp.is0(c0) && Fp.is0(c1),\n eql: ({ c0, c1 }, { c0: r0, c1: r1 }) => Fp.eql(c0, r0) && Fp.eql(c1, r1),\n neg: ({ c0, c1 }) => ({ c0: Fp.neg(c0), c1: Fp.neg(c1) }),\n pow: (num, power) => mod.FpPow(Fp2, num, power),\n invertBatch: (nums) => mod.FpInvertBatch(Fp2, nums),\n // Normalized\n add: Fp2Add,\n sub: Fp2Subtract,\n mul: Fp2Multiply,\n sqr: Fp2Square,\n // NonNormalized stuff\n addN: Fp2Add,\n subN: Fp2Subtract,\n mulN: Fp2Multiply,\n sqrN: Fp2Square,\n // Why inversion for bigint inside Fp instead of Fp2? it is even used in that context?\n div: (lhs, rhs) => Fp2.mul(lhs, typeof rhs === 'bigint' ? Fp.inv(Fp.create(rhs)) : Fp2.inv(rhs)),\n inv: ({ c0: a, c1: b }) => {\n // We wish to find the multiplicative inverse of a nonzero\n // element a + bu in Fp2. We leverage an identity\n //\n // (a + bu)(a - bu) = a² + b²\n //\n // which holds because u² = -1. This can be rewritten as\n //\n // (a + bu)(a - bu)/(a² + b²) = 1\n //\n // because a² + b² = 0 has no nonzero solutions for (a, b).\n // This gives that (a - bu)/(a² + b²) is the inverse\n // of (a + bu). Importantly, this can be computing using\n // only a single inversion in Fp.\n const factor = Fp.inv(Fp.create(a * a + b * b));\n return { c0: Fp.mul(factor, Fp.create(a)), c1: Fp.mul(factor, Fp.create(-b)) };\n },\n sqrt: (num) => {\n if (opts.Fp2sqrt)\n return opts.Fp2sqrt(num);\n // This is generic for all quadratic extensions (Fp2)\n const { c0, c1 } = num;\n if (Fp.is0(c1)) {\n // if c0 is quadratic residue\n if (Fp.eql(FpLegendre(Fp, c0), Fp.ONE))\n return Fp2.create({ c0: Fp.sqrt(c0), c1: Fp.ZERO });\n else\n return Fp2.create({ c0: Fp.ZERO, c1: Fp.sqrt(Fp.div(c0, FpNONRESIDUE)) });\n }\n const a = Fp.sqrt(Fp.sub(Fp.sqr(c0), Fp.mul(Fp.sqr(c1), FpNONRESIDUE)));\n let d = Fp.mul(Fp.add(a, c0), Fpdiv2);\n const legendre = FpLegendre(Fp, d);\n // -1, Quadratic non residue\n if (!Fp.is0(legendre) && !Fp.eql(legendre, Fp.ONE))\n d = Fp.sub(d, a);\n const a0 = Fp.sqrt(d);\n const candidateSqrt = Fp2.create({ c0: a0, c1: Fp.div(Fp.mul(c1, Fpdiv2), a0) });\n if (!Fp2.eql(Fp2.sqr(candidateSqrt), num))\n throw new Error('Cannot find square root');\n // Normalize root: at this point candidateSqrt ** 2 = num, but also -candidateSqrt ** 2 = num\n const x1 = candidateSqrt;\n const x2 = Fp2.neg(x1);\n const { re: re1, im: im1 } = Fp2.reim(x1);\n const { re: re2, im: im2 } = Fp2.reim(x2);\n if (im1 > im2 || (im1 === im2 && re1 > re2))\n return x1;\n return x2;\n },\n // Same as sgn0_m_eq_2 in RFC 9380\n isOdd: (x) => {\n const { re: x0, im: x1 } = Fp2.reim(x);\n const sign_0 = x0 % _2n;\n const zero_0 = x0 === _0n;\n const sign_1 = x1 % _2n;\n return BigInt(sign_0 || (zero_0 && sign_1)) == _1n;\n },\n // Bytes util\n fromBytes(b) {\n if (b.length !== Fp2.BYTES)\n throw new Error('fromBytes invalid length=' + b.length);\n return { c0: Fp.fromBytes(b.subarray(0, Fp.BYTES)), c1: Fp.fromBytes(b.subarray(Fp.BYTES)) };\n },\n toBytes: ({ c0, c1 }) => concatBytes(Fp.toBytes(c0), Fp.toBytes(c1)),\n cmov: ({ c0, c1 }, { c0: r0, c1: r1 }, c) => ({\n c0: Fp.cmov(c0, r0, c),\n c1: Fp.cmov(c1, r1, c),\n }),\n reim: ({ c0, c1 }) => ({ re: c0, im: c1 }),\n // multiply by u + 1\n mulByNonresidue: ({ c0, c1 }) => Fp2.mul({ c0, c1 }, Fp2Nonresidue),\n mulByB: opts.Fp2mulByB,\n fromBigTuple: Fp2fromBigTuple,\n frobeniusMap: ({ c0, c1 }, power) => ({\n c0,\n c1: Fp.mul(c1, FP2_FROBENIUS_COEFFICIENTS[power % 2]),\n }),\n };\n // Fp6\n const Fp6Add = ({ c0, c1, c2 }, { c0: r0, c1: r1, c2: r2 }) => ({\n c0: Fp2.add(c0, r0),\n c1: Fp2.add(c1, r1),\n c2: Fp2.add(c2, r2),\n });\n const Fp6Subtract = ({ c0, c1, c2 }, { c0: r0, c1: r1, c2: r2 }) => ({\n c0: Fp2.sub(c0, r0),\n c1: Fp2.sub(c1, r1),\n c2: Fp2.sub(c2, r2),\n });\n const Fp6Multiply = ({ c0, c1, c2 }, rhs) => {\n if (typeof rhs === 'bigint') {\n return {\n c0: Fp2.mul(c0, rhs),\n c1: Fp2.mul(c1, rhs),\n c2: Fp2.mul(c2, rhs),\n };\n }\n const { c0: r0, c1: r1, c2: r2 } = rhs;\n const t0 = Fp2.mul(c0, r0); // c0 * o0\n const t1 = Fp2.mul(c1, r1); // c1 * o1\n const t2 = Fp2.mul(c2, r2); // c2 * o2\n return {\n // t0 + (c1 + c2) * (r1 * r2) - (T1 + T2) * (u + 1)\n c0: Fp2.add(t0, Fp2.mulByNonresidue(Fp2.sub(Fp2.mul(Fp2.add(c1, c2), Fp2.add(r1, r2)), Fp2.add(t1, t2)))),\n // (c0 + c1) * (r0 + r1) - (T0 + T1) + T2 * (u + 1)\n c1: Fp2.add(Fp2.sub(Fp2.mul(Fp2.add(c0, c1), Fp2.add(r0, r1)), Fp2.add(t0, t1)), Fp2.mulByNonresidue(t2)),\n // T1 + (c0 + c2) * (r0 + r2) - T0 + T2\n c2: Fp2.sub(Fp2.add(t1, Fp2.mul(Fp2.add(c0, c2), Fp2.add(r0, r2))), Fp2.add(t0, t2)),\n };\n };\n const Fp6Square = ({ c0, c1, c2 }) => {\n let t0 = Fp2.sqr(c0); // c0²\n let t1 = Fp2.mul(Fp2.mul(c0, c1), _2n); // 2 * c0 * c1\n let t3 = Fp2.mul(Fp2.mul(c1, c2), _2n); // 2 * c1 * c2\n let t4 = Fp2.sqr(c2); // c2²\n return {\n c0: Fp2.add(Fp2.mulByNonresidue(t3), t0), // T3 * (u + 1) + T0\n c1: Fp2.add(Fp2.mulByNonresidue(t4), t1), // T4 * (u + 1) + T1\n // T1 + (c0 - c1 + c2)² + T3 - T0 - T4\n c2: Fp2.sub(Fp2.sub(Fp2.add(Fp2.add(t1, Fp2.sqr(Fp2.add(Fp2.sub(c0, c1), c2))), t3), t0), t4),\n };\n };\n const [FP6_FROBENIUS_COEFFICIENTS_1, FP6_FROBENIUS_COEFFICIENTS_2] = calcFrobeniusCoefficients(Fp2, Fp2Nonresidue, Fp.ORDER, 6, 2, 3);\n const Fp6 = {\n ORDER: Fp2.ORDER, // TODO: unused, but need to verify\n isLE: Fp2.isLE,\n BITS: 3 * Fp2.BITS,\n BYTES: 3 * Fp2.BYTES,\n MASK: bitMask(3 * Fp2.BITS),\n ZERO: { c0: Fp2.ZERO, c1: Fp2.ZERO, c2: Fp2.ZERO },\n ONE: { c0: Fp2.ONE, c1: Fp2.ZERO, c2: Fp2.ZERO },\n create: (num) => num,\n isValid: ({ c0, c1, c2 }) => Fp2.isValid(c0) && Fp2.isValid(c1) && Fp2.isValid(c2),\n is0: ({ c0, c1, c2 }) => Fp2.is0(c0) && Fp2.is0(c1) && Fp2.is0(c2),\n neg: ({ c0, c1, c2 }) => ({ c0: Fp2.neg(c0), c1: Fp2.neg(c1), c2: Fp2.neg(c2) }),\n eql: ({ c0, c1, c2 }, { c0: r0, c1: r1, c2: r2 }) => Fp2.eql(c0, r0) && Fp2.eql(c1, r1) && Fp2.eql(c2, r2),\n sqrt: notImplemented,\n // Do we need division by bigint at all? Should be done via order:\n div: (lhs, rhs) => Fp6.mul(lhs, typeof rhs === 'bigint' ? Fp.inv(Fp.create(rhs)) : Fp6.inv(rhs)),\n pow: (num, power) => mod.FpPow(Fp6, num, power),\n invertBatch: (nums) => mod.FpInvertBatch(Fp6, nums),\n // Normalized\n add: Fp6Add,\n sub: Fp6Subtract,\n mul: Fp6Multiply,\n sqr: Fp6Square,\n // NonNormalized stuff\n addN: Fp6Add,\n subN: Fp6Subtract,\n mulN: Fp6Multiply,\n sqrN: Fp6Square,\n inv: ({ c0, c1, c2 }) => {\n let t0 = Fp2.sub(Fp2.sqr(c0), Fp2.mulByNonresidue(Fp2.mul(c2, c1))); // c0² - c2 * c1 * (u + 1)\n let t1 = Fp2.sub(Fp2.mulByNonresidue(Fp2.sqr(c2)), Fp2.mul(c0, c1)); // c2² * (u + 1) - c0 * c1\n let t2 = Fp2.sub(Fp2.sqr(c1), Fp2.mul(c0, c2)); // c1² - c0 * c2\n // 1/(((c2 * T1 + c1 * T2) * v) + c0 * T0)\n let t4 = Fp2.inv(Fp2.add(Fp2.mulByNonresidue(Fp2.add(Fp2.mul(c2, t1), Fp2.mul(c1, t2))), Fp2.mul(c0, t0)));\n return { c0: Fp2.mul(t4, t0), c1: Fp2.mul(t4, t1), c2: Fp2.mul(t4, t2) };\n },\n // Bytes utils\n fromBytes: (b) => {\n if (b.length !== Fp6.BYTES)\n throw new Error('fromBytes invalid length=' + b.length);\n return {\n c0: Fp2.fromBytes(b.subarray(0, Fp2.BYTES)),\n c1: Fp2.fromBytes(b.subarray(Fp2.BYTES, 2 * Fp2.BYTES)),\n c2: Fp2.fromBytes(b.subarray(2 * Fp2.BYTES)),\n };\n },\n toBytes: ({ c0, c1, c2 }) => concatBytes(Fp2.toBytes(c0), Fp2.toBytes(c1), Fp2.toBytes(c2)),\n cmov: ({ c0, c1, c2 }, { c0: r0, c1: r1, c2: r2 }, c) => ({\n c0: Fp2.cmov(c0, r0, c),\n c1: Fp2.cmov(c1, r1, c),\n c2: Fp2.cmov(c2, r2, c),\n }),\n fromBigSix: (t) => {\n if (!Array.isArray(t) || t.length !== 6)\n throw new Error('invalid Fp6 usage');\n return {\n c0: Fp2.fromBigTuple(t.slice(0, 2)),\n c1: Fp2.fromBigTuple(t.slice(2, 4)),\n c2: Fp2.fromBigTuple(t.slice(4, 6)),\n };\n },\n frobeniusMap: ({ c0, c1, c2 }, power) => ({\n c0: Fp2.frobeniusMap(c0, power),\n c1: Fp2.mul(Fp2.frobeniusMap(c1, power), FP6_FROBENIUS_COEFFICIENTS_1[power % 6]),\n c2: Fp2.mul(Fp2.frobeniusMap(c2, power), FP6_FROBENIUS_COEFFICIENTS_2[power % 6]),\n }),\n mulByFp2: ({ c0, c1, c2 }, rhs) => ({\n c0: Fp2.mul(c0, rhs),\n c1: Fp2.mul(c1, rhs),\n c2: Fp2.mul(c2, rhs),\n }),\n mulByNonresidue: ({ c0, c1, c2 }) => ({ c0: Fp2.mulByNonresidue(c2), c1: c0, c2: c1 }),\n // Sparse multiplication\n mul1: ({ c0, c1, c2 }, b1) => ({\n c0: Fp2.mulByNonresidue(Fp2.mul(c2, b1)),\n c1: Fp2.mul(c0, b1),\n c2: Fp2.mul(c1, b1),\n }),\n // Sparse multiplication\n mul01({ c0, c1, c2 }, b0, b1) {\n let t0 = Fp2.mul(c0, b0); // c0 * b0\n let t1 = Fp2.mul(c1, b1); // c1 * b1\n return {\n // ((c1 + c2) * b1 - T1) * (u + 1) + T0\n c0: Fp2.add(Fp2.mulByNonresidue(Fp2.sub(Fp2.mul(Fp2.add(c1, c2), b1), t1)), t0),\n // (b0 + b1) * (c0 + c1) - T0 - T1\n c1: Fp2.sub(Fp2.sub(Fp2.mul(Fp2.add(b0, b1), Fp2.add(c0, c1)), t0), t1),\n // (c0 + c2) * b0 - T0 + T1\n c2: Fp2.add(Fp2.sub(Fp2.mul(Fp2.add(c0, c2), b0), t0), t1),\n };\n },\n };\n // Fp12\n const FP12_FROBENIUS_COEFFICIENTS = calcFrobeniusCoefficients(Fp2, Fp2Nonresidue, Fp.ORDER, 12, 1, 6)[0];\n const Fp12Add = ({ c0, c1 }, { c0: r0, c1: r1 }) => ({\n c0: Fp6.add(c0, r0),\n c1: Fp6.add(c1, r1),\n });\n const Fp12Subtract = ({ c0, c1 }, { c0: r0, c1: r1 }) => ({\n c0: Fp6.sub(c0, r0),\n c1: Fp6.sub(c1, r1),\n });\n const Fp12Multiply = ({ c0, c1 }, rhs) => {\n if (typeof rhs === 'bigint')\n return { c0: Fp6.mul(c0, rhs), c1: Fp6.mul(c1, rhs) };\n let { c0: r0, c1: r1 } = rhs;\n let t1 = Fp6.mul(c0, r0); // c0 * r0\n let t2 = Fp6.mul(c1, r1); // c1 * r1\n return {\n c0: Fp6.add(t1, Fp6.mulByNonresidue(t2)), // T1 + T2 * v\n // (c0 + c1) * (r0 + r1) - (T1 + T2)\n c1: Fp6.sub(Fp6.mul(Fp6.add(c0, c1), Fp6.add(r0, r1)), Fp6.add(t1, t2)),\n };\n };\n const Fp12Square = ({ c0, c1 }) => {\n let ab = Fp6.mul(c0, c1); // c0 * c1\n return {\n // (c1 * v + c0) * (c0 + c1) - AB - AB * v\n c0: Fp6.sub(Fp6.sub(Fp6.mul(Fp6.add(Fp6.mulByNonresidue(c1), c0), Fp6.add(c0, c1)), ab), Fp6.mulByNonresidue(ab)),\n c1: Fp6.add(ab, ab),\n }; // AB + AB\n };\n function Fp4Square(a, b) {\n const a2 = Fp2.sqr(a);\n const b2 = Fp2.sqr(b);\n return {\n first: Fp2.add(Fp2.mulByNonresidue(b2), a2), // b² * Nonresidue + a²\n second: Fp2.sub(Fp2.sub(Fp2.sqr(Fp2.add(a, b)), a2), b2), // (a + b)² - a² - b²\n };\n }\n const Fp12 = {\n ORDER: Fp2.ORDER, // TODO: unused, but need to verify\n isLE: Fp6.isLE,\n BITS: 2 * Fp2.BITS,\n BYTES: 2 * Fp2.BYTES,\n MASK: bitMask(2 * Fp2.BITS),\n ZERO: { c0: Fp6.ZERO, c1: Fp6.ZERO },\n ONE: { c0: Fp6.ONE, c1: Fp6.ZERO },\n create: (num) => num,\n isValid: ({ c0, c1 }) => Fp6.isValid(c0) && Fp6.isValid(c1),\n is0: ({ c0, c1 }) => Fp6.is0(c0) && Fp6.is0(c1),\n neg: ({ c0, c1 }) => ({ c0: Fp6.neg(c0), c1: Fp6.neg(c1) }),\n eql: ({ c0, c1 }, { c0: r0, c1: r1 }) => Fp6.eql(c0, r0) && Fp6.eql(c1, r1),\n sqrt: notImplemented,\n inv: ({ c0, c1 }) => {\n let t = Fp6.inv(Fp6.sub(Fp6.sqr(c0), Fp6.mulByNonresidue(Fp6.sqr(c1)))); // 1 / (c0² - c1² * v)\n return { c0: Fp6.mul(c0, t), c1: Fp6.neg(Fp6.mul(c1, t)) }; // ((C0 * T) * T) + (-C1 * T) * w\n },\n div: (lhs, rhs) => Fp12.mul(lhs, typeof rhs === 'bigint' ? Fp.inv(Fp.create(rhs)) : Fp12.inv(rhs)),\n pow: (num, power) => mod.FpPow(Fp12, num, power),\n invertBatch: (nums) => mod.FpInvertBatch(Fp12, nums),\n // Normalized\n add: Fp12Add,\n sub: Fp12Subtract,\n mul: Fp12Multiply,\n sqr: Fp12Square,\n // NonNormalized stuff\n addN: Fp12Add,\n subN: Fp12Subtract,\n mulN: Fp12Multiply,\n sqrN: Fp12Square,\n // Bytes utils\n fromBytes: (b) => {\n if (b.length !== Fp12.BYTES)\n throw new Error('fromBytes invalid length=' + b.length);\n return {\n c0: Fp6.fromBytes(b.subarray(0, Fp6.BYTES)),\n c1: Fp6.fromBytes(b.subarray(Fp6.BYTES)),\n };\n },\n toBytes: ({ c0, c1 }) => concatBytes(Fp6.toBytes(c0), Fp6.toBytes(c1)),\n cmov: ({ c0, c1 }, { c0: r0, c1: r1 }, c) => ({\n c0: Fp6.cmov(c0, r0, c),\n c1: Fp6.cmov(c1, r1, c),\n }),\n // Utils\n // toString() {\n // return '' + 'Fp12(' + this.c0 + this.c1 + '* w');\n // },\n // fromTuple(c: [Fp6, Fp6]) {\n // return new Fp12(...c);\n // }\n fromBigTwelve: (t) => ({\n c0: Fp6.fromBigSix(t.slice(0, 6)),\n c1: Fp6.fromBigSix(t.slice(6, 12)),\n }),\n // Raises to q**i -th power\n frobeniusMap(lhs, power) {\n const { c0, c1, c2 } = Fp6.frobeniusMap(lhs.c1, power);\n const coeff = FP12_FROBENIUS_COEFFICIENTS[power % 12];\n return {\n c0: Fp6.frobeniusMap(lhs.c0, power),\n c1: Fp6.create({\n c0: Fp2.mul(c0, coeff),\n c1: Fp2.mul(c1, coeff),\n c2: Fp2.mul(c2, coeff),\n }),\n };\n },\n mulByFp2: ({ c0, c1 }, rhs) => ({\n c0: Fp6.mulByFp2(c0, rhs),\n c1: Fp6.mulByFp2(c1, rhs),\n }),\n conjugate: ({ c0, c1 }) => ({ c0, c1: Fp6.neg(c1) }),\n // Sparse multiplication\n mul014: ({ c0, c1 }, o0, o1, o4) => {\n let t0 = Fp6.mul01(c0, o0, o1);\n let t1 = Fp6.mul1(c1, o4);\n return {\n c0: Fp6.add(Fp6.mulByNonresidue(t1), t0), // T1 * v + T0\n // (c1 + c0) * [o0, o1+o4] - T0 - T1\n c1: Fp6.sub(Fp6.sub(Fp6.mul01(Fp6.add(c1, c0), o0, Fp2.add(o1, o4)), t0), t1),\n };\n },\n mul034: ({ c0, c1 }, o0, o3, o4) => {\n const a = Fp6.create({\n c0: Fp2.mul(c0.c0, o0),\n c1: Fp2.mul(c0.c1, o0),\n c2: Fp2.mul(c0.c2, o0),\n });\n const b = Fp6.mul01(c1, o3, o4);\n const e = Fp6.mul01(Fp6.add(c0, c1), Fp2.add(o0, o3), o4);\n return {\n c0: Fp6.add(Fp6.mulByNonresidue(b), a),\n c1: Fp6.sub(e, Fp6.add(a, b)),\n };\n },\n // A cyclotomic group is a subgroup of Fp^n defined by\n // GΦₙ(p) = {α ∈ Fpⁿ : α^Φₙ(p) = 1}\n // The result of any pairing is in a cyclotomic subgroup\n // https://eprint.iacr.org/2009/565.pdf\n _cyclotomicSquare: opts.Fp12cyclotomicSquare,\n _cyclotomicExp: opts.Fp12cyclotomicExp,\n // https://eprint.iacr.org/2010/354.pdf\n // https://eprint.iacr.org/2009/565.pdf\n finalExponentiate: opts.Fp12finalExponentiate,\n };\n return { Fp, Fp2, Fp6, Fp4Square, Fp12 };\n}\n//# sourceMappingURL=tower.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha256 } from '@noble/hashes/sha256';\nimport { randomBytes } from '@noble/hashes/utils';\nimport { bls } from './abstract/bls.js';\nimport * as mod from './abstract/modular.js';\nimport { bitGet, bitLen, bytesToHex, bytesToNumberBE, concatBytes as concatB, ensureBytes, numberToBytesBE, } from './abstract/utils.js';\n// Types\nimport { isogenyMap } from './abstract/hash-to-curve.js';\nimport { mapToCurveSimpleSWU } from './abstract/weierstrass.js';\nimport { tower12, psiFrobenius } from './abstract/tower.js';\n/**\n * bls12-381 is pairing-friendly Barreto-Lynn-Scott elliptic curve construction allowing to:\n * * Construct zk-SNARKs at the ~120-bit security\n * * Efficiently verify N aggregate signatures with 1 pairing and N ec additions:\n * the Boneh-Lynn-Shacham signature scheme is orders of magnitude more efficient than Schnorr\n *\n * ### Summary\n * 1. BLS Relies on Bilinear Pairing (expensive)\n * 2. Private Keys: 32 bytes\n * 3. Public Keys: 48 bytes: 381 bit affine x coordinate, encoded into 48 big-endian bytes.\n * 4. Signatures: 96 bytes: two 381 bit integers (affine x coordinate), encoded into two 48 big-endian byte arrays.\n * - The signature is a point on the G2 subgroup, which is defined over a finite field\n * with elements twice as big as the G1 curve (G2 is over Fp2 rather than Fp. Fp2 is analogous to the\n * complex numbers).\n * - We also support reversed 96-byte pubkeys & 48-byte short signatures.\n * 5. The 12 stands for the Embedding degree.\n *\n * ### Formulas\n * - `P = pk x G` - public keys\n * - `S = pk x H(m)` - signing\n * - `e(P, H(m)) == e(G, S)` - verification using pairings\n * - `e(G, S) = e(G, SUM(n)(Si)) = MUL(n)(e(G, Si))` - signature aggregation\n *\n * ### Compatibility and notes\n * 1. It is compatible with Algorand, Chia, Dfinity, Ethereum, Filecoin, ZEC.\n * Filecoin uses little endian byte arrays for private keys - make sure to reverse byte order.\n * 2. Some projects use G2 for public keys and G1 for signatures. It's called \"short signature\".\n * 3. Curve security level is about 120 bits as per [Barbulescu-Duquesne 2017](https://hal.science/hal-01534101/file/main.pdf)\n * 4. Compatible with specs:\n * [cfrg-pairing-friendly-curves-11](https://tools.ietf.org/html/draft-irtf-cfrg-pairing-friendly-curves-11),\n * [cfrg-bls-signature-05](https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-bls-signature-05),\n * [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380).\n *\n * ### Params\n * To verify curve parameters, see\n * [pairing-friendly-curves spec](https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-pairing-friendly-curves-11).\n * Basic math is done over finite fields over p.\n * More complicated math is done over polynominal extension fields.\n * To simplify calculations in Fp12, we construct extension tower:\n * - Fp₁₂ = Fp₆² => Fp₂³\n * - Fp(u) / (u² - β) where β = -1\n * - Fp₂(v) / (v³ - ξ) where ξ = u + 1\n * - Fp₆(w) / (w² - γ) where γ = v\n * Here goes constants && point encoding format\n *\n * Embedding degree (k): 12\n * Seed (X): -15132376222941642752\n * Fr: (x⁴-x²+1)\n * Fp: ((x-1)² ⋅ r(x)/3+x)\n * (E/Fp): Y²=X³+4\n * (Eₜ/Fp²): Y² = X³+4(u+1) (M-type twist)\n * Ate loop size: X\n *\n * ### Towers\n * - Fp²[u] = Fp/u²+1\n * - Fp⁶[v] = Fp²/v³-1-u\n * - Fp¹²[w] = Fp⁶/w²-v\n *\n * @todo construct bls & bn fp/fr from seed.\n * @module\n */\n// Be friendly to bad ECMAScript parsers by not using bigint literals\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3), _4n = BigInt(4);\n// The BLS parameter x (seed) for BLS12-381. NOTE: it is negative!\nconst BLS_X = BigInt('0xd201000000010000');\nconst BLS_X_LEN = bitLen(BLS_X);\n// CURVE FIELDS\nconst { Fp, Fp2, Fp6, Fp4Square, Fp12 } = tower12({\n // Order of Fp\n ORDER: BigInt('0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab'),\n // Finite extension field over irreducible polynominal.\n // Fp(u) / (u² - β) where β = -1\n FP2_NONRESIDUE: [_1n, _1n],\n Fp2mulByB: ({ c0, c1 }) => {\n const t0 = Fp.mul(c0, _4n); // 4 * c0\n const t1 = Fp.mul(c1, _4n); // 4 * c1\n // (T0-T1) + (T0+T1)*i\n return { c0: Fp.sub(t0, t1), c1: Fp.add(t0, t1) };\n },\n // Fp12\n // A cyclotomic group is a subgroup of Fp^n defined by\n // GΦₙ(p) = {α ∈ Fpⁿ : α^Φₙ(p) = 1}\n // The result of any pairing is in a cyclotomic subgroup\n // https://eprint.iacr.org/2009/565.pdf\n Fp12cyclotomicSquare: ({ c0, c1 }) => {\n const { c0: c0c0, c1: c0c1, c2: c0c2 } = c0;\n const { c0: c1c0, c1: c1c1, c2: c1c2 } = c1;\n const { first: t3, second: t4 } = Fp4Square(c0c0, c1c1);\n const { first: t5, second: t6 } = Fp4Square(c1c0, c0c2);\n const { first: t7, second: t8 } = Fp4Square(c0c1, c1c2);\n const t9 = Fp2.mulByNonresidue(t8); // T8 * (u + 1)\n return {\n c0: Fp6.create({\n c0: Fp2.add(Fp2.mul(Fp2.sub(t3, c0c0), _2n), t3), // 2 * (T3 - c0c0) + T3\n c1: Fp2.add(Fp2.mul(Fp2.sub(t5, c0c1), _2n), t5), // 2 * (T5 - c0c1) + T5\n c2: Fp2.add(Fp2.mul(Fp2.sub(t7, c0c2), _2n), t7),\n }), // 2 * (T7 - c0c2) + T7\n c1: Fp6.create({\n c0: Fp2.add(Fp2.mul(Fp2.add(t9, c1c0), _2n), t9), // 2 * (T9 + c1c0) + T9\n c1: Fp2.add(Fp2.mul(Fp2.add(t4, c1c1), _2n), t4), // 2 * (T4 + c1c1) + T4\n c2: Fp2.add(Fp2.mul(Fp2.add(t6, c1c2), _2n), t6),\n }),\n }; // 2 * (T6 + c1c2) + T6\n },\n Fp12cyclotomicExp(num, n) {\n let z = Fp12.ONE;\n for (let i = BLS_X_LEN - 1; i >= 0; i--) {\n z = Fp12._cyclotomicSquare(z);\n if (bitGet(n, i))\n z = Fp12.mul(z, num);\n }\n return z;\n },\n // https://eprint.iacr.org/2010/354.pdf\n // https://eprint.iacr.org/2009/565.pdf\n Fp12finalExponentiate: (num) => {\n const x = BLS_X;\n // this^(q⁶) / this\n const t0 = Fp12.div(Fp12.frobeniusMap(num, 6), num);\n // t0^(q²) * t0\n const t1 = Fp12.mul(Fp12.frobeniusMap(t0, 2), t0);\n const t2 = Fp12.conjugate(Fp12._cyclotomicExp(t1, x));\n const t3 = Fp12.mul(Fp12.conjugate(Fp12._cyclotomicSquare(t1)), t2);\n const t4 = Fp12.conjugate(Fp12._cyclotomicExp(t3, x));\n const t5 = Fp12.conjugate(Fp12._cyclotomicExp(t4, x));\n const t6 = Fp12.mul(Fp12.conjugate(Fp12._cyclotomicExp(t5, x)), Fp12._cyclotomicSquare(t2));\n const t7 = Fp12.conjugate(Fp12._cyclotomicExp(t6, x));\n const t2_t5_pow_q2 = Fp12.frobeniusMap(Fp12.mul(t2, t5), 2);\n const t4_t1_pow_q3 = Fp12.frobeniusMap(Fp12.mul(t4, t1), 3);\n const t6_t1c_pow_q1 = Fp12.frobeniusMap(Fp12.mul(t6, Fp12.conjugate(t1)), 1);\n const t7_t3c_t1 = Fp12.mul(Fp12.mul(t7, Fp12.conjugate(t3)), t1);\n // (t2 * t5)^(q²) * (t4 * t1)^(q³) * (t6 * t1.conj)^(q^1) * t7 * t3.conj * t1\n return Fp12.mul(Fp12.mul(Fp12.mul(t2_t5_pow_q2, t4_t1_pow_q3), t6_t1c_pow_q1), t7_t3c_t1);\n },\n});\n// Finite field over r.\n// This particular field is not used anywhere in bls12-381, but it is still useful.\nconst Fr = mod.Field(BigInt('0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001'));\n// END OF CURVE FIELDS\n// HashToCurve\n// 3-isogeny map from E' to E https://www.rfc-editor.org/rfc/rfc9380#appendix-E.3\nconst isogenyMapG2 = isogenyMap(Fp2, [\n // xNum\n [\n [\n '0x5c759507e8e333ebb5b7a9a47d7ed8532c52d39fd3a042a88b58423c50ae15d5c2638e343d9c71c6238aaaaaaaa97d6',\n '0x5c759507e8e333ebb5b7a9a47d7ed8532c52d39fd3a042a88b58423c50ae15d5c2638e343d9c71c6238aaaaaaaa97d6',\n ],\n [\n '0x0',\n '0x11560bf17baa99bc32126fced787c88f984f87adf7ae0c7f9a208c6b4f20a4181472aaa9cb8d555526a9ffffffffc71a',\n ],\n [\n '0x11560bf17baa99bc32126fced787c88f984f87adf7ae0c7f9a208c6b4f20a4181472aaa9cb8d555526a9ffffffffc71e',\n '0x8ab05f8bdd54cde190937e76bc3e447cc27c3d6fbd7063fcd104635a790520c0a395554e5c6aaaa9354ffffffffe38d',\n ],\n [\n '0x171d6541fa38ccfaed6dea691f5fb614cb14b4e7f4e810aa22d6108f142b85757098e38d0f671c7188e2aaaaaaaa5ed1',\n '0x0',\n ],\n ],\n // xDen\n [\n [\n '0x0',\n '0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaa63',\n ],\n [\n '0xc',\n '0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaa9f',\n ],\n ['0x1', '0x0'], // LAST 1\n ],\n // yNum\n [\n [\n '0x1530477c7ab4113b59a4c18b076d11930f7da5d4a07f649bf54439d87d27e500fc8c25ebf8c92f6812cfc71c71c6d706',\n '0x1530477c7ab4113b59a4c18b076d11930f7da5d4a07f649bf54439d87d27e500fc8c25ebf8c92f6812cfc71c71c6d706',\n ],\n [\n '0x0',\n '0x5c759507e8e333ebb5b7a9a47d7ed8532c52d39fd3a042a88b58423c50ae15d5c2638e343d9c71c6238aaaaaaaa97be',\n ],\n [\n '0x11560bf17baa99bc32126fced787c88f984f87adf7ae0c7f9a208c6b4f20a4181472aaa9cb8d555526a9ffffffffc71c',\n '0x8ab05f8bdd54cde190937e76bc3e447cc27c3d6fbd7063fcd104635a790520c0a395554e5c6aaaa9354ffffffffe38f',\n ],\n [\n '0x124c9ad43b6cf79bfbf7043de3811ad0761b0f37a1e26286b0e977c69aa274524e79097a56dc4bd9e1b371c71c718b10',\n '0x0',\n ],\n ],\n // yDen\n [\n [\n '0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffa8fb',\n '0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffa8fb',\n ],\n [\n '0x0',\n '0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffa9d3',\n ],\n [\n '0x12',\n '0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaa99',\n ],\n ['0x1', '0x0'], // LAST 1\n ],\n].map((i) => i.map((pair) => Fp2.fromBigTuple(pair.map(BigInt)))));\n// 11-isogeny map from E' to E\nconst isogenyMapG1 = isogenyMap(Fp, [\n // xNum\n [\n '0x11a05f2b1e833340b809101dd99815856b303e88a2d7005ff2627b56cdb4e2c85610c2d5f2e62d6eaeac1662734649b7',\n '0x17294ed3e943ab2f0588bab22147a81c7c17e75b2f6a8417f565e33c70d1e86b4838f2a6f318c356e834eef1b3cb83bb',\n '0xd54005db97678ec1d1048c5d10a9a1bce032473295983e56878e501ec68e25c958c3e3d2a09729fe0179f9dac9edcb0',\n '0x1778e7166fcc6db74e0609d307e55412d7f5e4656a8dbf25f1b33289f1b330835336e25ce3107193c5b388641d9b6861',\n '0xe99726a3199f4436642b4b3e4118e5499db995a1257fb3f086eeb65982fac18985a286f301e77c451154ce9ac8895d9',\n '0x1630c3250d7313ff01d1201bf7a74ab5db3cb17dd952799b9ed3ab9097e68f90a0870d2dcae73d19cd13c1c66f652983',\n '0xd6ed6553fe44d296a3726c38ae652bfb11586264f0f8ce19008e218f9c86b2a8da25128c1052ecaddd7f225a139ed84',\n '0x17b81e7701abdbe2e8743884d1117e53356de5ab275b4db1a682c62ef0f2753339b7c8f8c8f475af9ccb5618e3f0c88e',\n '0x80d3cf1f9a78fc47b90b33563be990dc43b756ce79f5574a2c596c928c5d1de4fa295f296b74e956d71986a8497e317',\n '0x169b1f8e1bcfa7c42e0c37515d138f22dd2ecb803a0c5c99676314baf4bb1b7fa3190b2edc0327797f241067be390c9e',\n '0x10321da079ce07e272d8ec09d2565b0dfa7dccdde6787f96d50af36003b14866f69b771f8c285decca67df3f1605fb7b',\n '0x6e08c248e260e70bd1e962381edee3d31d79d7e22c837bc23c0bf1bc24c6b68c24b1b80b64d391fa9c8ba2e8ba2d229',\n ],\n // xDen\n [\n '0x8ca8d548cff19ae18b2e62f4bd3fa6f01d5ef4ba35b48ba9c9588617fc8ac62b558d681be343df8993cf9fa40d21b1c',\n '0x12561a5deb559c4348b4711298e536367041e8ca0cf0800c0126c2588c48bf5713daa8846cb026e9e5c8276ec82b3bff',\n '0xb2962fe57a3225e8137e629bff2991f6f89416f5a718cd1fca64e00b11aceacd6a3d0967c94fedcfcc239ba5cb83e19',\n '0x3425581a58ae2fec83aafef7c40eb545b08243f16b1655154cca8abc28d6fd04976d5243eecf5c4130de8938dc62cd8',\n '0x13a8e162022914a80a6f1d5f43e7a07dffdfc759a12062bb8d6b44e833b306da9bd29ba81f35781d539d395b3532a21e',\n '0xe7355f8e4e667b955390f7f0506c6e9395735e9ce9cad4d0a43bcef24b8982f7400d24bc4228f11c02df9a29f6304a5',\n '0x772caacf16936190f3e0c63e0596721570f5799af53a1894e2e073062aede9cea73b3538f0de06cec2574496ee84a3a',\n '0x14a7ac2a9d64a8b230b3f5b074cf01996e7f63c21bca68a81996e1cdf9822c580fa5b9489d11e2d311f7d99bbdcc5a5e',\n '0xa10ecf6ada54f825e920b3dafc7a3cce07f8d1d7161366b74100da67f39883503826692abba43704776ec3a79a1d641',\n '0x95fc13ab9e92ad4476d6e3eb3a56680f682b4ee96f7d03776df533978f31c1593174e4b4b7865002d6384d168ecdd0a',\n '0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n ],\n // yNum\n [\n '0x90d97c81ba24ee0259d1f094980dcfa11ad138e48a869522b52af6c956543d3cd0c7aee9b3ba3c2be9845719707bb33',\n '0x134996a104ee5811d51036d776fb46831223e96c254f383d0f906343eb67ad34d6c56711962fa8bfe097e75a2e41c696',\n '0xcc786baa966e66f4a384c86a3b49942552e2d658a31ce2c344be4b91400da7d26d521628b00523b8dfe240c72de1f6',\n '0x1f86376e8981c217898751ad8746757d42aa7b90eeb791c09e4a3ec03251cf9de405aba9ec61deca6355c77b0e5f4cb',\n '0x8cc03fdefe0ff135caf4fe2a21529c4195536fbe3ce50b879833fd221351adc2ee7f8dc099040a841b6daecf2e8fedb',\n '0x16603fca40634b6a2211e11db8f0a6a074a7d0d4afadb7bd76505c3d3ad5544e203f6326c95a807299b23ab13633a5f0',\n '0x4ab0b9bcfac1bbcb2c977d027796b3ce75bb8ca2be184cb5231413c4d634f3747a87ac2460f415ec961f8855fe9d6f2',\n '0x987c8d5333ab86fde9926bd2ca6c674170a05bfe3bdd81ffd038da6c26c842642f64550fedfe935a15e4ca31870fb29',\n '0x9fc4018bd96684be88c9e221e4da1bb8f3abd16679dc26c1e8b6e6a1f20cabe69d65201c78607a360370e577bdba587',\n '0xe1bba7a1186bdb5223abde7ada14a23c42a0ca7915af6fe06985e7ed1e4d43b9b3f7055dd4eba6f2bafaaebca731c30',\n '0x19713e47937cd1be0dfd0b8f1d43fb93cd2fcbcb6caf493fd1183e416389e61031bf3a5cce3fbafce813711ad011c132',\n '0x18b46a908f36f6deb918c143fed2edcc523559b8aaf0c2462e6bfe7f911f643249d9cdf41b44d606ce07c8a4d0074d8e',\n '0xb182cac101b9399d155096004f53f447aa7b12a3426b08ec02710e807b4633f06c851c1919211f20d4c04f00b971ef8',\n '0x245a394ad1eca9b72fc00ae7be315dc757b3b080d4c158013e6632d3c40659cc6cf90ad1c232a6442d9d3f5db980133',\n '0x5c129645e44cf1102a159f748c4a3fc5e673d81d7e86568d9ab0f5d396a7ce46ba1049b6579afb7866b1e715475224b',\n '0x15e6be4e990f03ce4ea50b3b42df2eb5cb181d8f84965a3957add4fa95af01b2b665027efec01c7704b456be69c8b604',\n ],\n // yDen\n [\n '0x16112c4c3a9c98b252181140fad0eae9601a6de578980be6eec3232b5be72e7a07f3688ef60c206d01479253b03663c1',\n '0x1962d75c2381201e1a0cbd6c43c348b885c84ff731c4d59ca4a10356f453e01f78a4260763529e3532f6102c2e49a03d',\n '0x58df3306640da276faaae7d6e8eb15778c4855551ae7f310c35a5dd279cd2eca6757cd636f96f891e2538b53dbf67f2',\n '0x16b7d288798e5395f20d23bf89edb4d1d115c5dbddbcd30e123da489e726af41727364f2c28297ada8d26d98445f5416',\n '0xbe0e079545f43e4b00cc912f8228ddcc6d19c9f0f69bbb0542eda0fc9dec916a20b15dc0fd2ededda39142311a5001d',\n '0x8d9e5297186db2d9fb266eaac783182b70152c65550d881c5ecd87b6f0f5a6449f38db9dfa9cce202c6477faaf9b7ac',\n '0x166007c08a99db2fc3ba8734ace9824b5eecfdfa8d0cf8ef5dd365bc400a0051d5fa9c01a58b1fb93d1a1399126a775c',\n '0x16a3ef08be3ea7ea03bcddfabba6ff6ee5a4375efa1f4fd7feb34fd206357132b920f5b00801dee460ee415a15812ed9',\n '0x1866c8ed336c61231a1be54fd1d74cc4f9fb0ce4c6af5920abc5750c4bf39b4852cfe2f7bb9248836b233d9d55535d4a',\n '0x167a55cda70a6e1cea820597d94a84903216f763e13d87bb5308592e7ea7d4fbc7385ea3d529b35e346ef48bb8913f55',\n '0x4d2f259eea405bd48f010a01ad2911d9c6dd039bb61a6290e591b36e636a5c871a5c29f4f83060400f8b49cba8f6aa8',\n '0xaccbb67481d033ff5852c1e48c50c477f94ff8aefce42d28c0f9a88cea7913516f968986f7ebbea9684b529e2561092',\n '0xad6b9514c767fe3c3613144b45f1496543346d98adf02267d5ceef9a00d9b8693000763e3b90ac11e99b138573345cc',\n '0x2660400eb2e4f3b628bdd0d53cd76f2bf565b94e72927c1cb748df27942480e420517bd8714cc80d1fadc1326ed06f7',\n '0xe0fa1d816ddc03e6b24255e0d7819c171c40f65e273b853324efcd6356caa205ca2f570f13497804415473a1d634b8f',\n '0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n ],\n].map((i) => i.map((j) => BigInt(j))));\n// SWU Map - Fp2 to G2': y² = x³ + 240i * x + 1012 + 1012i\nconst G2_SWU = mapToCurveSimpleSWU(Fp2, {\n A: Fp2.create({ c0: Fp.create(_0n), c1: Fp.create(BigInt(240)) }), // A' = 240 * I\n B: Fp2.create({ c0: Fp.create(BigInt(1012)), c1: Fp.create(BigInt(1012)) }), // B' = 1012 * (1 + I)\n Z: Fp2.create({ c0: Fp.create(BigInt(-2)), c1: Fp.create(BigInt(-1)) }), // Z: -(2 + I)\n});\n// Optimized SWU Map - Fp to G1\nconst G1_SWU = mapToCurveSimpleSWU(Fp, {\n A: Fp.create(BigInt('0x144698a3b8e9433d693a02c96d4982b0ea985383ee66a8d8e8981aefd881ac98936f8da0e0f97f5cf428082d584c1d')),\n B: Fp.create(BigInt('0x12e2908d11688030018b12e8753eee3b2016c1f0f24f4070a0b9c14fcef35ef55a23215a316ceaa5d1cc48e98e172be0')),\n Z: Fp.create(BigInt(11)),\n});\n// Endomorphisms (for fast cofactor clearing)\n// Ψ(P) endomorphism\nconst { G2psi, G2psi2 } = psiFrobenius(Fp, Fp2, Fp2.div(Fp2.ONE, Fp2.NONRESIDUE)); // 1/(u+1)\n// Default hash_to_field options are for hash to G2.\n//\n// Parameter definitions are in section 5.3 of the spec unless otherwise noted.\n// Parameter values come from section 8.8.2 of the spec.\n// https://www.rfc-editor.org/rfc/rfc9380#section-8.8.2\n//\n// Base field F is GF(p^m)\n// p = 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab\n// m = 2 (or 1 for G1 see section 8.8.1)\n// k = 128\nconst htfDefaults = Object.freeze({\n // DST: a domain separation tag\n // defined in section 2.2.5\n // Use utils.getDSTLabel(), utils.setDSTLabel(value)\n DST: 'BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_NUL_',\n encodeDST: 'BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_NUL_',\n // p: the characteristic of F\n // where F is a finite field of characteristic p and order q = p^m\n p: Fp.ORDER,\n // m: the extension degree of F, m >= 1\n // where F is a finite field of characteristic p and order q = p^m\n m: 2,\n // k: the target security level for the suite in bits\n // defined in section 5.1\n k: 128,\n // option to use a message that has already been processed by\n // expand_message_xmd\n expand: 'xmd',\n // Hash functions for: expand_message_xmd is appropriate for use with a\n // wide range of hash functions, including SHA-2, SHA-3, BLAKE2, and others.\n // BBS+ uses blake2: https://github.com/hyperledger/aries-framework-go/issues/2247\n hash: sha256,\n});\n// Encoding utils\n// Point on G1 curve: (x, y)\n// Compressed point of infinity\nconst COMPRESSED_ZERO = setMask(Fp.toBytes(_0n), { infinity: true, compressed: true }); // set compressed & point-at-infinity bits\nfunction parseMask(bytes) {\n // Copy, so we can remove mask data. It will be removed also later, when Fp.create will call modulo.\n bytes = bytes.slice();\n const mask = bytes[0] & 224;\n const compressed = !!((mask >> 7) & 1); // compression bit (0b1000_0000)\n const infinity = !!((mask >> 6) & 1); // point at infinity bit (0b0100_0000)\n const sort = !!((mask >> 5) & 1); // sort bit (0b0010_0000)\n bytes[0] &= 31; // clear mask (zero first 3 bits)\n return { compressed, infinity, sort, value: bytes };\n}\nfunction setMask(bytes, mask) {\n if (bytes[0] & 224)\n throw new Error('setMask: non-empty mask');\n if (mask.compressed)\n bytes[0] |= 128;\n if (mask.infinity)\n bytes[0] |= 64;\n if (mask.sort)\n bytes[0] |= 32;\n return bytes;\n}\nfunction signatureG1ToRawBytes(point) {\n point.assertValidity();\n const isZero = point.equals(bls12_381.G1.ProjectivePoint.ZERO);\n const { x, y } = point.toAffine();\n if (isZero)\n return COMPRESSED_ZERO.slice();\n const P = Fp.ORDER;\n const sort = Boolean((y * _2n) / P);\n return setMask(numberToBytesBE(x, Fp.BYTES), { compressed: true, sort });\n}\nfunction signatureG2ToRawBytes(point) {\n // NOTE: by some reasons it was missed in bls12-381, looks like bug\n point.assertValidity();\n const len = Fp.BYTES;\n if (point.equals(bls12_381.G2.ProjectivePoint.ZERO))\n return concatB(COMPRESSED_ZERO, numberToBytesBE(_0n, len));\n const { x, y } = point.toAffine();\n const { re: x0, im: x1 } = Fp2.reim(x);\n const { re: y0, im: y1 } = Fp2.reim(y);\n const tmp = y1 > _0n ? y1 * _2n : y0 * _2n;\n const sort = Boolean((tmp / Fp.ORDER) & _1n);\n const z2 = x0;\n return concatB(setMask(numberToBytesBE(x1, len), { sort, compressed: true }), numberToBytesBE(z2, len));\n}\n/**\n * bls12-381 pairing-friendly curve.\n * @example\n * import { bls12_381 as bls } from '@noble/curves/bls12-381';\n * // G1 keys, G2 signatures\n * const privateKey = '67d53f170b908cabb9eb326c3c337762d59289a8fec79f7bc9254b584b73265c';\n * const message = '64726e3da8';\n * const publicKey = bls.getPublicKey(privateKey);\n * const signature = bls.sign(message, privateKey);\n * const isValid = bls.verify(signature, message, publicKey);\n */\nexport const bls12_381 = bls({\n // Fields\n fields: {\n Fp,\n Fp2,\n Fp6,\n Fp12,\n Fr,\n },\n // G1 is the order-q subgroup of E1(Fp) : y² = x³ + 4, #E1(Fp) = h1q, where\n // characteristic; z + (z⁴ - z² + 1)(z - 1)²/3\n G1: {\n Fp,\n // cofactor; (z - 1)²/3\n h: BigInt('0x396c8c005555e1568c00aaab0000aaab'),\n // generator's coordinates\n // x = 3685416753713387016781088315183077757961620795782546409894578378688607592378376318836054947676345821548104185464507\n // y = 1339506544944476473020471379941921221584933875938349620426543736416511423956333506472724655353366534992391756441569\n Gx: BigInt('0x17f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb'),\n Gy: BigInt('0x08b3f481e3aaa0f1a09e30ed741d8ae4fcf5e095d5d00af600db18cb2c04b3edd03cc744a2888ae40caa232946c5e7e1'),\n a: Fp.ZERO,\n b: _4n,\n htfDefaults: { ...htfDefaults, m: 1, DST: 'BLS_SIG_BLS12381G1_XMD:SHA-256_SSWU_RO_NUL_' },\n wrapPrivateKey: true,\n allowInfinityPoint: true,\n // Checks is the point resides in prime-order subgroup.\n // point.isTorsionFree() should return true for valid points\n // It returns false for shitty points.\n // https://eprint.iacr.org/2021/1130.pdf\n isTorsionFree: (c, point) => {\n // φ endomorphism\n const cubicRootOfUnityModP = BigInt('0x5f19672fdf76ce51ba69c6076a0f77eaddb3a93be6f89688de17d813620a00022e01fffffffefffe');\n const phi = new c(Fp.mul(point.px, cubicRootOfUnityModP), point.py, point.pz);\n // todo: unroll\n const xP = point.multiplyUnsafe(BLS_X).negate(); // [x]P\n const u2P = xP.multiplyUnsafe(BLS_X); // [u2]P\n return u2P.equals(phi);\n // https://eprint.iacr.org/2019/814.pdf\n // (z² − 1)/3\n // const c1 = BigInt('0x396c8c005555e1560000000055555555');\n // const P = this;\n // const S = P.sigma();\n // const Q = S.double();\n // const S2 = S.sigma();\n // // [(z² − 1)/3](2σ(P) − P − σ²(P)) − σ²(P) = O\n // const left = Q.subtract(P).subtract(S2).multiplyUnsafe(c1);\n // const C = left.subtract(S2);\n // return C.isZero();\n },\n // Clear cofactor of G1\n // https://eprint.iacr.org/2019/403\n clearCofactor: (_c, point) => {\n // return this.multiplyUnsafe(CURVE.h);\n return point.multiplyUnsafe(BLS_X).add(point); // x*P + P\n },\n mapToCurve: (scalars) => {\n const { x, y } = G1_SWU(Fp.create(scalars[0]));\n return isogenyMapG1(x, y);\n },\n fromBytes: (bytes) => {\n const { compressed, infinity, sort, value } = parseMask(bytes);\n if (value.length === 48 && compressed) {\n // TODO: Fp.bytes\n const P = Fp.ORDER;\n const compressedValue = bytesToNumberBE(value);\n // Zero\n const x = Fp.create(compressedValue & Fp.MASK);\n if (infinity) {\n if (x !== _0n)\n throw new Error('G1: non-empty compressed point at infinity');\n return { x: _0n, y: _0n };\n }\n const right = Fp.add(Fp.pow(x, _3n), Fp.create(bls12_381.params.G1b)); // y² = x³ + b\n let y = Fp.sqrt(right);\n if (!y)\n throw new Error('invalid compressed G1 point');\n if ((y * _2n) / P !== BigInt(sort))\n y = Fp.neg(y);\n return { x: Fp.create(x), y: Fp.create(y) };\n }\n else if (value.length === 96 && !compressed) {\n // Check if the infinity flag is set\n const x = bytesToNumberBE(value.subarray(0, Fp.BYTES));\n const y = bytesToNumberBE(value.subarray(Fp.BYTES));\n if (infinity) {\n if (x !== _0n || y !== _0n)\n throw new Error('G1: non-empty point at infinity');\n return bls12_381.G1.ProjectivePoint.ZERO.toAffine();\n }\n return { x: Fp.create(x), y: Fp.create(y) };\n }\n else {\n throw new Error('invalid point G1, expected 48/96 bytes');\n }\n },\n toBytes: (c, point, isCompressed) => {\n const isZero = point.equals(c.ZERO);\n const { x, y } = point.toAffine();\n if (isCompressed) {\n if (isZero)\n return COMPRESSED_ZERO.slice();\n const P = Fp.ORDER;\n const sort = Boolean((y * _2n) / P);\n return setMask(numberToBytesBE(x, Fp.BYTES), { compressed: true, sort });\n }\n else {\n if (isZero) {\n // 2x PUBLIC_KEY_LENGTH\n const x = concatB(new Uint8Array([0x40]), new Uint8Array(2 * Fp.BYTES - 1));\n return x;\n }\n else {\n return concatB(numberToBytesBE(x, Fp.BYTES), numberToBytesBE(y, Fp.BYTES));\n }\n }\n },\n ShortSignature: {\n fromHex(hex) {\n const { infinity, sort, value } = parseMask(ensureBytes('signatureHex', hex, 48));\n const P = Fp.ORDER;\n const compressedValue = bytesToNumberBE(value);\n // Zero\n if (infinity)\n return bls12_381.G1.ProjectivePoint.ZERO;\n const x = Fp.create(compressedValue & Fp.MASK);\n const right = Fp.add(Fp.pow(x, _3n), Fp.create(bls12_381.params.G1b)); // y² = x³ + b\n let y = Fp.sqrt(right);\n if (!y)\n throw new Error('invalid compressed G1 point');\n const aflag = BigInt(sort);\n if ((y * _2n) / P !== aflag)\n y = Fp.neg(y);\n const point = bls12_381.G1.ProjectivePoint.fromAffine({ x, y });\n point.assertValidity();\n return point;\n },\n toRawBytes(point) {\n return signatureG1ToRawBytes(point);\n },\n toHex(point) {\n return bytesToHex(signatureG1ToRawBytes(point));\n },\n },\n },\n // G2 is the order-q subgroup of E2(Fp²) : y² = x³+4(1+√−1),\n // where Fp2 is Fp[√−1]/(x2+1). #E2(Fp2 ) = h2q, where\n // G² - 1\n // h2q\n G2: {\n Fp: Fp2,\n // cofactor\n h: BigInt('0x5d543a95414e7f1091d50792876a202cd91de4547085abaa68a205b2e5a7ddfa628f1cb4d9e82ef21537e293a6691ae1616ec6e786f0c70cf1c38e31c7238e5'),\n Gx: Fp2.fromBigTuple([\n BigInt('0x024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8'),\n BigInt('0x13e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e'),\n ]),\n // y =\n // 927553665492332455747201965776037880757740193453592970025027978793976877002675564980949289727957565575433344219582,\n // 1985150602287291935568054521177171638300868978215655730859378665066344726373823718423869104263333984641494340347905\n Gy: Fp2.fromBigTuple([\n BigInt('0x0ce5d527727d6e118cc9cdc6da2e351aadfd9baa8cbdd3a76d429a695160d12c923ac9cc3baca289e193548608b82801'),\n BigInt('0x0606c4a02ea734cc32acd2b02bc28b99cb3e287e85a763af267492ab572e99ab3f370d275cec1da1aaa9075ff05f79be'),\n ]),\n a: Fp2.ZERO,\n b: Fp2.fromBigTuple([_4n, _4n]),\n hEff: BigInt('0xbc69f08f2ee75b3584c6a0ea91b352888e2a8e9145ad7689986ff031508ffe1329c2f178731db956d82bf015d1212b02ec0ec69d7477c1ae954cbc06689f6a359894c0adebbf6b4e8020005aaa95551'),\n htfDefaults: { ...htfDefaults },\n wrapPrivateKey: true,\n allowInfinityPoint: true,\n mapToCurve: (scalars) => {\n const { x, y } = G2_SWU(Fp2.fromBigTuple(scalars));\n return isogenyMapG2(x, y);\n },\n // Checks is the point resides in prime-order subgroup.\n // point.isTorsionFree() should return true for valid points\n // It returns false for shitty points.\n // https://eprint.iacr.org/2021/1130.pdf\n isTorsionFree: (c, P) => {\n return P.multiplyUnsafe(BLS_X).negate().equals(G2psi(c, P)); // ψ(P) == [u](P)\n // Older version: https://eprint.iacr.org/2019/814.pdf\n // Ψ²(P) => Ψ³(P) => [z]Ψ³(P) where z = -x => [z]Ψ³(P) - Ψ²(P) + P == O\n // return P.psi2().psi().mulNegX().subtract(psi2).add(P).isZero();\n },\n // Maps the point into the prime-order subgroup G2.\n // clear_cofactor_bls12381_g2 from cfrg-hash-to-curve-11\n // https://eprint.iacr.org/2017/419.pdf\n // prettier-ignore\n clearCofactor: (c, P) => {\n const x = BLS_X;\n let t1 = P.multiplyUnsafe(x).negate(); // [-x]P\n let t2 = G2psi(c, P); // Ψ(P)\n let t3 = P.double(); // 2P\n t3 = G2psi2(c, t3); // Ψ²(2P)\n t3 = t3.subtract(t2); // Ψ²(2P) - Ψ(P)\n t2 = t1.add(t2); // [-x]P + Ψ(P)\n t2 = t2.multiplyUnsafe(x).negate(); // [x²]P - [x]Ψ(P)\n t3 = t3.add(t2); // Ψ²(2P) - Ψ(P) + [x²]P - [x]Ψ(P)\n t3 = t3.subtract(t1); // Ψ²(2P) - Ψ(P) + [x²]P - [x]Ψ(P) + [x]P\n const Q = t3.subtract(P); // Ψ²(2P) - Ψ(P) + [x²]P - [x]Ψ(P) + [x]P - 1P\n return Q; // [x²-x-1]P + [x-1]Ψ(P) + Ψ²(2P)\n },\n fromBytes: (bytes) => {\n const { compressed, infinity, sort, value } = parseMask(bytes);\n if ((!compressed && !infinity && sort) || // 00100000\n (!compressed && infinity && sort) || // 01100000\n (sort && infinity && compressed) // 11100000\n ) {\n throw new Error('invalid encoding flag: ' + (bytes[0] & 224));\n }\n const L = Fp.BYTES;\n const slc = (b, from, to) => bytesToNumberBE(b.slice(from, to));\n if (value.length === 96 && compressed) {\n const b = bls12_381.params.G2b;\n const P = Fp.ORDER;\n if (infinity) {\n // check that all bytes are 0\n if (value.reduce((p, c) => (p !== 0 ? c + 1 : c), 0) > 0) {\n throw new Error('invalid compressed G2 point');\n }\n return { x: Fp2.ZERO, y: Fp2.ZERO };\n }\n const x_1 = slc(value, 0, L);\n const x_0 = slc(value, L, 2 * L);\n const x = Fp2.create({ c0: Fp.create(x_0), c1: Fp.create(x_1) });\n const right = Fp2.add(Fp2.pow(x, _3n), b); // y² = x³ + 4 * (u+1) = x³ + b\n let y = Fp2.sqrt(right);\n const Y_bit = y.c1 === _0n ? (y.c0 * _2n) / P : (y.c1 * _2n) / P ? _1n : _0n;\n y = sort && Y_bit > 0 ? y : Fp2.neg(y);\n return { x, y };\n }\n else if (value.length === 192 && !compressed) {\n if (infinity) {\n if (value.reduce((p, c) => (p !== 0 ? c + 1 : c), 0) > 0) {\n throw new Error('invalid uncompressed G2 point');\n }\n return { x: Fp2.ZERO, y: Fp2.ZERO };\n }\n const x1 = slc(value, 0, L);\n const x0 = slc(value, L, 2 * L);\n const y1 = slc(value, 2 * L, 3 * L);\n const y0 = slc(value, 3 * L, 4 * L);\n return { x: Fp2.fromBigTuple([x0, x1]), y: Fp2.fromBigTuple([y0, y1]) };\n }\n else {\n throw new Error('invalid point G2, expected 96/192 bytes');\n }\n },\n toBytes: (c, point, isCompressed) => {\n const { BYTES: len, ORDER: P } = Fp;\n const isZero = point.equals(c.ZERO);\n const { x, y } = point.toAffine();\n if (isCompressed) {\n if (isZero)\n return concatB(COMPRESSED_ZERO, numberToBytesBE(_0n, len));\n const flag = Boolean(y.c1 === _0n ? (y.c0 * _2n) / P : (y.c1 * _2n) / P);\n return concatB(setMask(numberToBytesBE(x.c1, len), { compressed: true, sort: flag }), numberToBytesBE(x.c0, len));\n }\n else {\n if (isZero)\n return concatB(new Uint8Array([0x40]), new Uint8Array(4 * len - 1)); // bytes[0] |= 1 << 6;\n const { re: x0, im: x1 } = Fp2.reim(x);\n const { re: y0, im: y1 } = Fp2.reim(y);\n return concatB(numberToBytesBE(x1, len), numberToBytesBE(x0, len), numberToBytesBE(y1, len), numberToBytesBE(y0, len));\n }\n },\n Signature: {\n // TODO: Optimize, it's very slow because of sqrt.\n fromHex(hex) {\n const { infinity, sort, value } = parseMask(ensureBytes('signatureHex', hex));\n const P = Fp.ORDER;\n const half = value.length / 2;\n if (half !== 48 && half !== 96)\n throw new Error('invalid compressed signature length, must be 96 or 192');\n const z1 = bytesToNumberBE(value.slice(0, half));\n const z2 = bytesToNumberBE(value.slice(half));\n // Indicates the infinity point\n if (infinity)\n return bls12_381.G2.ProjectivePoint.ZERO;\n const x1 = Fp.create(z1 & Fp.MASK);\n const x2 = Fp.create(z2);\n const x = Fp2.create({ c0: x2, c1: x1 });\n const y2 = Fp2.add(Fp2.pow(x, _3n), bls12_381.params.G2b); // y² = x³ + 4\n // The slow part\n let y = Fp2.sqrt(y2);\n if (!y)\n throw new Error('Failed to find a square root');\n // Choose the y whose leftmost bit of the imaginary part is equal to the a_flag1\n // If y1 happens to be zero, then use the bit of y0\n const { re: y0, im: y1 } = Fp2.reim(y);\n const aflag1 = BigInt(sort);\n const isGreater = y1 > _0n && (y1 * _2n) / P !== aflag1;\n const isZero = y1 === _0n && (y0 * _2n) / P !== aflag1;\n if (isGreater || isZero)\n y = Fp2.neg(y);\n const point = bls12_381.G2.ProjectivePoint.fromAffine({ x, y });\n point.assertValidity();\n return point;\n },\n toRawBytes(point) {\n return signatureG2ToRawBytes(point);\n },\n toHex(point) {\n return bytesToHex(signatureG2ToRawBytes(point));\n },\n },\n },\n params: {\n ateLoopSize: BLS_X, // The BLS parameter x for BLS12-381\n r: Fr.ORDER, // order; z⁴ − z² + 1; CURVE.n from other curves\n xNegative: true,\n twistType: 'multiplicative',\n },\n htfDefaults,\n hash: sha256,\n randomBytes,\n});\n//# sourceMappingURL=bls12-381.js.map","import { bls12_381 } from '@noble/curves/bls12-381';\nimport { toHex } from './buffer';\nexport let verify;\n/**\n *\n * @param pk primary key: Uint8Array\n * @param sig signature: Uint8Array\n * @param msg message: Uint8Array\n * @returns boolean\n */\nexport function blsVerify(pk, sig, msg) {\n const primaryKey = typeof pk === 'string' ? pk : toHex(pk);\n const signature = typeof sig === 'string' ? sig : toHex(sig);\n const message = typeof msg === 'string' ? msg : toHex(msg);\n return bls12_381.verifyShortSignature(signature, message, primaryKey);\n}\n//# sourceMappingURL=bls.js.map","import { PipeArrayBuffer, lebDecode } from '@dfinity/candid';\nexport const decodeLeb128 = (buf) => {\n return lebDecode(new PipeArrayBuffer(buf));\n};\n// time is a LEB128-encoded Nat\nexport const decodeTime = (buf) => {\n const decoded = decodeLeb128(buf);\n // nanoseconds to milliseconds\n return new Date(Number(decoded) / 1000000);\n};\n//# sourceMappingURL=leb.js.map","import * as cbor from './cbor';\nimport { AgentError } from './errors';\nimport { hash } from './request_id';\nimport { bufEquals, concat, fromHex, toHex } from './utils/buffer';\nimport { Principal } from '@dfinity/principal';\nimport * as bls from './utils/bls';\nimport { decodeTime } from './utils/leb';\nimport { MANAGEMENT_CANISTER_ID } from './agent';\n/**\n * A certificate may fail verification with respect to the provided public key\n */\nexport class CertificateVerificationError extends AgentError {\n constructor(reason) {\n super(`Invalid certificate: ${reason}`);\n }\n}\nexport var NodeType;\n(function (NodeType) {\n NodeType[NodeType[\"Empty\"] = 0] = \"Empty\";\n NodeType[NodeType[\"Fork\"] = 1] = \"Fork\";\n NodeType[NodeType[\"Labeled\"] = 2] = \"Labeled\";\n NodeType[NodeType[\"Leaf\"] = 3] = \"Leaf\";\n NodeType[NodeType[\"Pruned\"] = 4] = \"Pruned\";\n})(NodeType || (NodeType = {}));\n/**\n * Make a human readable string out of a hash tree.\n * @param tree\n */\nexport function hashTreeToString(tree) {\n const indent = (s) => s\n .split('\\n')\n .map(x => ' ' + x)\n .join('\\n');\n function labelToString(label) {\n const decoder = new TextDecoder(undefined, { fatal: true });\n try {\n return JSON.stringify(decoder.decode(label));\n }\n catch (e) {\n return `data(...${label.byteLength} bytes)`;\n }\n }\n switch (tree[0]) {\n case NodeType.Empty:\n return '()';\n case NodeType.Fork: {\n if (tree[1] instanceof Array && tree[2] instanceof ArrayBuffer) {\n const left = hashTreeToString(tree[1]);\n const right = hashTreeToString(tree[2]);\n return `sub(\\n left:\\n${indent(left)}\\n---\\n right:\\n${indent(right)}\\n)`;\n }\n else {\n throw new Error('Invalid tree structure for fork');\n }\n }\n case NodeType.Labeled: {\n if (tree[1] instanceof ArrayBuffer && tree[2] instanceof ArrayBuffer) {\n const label = labelToString(tree[1]);\n const sub = hashTreeToString(tree[2]);\n return `label(\\n label:\\n${indent(label)}\\n sub:\\n${indent(sub)}\\n)`;\n }\n else {\n throw new Error('Invalid tree structure for labeled');\n }\n }\n case NodeType.Leaf: {\n if (!tree[1]) {\n throw new Error('Invalid tree structure for leaf');\n }\n else if (Array.isArray(tree[1])) {\n return JSON.stringify(tree[1]);\n }\n return `leaf(...${tree[1].byteLength} bytes)`;\n }\n case NodeType.Pruned: {\n if (!tree[1]) {\n throw new Error('Invalid tree structure for pruned');\n }\n else if (Array.isArray(tree[1])) {\n return JSON.stringify(tree[1]);\n }\n return `pruned(${toHex(new Uint8Array(tree[1]))}`;\n }\n default: {\n return `unknown(${JSON.stringify(tree[0])})`;\n }\n }\n}\nfunction isBufferGreaterThan(a, b) {\n const a8 = new Uint8Array(a);\n const b8 = new Uint8Array(b);\n for (let i = 0; i < a8.length; i++) {\n if (a8[i] > b8[i]) {\n return true;\n }\n }\n return false;\n}\nexport class Certificate {\n constructor(certificate, _rootKey, _canisterId, _blsVerify, \n // Default to 5 minutes\n _maxAgeInMinutes = 5) {\n this._rootKey = _rootKey;\n this._canisterId = _canisterId;\n this._blsVerify = _blsVerify;\n this._maxAgeInMinutes = _maxAgeInMinutes;\n this.cert = cbor.decode(new Uint8Array(certificate));\n }\n /**\n * Create a new instance of a certificate, automatically verifying it. Throws a\n * CertificateVerificationError if the certificate cannot be verified.\n * @constructs Certificate\n * @param {CreateCertificateOptions} options {@link CreateCertificateOptions}\n * @param {ArrayBuffer} options.certificate The bytes of the certificate\n * @param {ArrayBuffer} options.rootKey The root key to verify against\n * @param {Principal} options.canisterId The effective or signing canister ID\n * @param {number} options.maxAgeInMinutes The maximum age of the certificate in minutes. Default is 5 minutes.\n * @throws {CertificateVerificationError}\n */\n static async create(options) {\n const cert = Certificate.createUnverified(options);\n await cert.verify();\n return cert;\n }\n static createUnverified(options) {\n let blsVerify = options.blsVerify;\n if (!blsVerify) {\n blsVerify = bls.blsVerify;\n }\n return new Certificate(options.certificate, options.rootKey, options.canisterId, blsVerify, options.maxAgeInMinutes);\n }\n lookup(path) {\n // constrain the type of the result, so that empty HashTree is undefined\n return lookup_path(path, this.cert.tree);\n }\n lookup_label(label) {\n return this.lookup([label]);\n }\n async verify() {\n const rootHash = await reconstruct(this.cert.tree);\n const derKey = await this._checkDelegationAndGetKey(this.cert.delegation);\n const sig = this.cert.signature;\n const key = extractDER(derKey);\n const msg = concat(domain_sep('ic-state-root'), rootHash);\n let sigVer = false;\n const lookupTime = lookupResultToBuffer(this.lookup(['time']));\n if (!lookupTime) {\n // Should never happen - time is always present in IC certificates\n throw new CertificateVerificationError('Certificate does not contain a time');\n }\n const FIVE_MINUTES_IN_MSEC = 5 * 60 * 1000;\n const MAX_AGE_IN_MSEC = this._maxAgeInMinutes * 60 * 1000;\n const now = Date.now();\n const earliestCertificateTime = now - MAX_AGE_IN_MSEC;\n const fiveMinutesFromNow = now + FIVE_MINUTES_IN_MSEC;\n const certTime = decodeTime(lookupTime);\n if (certTime.getTime() < earliestCertificateTime) {\n throw new CertificateVerificationError(`Certificate is signed more than ${this._maxAgeInMinutes} minutes in the past. Certificate time: ` +\n certTime.toISOString() +\n ' Current time: ' +\n new Date(now).toISOString());\n }\n else if (certTime.getTime() > fiveMinutesFromNow) {\n throw new CertificateVerificationError('Certificate is signed more than 5 minutes in the future. Certificate time: ' +\n certTime.toISOString() +\n ' Current time: ' +\n new Date(now).toISOString());\n }\n try {\n sigVer = await this._blsVerify(new Uint8Array(key), new Uint8Array(sig), new Uint8Array(msg));\n }\n catch (err) {\n sigVer = false;\n }\n if (!sigVer) {\n throw new CertificateVerificationError('Signature verification failed');\n }\n }\n async _checkDelegationAndGetKey(d) {\n if (!d) {\n return this._rootKey;\n }\n const cert = await Certificate.createUnverified({\n certificate: d.certificate,\n rootKey: this._rootKey,\n canisterId: this._canisterId,\n blsVerify: this._blsVerify,\n // Do not check max age for delegation certificates\n maxAgeInMinutes: Infinity,\n });\n if (cert.cert.delegation) {\n throw new CertificateVerificationError('Delegation certificates cannot be nested');\n }\n await cert.verify();\n if (this._canisterId.toString() !== MANAGEMENT_CANISTER_ID) {\n const canisterInRange = check_canister_ranges({\n canisterId: this._canisterId,\n subnetId: Principal.fromUint8Array(new Uint8Array(d.subnet_id)),\n tree: cert.cert.tree,\n });\n if (!canisterInRange) {\n throw new CertificateVerificationError(`Canister ${this._canisterId} not in range of delegations for subnet 0x${toHex(d.subnet_id)}`);\n }\n }\n const publicKeyLookup = lookupResultToBuffer(cert.lookup(['subnet', d.subnet_id, 'public_key']));\n if (!publicKeyLookup) {\n throw new Error(`Could not find subnet key for subnet 0x${toHex(d.subnet_id)}`);\n }\n return publicKeyLookup;\n }\n}\nconst DER_PREFIX = fromHex('308182301d060d2b0601040182dc7c0503010201060c2b0601040182dc7c05030201036100');\nconst KEY_LENGTH = 96;\nfunction extractDER(buf) {\n const expectedLength = DER_PREFIX.byteLength + KEY_LENGTH;\n if (buf.byteLength !== expectedLength) {\n throw new TypeError(`BLS DER-encoded public key must be ${expectedLength} bytes long`);\n }\n const prefix = buf.slice(0, DER_PREFIX.byteLength);\n if (!bufEquals(prefix, DER_PREFIX)) {\n throw new TypeError(`BLS DER-encoded public key is invalid. Expect the following prefix: ${DER_PREFIX}, but get ${prefix}`);\n }\n return buf.slice(DER_PREFIX.byteLength);\n}\n/**\n * utility function to constrain the type of a path\n * @param {ArrayBuffer | HashTree | undefined} result - the result of a lookup\n * @returns ArrayBuffer or Undefined\n */\nexport function lookupResultToBuffer(result) {\n if (result.status !== LookupStatus.Found) {\n return undefined;\n }\n if (result.value instanceof ArrayBuffer) {\n return result.value;\n }\n if (result.value instanceof Uint8Array) {\n return result.value.buffer;\n }\n return undefined;\n}\n/**\n * @param t\n */\nexport async function reconstruct(t) {\n switch (t[0]) {\n case NodeType.Empty:\n return hash(domain_sep('ic-hashtree-empty'));\n case NodeType.Pruned:\n return t[1];\n case NodeType.Leaf:\n return hash(concat(domain_sep('ic-hashtree-leaf'), t[1]));\n case NodeType.Labeled:\n return hash(concat(domain_sep('ic-hashtree-labeled'), t[1], await reconstruct(t[2])));\n case NodeType.Fork:\n return hash(concat(domain_sep('ic-hashtree-fork'), await reconstruct(t[1]), await reconstruct(t[2])));\n default:\n throw new Error('unreachable');\n }\n}\nfunction domain_sep(s) {\n const len = new Uint8Array([s.length]);\n const str = new TextEncoder().encode(s);\n return concat(len, str);\n}\nexport var LookupStatus;\n(function (LookupStatus) {\n LookupStatus[\"Unknown\"] = \"unknown\";\n LookupStatus[\"Absent\"] = \"absent\";\n LookupStatus[\"Found\"] = \"found\";\n})(LookupStatus || (LookupStatus = {}));\nvar LabelLookupStatus;\n(function (LabelLookupStatus) {\n LabelLookupStatus[\"Less\"] = \"less\";\n LabelLookupStatus[\"Greater\"] = \"greater\";\n})(LabelLookupStatus || (LabelLookupStatus = {}));\nexport function lookup_path(path, tree) {\n if (path.length === 0) {\n switch (tree[0]) {\n case NodeType.Leaf: {\n if (!tree[1]) {\n throw new Error('Invalid tree structure for leaf');\n }\n if (tree[1] instanceof ArrayBuffer) {\n return {\n status: LookupStatus.Found,\n value: tree[1],\n };\n }\n if (tree[1] instanceof Uint8Array) {\n return {\n status: LookupStatus.Found,\n value: tree[1].buffer,\n };\n }\n return {\n status: LookupStatus.Found,\n value: tree[1],\n };\n }\n default: {\n return {\n status: LookupStatus.Found,\n value: tree,\n };\n }\n }\n }\n const label = typeof path[0] === 'string' ? new TextEncoder().encode(path[0]) : path[0];\n const lookupResult = find_label(label, tree);\n switch (lookupResult.status) {\n case LookupStatus.Found: {\n return lookup_path(path.slice(1), lookupResult.value);\n }\n case LabelLookupStatus.Greater:\n case LabelLookupStatus.Less: {\n return {\n status: LookupStatus.Absent,\n };\n }\n default: {\n return lookupResult;\n }\n }\n}\n/**\n * If the tree is a fork, flatten it into an array of trees\n * @param t - the tree to flatten\n * @returns HashTree[] - the flattened tree\n */\nexport function flatten_forks(t) {\n switch (t[0]) {\n case NodeType.Empty:\n return [];\n case NodeType.Fork:\n return flatten_forks(t[1]).concat(flatten_forks(t[2]));\n default:\n return [t];\n }\n}\nexport function find_label(label, tree) {\n switch (tree[0]) {\n // if we have a labelled node, compare the node's label to the one we are\n // looking for\n case NodeType.Labeled:\n // if the label we're searching for is greater than this node's label,\n // we need to keep searching\n if (isBufferGreaterThan(label, tree[1])) {\n return {\n status: LabelLookupStatus.Greater,\n };\n }\n // if the label we're searching for is equal this node's label, we can\n // stop searching and return the found node\n if (bufEquals(label, tree[1])) {\n return {\n status: LookupStatus.Found,\n value: tree[2],\n };\n }\n // if the label we're searching for is not greater than or equal to this\n // node's label, then it's less than this node's label, and we can stop\n // searching because we've looked too far\n return {\n status: LabelLookupStatus.Less,\n };\n // if we have a fork node, we need to search both sides, starting with the left\n case NodeType.Fork:\n // search in the left node\n const leftLookupResult = find_label(label, tree[1]);\n switch (leftLookupResult.status) {\n // if the label we're searching for is greater than the left node lookup,\n // we need to search the right node\n case LabelLookupStatus.Greater: {\n const rightLookupResult = find_label(label, tree[2]);\n // if the label we're searching for is less than the right node lookup,\n // then we can stop searching and say that the label is provably Absent\n if (rightLookupResult.status === LabelLookupStatus.Less) {\n return {\n status: LookupStatus.Absent,\n };\n }\n // if the label we're searching for is less than or equal to the right\n // node lookup, then we let the caller handle it\n return rightLookupResult;\n }\n // if the left node returns an uncertain result, we need to search the\n // right node\n case LookupStatus.Unknown: {\n let rightLookupResult = find_label(label, tree[2]);\n // if the label we're searching for is less than the right node lookup,\n // then we also need to return an uncertain result\n if (rightLookupResult.status === LabelLookupStatus.Less) {\n return {\n status: LookupStatus.Unknown,\n };\n }\n // if the label we're searching for is less than or equal to the right\n // node lookup, then we let the caller handle it\n return rightLookupResult;\n }\n // if the label we're searching for is not greater than the left node\n // lookup, or the result is not uncertain, we stop searching and return\n // whatever the result of the left node lookup was, which can be either\n // Found or Absent\n default: {\n return leftLookupResult;\n }\n }\n // if we encounter a Pruned node, we can't know for certain if the label\n // we're searching for is present or not\n case NodeType.Pruned:\n return {\n status: LookupStatus.Unknown,\n };\n // if the current node is Empty, or a Leaf, we can stop searching because\n // we know for sure that the label we're searching for is not present\n default:\n return {\n status: LookupStatus.Absent,\n };\n }\n}\n/**\n * Check if a canister falls within a range of canisters\n * @param canisterId Principal\n * @param ranges [Principal, Principal][]\n * @returns\n */\nexport function check_canister_ranges(params) {\n const { canisterId, subnetId, tree } = params;\n const rangeLookup = lookup_path(['subnet', subnetId.toUint8Array(), 'canister_ranges'], tree);\n if (rangeLookup.status !== LookupStatus.Found || !(rangeLookup.value instanceof ArrayBuffer)) {\n throw new Error(`Could not find canister ranges for subnet ${subnetId}`);\n }\n const ranges_arr = cbor.decode(rangeLookup.value);\n const ranges = ranges_arr.map(v => [\n Principal.fromUint8Array(v[0]),\n Principal.fromUint8Array(v[1]),\n ]);\n const canisterInRange = ranges.some(r => r[0].ltEq(canisterId) && r[1].gtEq(canisterId));\n return canisterInRange;\n}\n//# sourceMappingURL=certificate.js.map","/** @module CanisterStatus */\nimport { Principal } from '@dfinity/principal';\nimport { AgentError } from '../errors';\nimport { Certificate, flatten_forks, check_canister_ranges, LookupStatus, lookup_path, lookupResultToBuffer, } from '../certificate';\nimport { toHex } from '../utils/buffer';\nimport * as Cbor from '../cbor';\nimport { decodeLeb128, decodeTime } from '../utils/leb';\n/**\n * Interface to define a custom path. Nested paths will be represented as individual buffers, and can be created from text using TextEncoder.\n * @param {string} key the key to use to access the returned value in the canisterStatus map\n * @param {ArrayBuffer[]} path the path to the desired value, represented as an array of buffers\n * @param {string} decodeStrategy the strategy to use to decode the returned value\n */\nexport class CustomPath {\n constructor(key, path, decodeStrategy) {\n this.key = key;\n this.path = path;\n this.decodeStrategy = decodeStrategy;\n }\n}\n/**\n * Request information in the request_status state tree for a given canister.\n * Can be used to request information about the canister's controllers, time, module hash, candid interface, and more.\n * @param {CanisterStatusOptions} options {@link CanisterStatusOptions}\n * @param {CanisterStatusOptions['canisterId']} options.canisterId {@link Principal}\n * @param {CanisterStatusOptions['agent']} options.agent {@link HttpAgent} optional authenticated agent to use to make the canister request. Useful for accessing private metadata under icp:private\n * @param {CanisterStatusOptions['paths']} options.paths {@link Path[]}\n * @returns {Status} object populated with data from the requested paths\n * @example\n * const status = await canisterStatus({\n * paths: ['controllers', 'candid'],\n * ...options\n * });\n *\n * const controllers = status.get('controllers');\n */\nexport const request = async (options) => {\n const { agent, paths } = options;\n const canisterId = Principal.from(options.canisterId);\n const uniquePaths = [...new Set(paths)];\n // Map path options to their correct formats\n const encodedPaths = uniquePaths.map(path => {\n return encodePath(path, canisterId);\n });\n const status = new Map();\n const promises = uniquePaths.map((path, index) => {\n return (async () => {\n var _a;\n try {\n const response = await agent.readState(canisterId, {\n paths: [encodedPaths[index]],\n });\n const cert = await Certificate.create({\n certificate: response.certificate,\n rootKey: agent.rootKey,\n canisterId: canisterId,\n });\n const lookup = (cert, path) => {\n if (path === 'subnet') {\n const data = fetchNodeKeys(response.certificate, canisterId, agent.rootKey);\n return {\n path: path,\n data,\n };\n }\n else {\n return {\n path: path,\n data: lookupResultToBuffer(cert.lookup(encodePath(path, canisterId))),\n };\n }\n };\n // must pass in the rootKey if we have no delegation\n const { path, data } = lookup(cert, uniquePaths[index]);\n if (!data) {\n // Typically, the cert lookup will throw\n console.warn(`Expected to find result for path ${path}, but instead found nothing.`);\n if (typeof path === 'string') {\n status.set(path, null);\n }\n else {\n status.set(path.key, null);\n }\n }\n else {\n switch (path) {\n case 'time': {\n status.set(path, decodeTime(data));\n break;\n }\n case 'controllers': {\n status.set(path, decodeControllers(data));\n break;\n }\n case 'module_hash': {\n status.set(path, decodeHex(data));\n break;\n }\n case 'subnet': {\n status.set(path, data);\n break;\n }\n case 'candid': {\n status.set(path, new TextDecoder().decode(data));\n break;\n }\n default: {\n // Check for CustomPath signature\n if (typeof path !== 'string' && 'key' in path && 'path' in path) {\n switch (path.decodeStrategy) {\n case 'raw':\n status.set(path.key, data);\n break;\n case 'leb128': {\n status.set(path.key, decodeLeb128(data));\n break;\n }\n case 'cbor': {\n status.set(path.key, decodeCbor(data));\n break;\n }\n case 'hex': {\n status.set(path.key, decodeHex(data));\n break;\n }\n case 'utf-8': {\n status.set(path.key, decodeUtf8(data));\n }\n }\n }\n }\n }\n }\n }\n catch (error) {\n // Break on signature verification errors\n if ((_a = error === null || error === void 0 ? void 0 : error.message) === null || _a === void 0 ? void 0 : _a.includes('Invalid certificate')) {\n throw new AgentError(error.message);\n }\n if (typeof path !== 'string' && 'key' in path && 'path' in path) {\n status.set(path.key, null);\n }\n else {\n status.set(path, null);\n }\n console.group();\n console.warn(`Expected to find result for path ${path}, but instead found nothing.`);\n console.warn(error);\n console.groupEnd();\n }\n })();\n });\n // Fetch all values separately, as each option can fail\n await Promise.all(promises);\n return status;\n};\nexport const fetchNodeKeys = (certificate, canisterId, root_key) => {\n if (!canisterId._isPrincipal) {\n throw new Error('Invalid canisterId');\n }\n const cert = Cbor.decode(new Uint8Array(certificate));\n const tree = cert.tree;\n let delegation = cert.delegation;\n let subnetId;\n if (delegation && delegation.subnet_id) {\n subnetId = Principal.fromUint8Array(new Uint8Array(delegation.subnet_id));\n }\n // On local replica, with System type subnet, there is no delegation\n else if (!delegation && typeof root_key !== 'undefined') {\n subnetId = Principal.selfAuthenticating(new Uint8Array(root_key));\n delegation = {\n subnet_id: subnetId.toUint8Array(),\n certificate: new ArrayBuffer(0),\n };\n }\n // otherwise use default NNS subnet id\n else {\n subnetId = Principal.selfAuthenticating(Principal.fromText('tdb26-jop6k-aogll-7ltgs-eruif-6kk7m-qpktf-gdiqx-mxtrf-vb5e6-eqe').toUint8Array());\n delegation = {\n subnet_id: subnetId.toUint8Array(),\n certificate: new ArrayBuffer(0),\n };\n }\n const canisterInRange = check_canister_ranges({ canisterId, subnetId, tree });\n if (!canisterInRange) {\n throw new Error('Canister not in range');\n }\n const subnetLookupResult = lookup_path(['subnet', delegation.subnet_id, 'node'], tree);\n if (subnetLookupResult.status !== LookupStatus.Found) {\n throw new Error('Node not found');\n }\n if (subnetLookupResult.value instanceof ArrayBuffer) {\n throw new Error('Invalid node tree');\n }\n const nodeForks = flatten_forks(subnetLookupResult.value);\n const nodeKeys = new Map();\n nodeForks.forEach(fork => {\n const node_id = Principal.from(new Uint8Array(fork[1])).toText();\n const publicKeyLookupResult = lookup_path(['public_key'], fork[2]);\n if (publicKeyLookupResult.status !== LookupStatus.Found) {\n throw new Error('Public key not found');\n }\n const derEncodedPublicKey = publicKeyLookupResult.value;\n if (derEncodedPublicKey.byteLength !== 44) {\n throw new Error('Invalid public key length');\n }\n else {\n nodeKeys.set(node_id, derEncodedPublicKey);\n }\n });\n return {\n subnetId: Principal.fromUint8Array(new Uint8Array(delegation.subnet_id)).toText(),\n nodeKeys,\n };\n};\nexport const encodePath = (path, canisterId) => {\n const encoder = new TextEncoder();\n const encode = (arg) => {\n return new DataView(encoder.encode(arg).buffer).buffer;\n };\n const canisterBuffer = new DataView(canisterId.toUint8Array().buffer).buffer;\n switch (path) {\n case 'time':\n return [encode('time')];\n case 'controllers':\n return [encode('canister'), canisterBuffer, encode('controllers')];\n case 'module_hash':\n return [encode('canister'), canisterBuffer, encode('module_hash')];\n case 'subnet':\n return [encode('subnet')];\n case 'candid':\n return [encode('canister'), canisterBuffer, encode('metadata'), encode('candid:service')];\n default: {\n // Check for CustomPath signature\n if ('key' in path && 'path' in path) {\n // For simplified metadata queries\n if (typeof path['path'] === 'string' || path['path'] instanceof ArrayBuffer) {\n const metaPath = path.path;\n const encoded = typeof metaPath === 'string' ? encode(metaPath) : metaPath;\n return [encode('canister'), canisterBuffer, encode('metadata'), encoded];\n // For non-metadata, return the provided custompath\n }\n else {\n return path['path'];\n }\n }\n }\n }\n throw new Error(`An unexpeected error was encountered while encoding your path for canister status. Please ensure that your path, ${path} was formatted correctly.`);\n};\nconst decodeHex = (buf) => {\n return toHex(buf);\n};\nconst decodeCbor = (buf) => {\n return Cbor.decode(buf);\n};\nconst decodeUtf8 = (buf) => {\n return new TextDecoder().decode(buf);\n};\n// Controllers are CBOR-encoded buffers\nconst decodeControllers = (buf) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const controllersRaw = decodeCbor(buf);\n return controllersRaw.map((buf) => {\n return Principal.fromUint8Array(new Uint8Array(buf));\n });\n};\n//# sourceMappingURL=index.js.map","/**\n * Twisted Edwards curve. The formula is: ax² + y² = 1 + dx²y².\n * For design rationale of types / exports, see weierstrass module documentation.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { validateBasic, wNAF, pippenger, } from './curve.js';\nimport { mod, Field } from './modular.js';\nimport * as ut from './utils.js';\nimport { ensureBytes, memoized, abool } from './utils.js';\n// Be friendly to bad ECMAScript parsers by not using bigint literals\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _8n = BigInt(8);\n// verification rule is either zip215 or rfc8032 / nist186-5. Consult fromHex:\nconst VERIFY_DEFAULT = { zip215: true };\nfunction validateOpts(curve) {\n const opts = validateBasic(curve);\n ut.validateObject(curve, {\n hash: 'function',\n a: 'bigint',\n d: 'bigint',\n randomBytes: 'function',\n }, {\n adjustScalarBytes: 'function',\n domain: 'function',\n uvRatio: 'function',\n mapToCurve: 'function',\n });\n // Set defaults\n return Object.freeze({ ...opts });\n}\n/**\n * Creates Twisted Edwards curve with EdDSA signatures.\n * @example\n * import { Field } from '@noble/curves/abstract/modular';\n * // Before that, define BigInt-s: a, d, p, n, Gx, Gy, h\n * const curve = twistedEdwards({ a, d, Fp: Field(p), n, Gx, Gy, h })\n */\nexport function twistedEdwards(curveDef) {\n const CURVE = validateOpts(curveDef);\n const { Fp, n: CURVE_ORDER, prehash: prehash, hash: cHash, randomBytes, nByteLength, h: cofactor, } = CURVE;\n // Important:\n // There are some places where Fp.BYTES is used instead of nByteLength.\n // So far, everything has been tested with curves of Fp.BYTES == nByteLength.\n // TODO: test and find curves which behave otherwise.\n const MASK = _2n << (BigInt(nByteLength * 8) - _1n);\n const modP = Fp.create; // Function overrides\n const Fn = Field(CURVE.n, CURVE.nBitLength);\n // sqrt(u/v)\n const uvRatio = CURVE.uvRatio ||\n ((u, v) => {\n try {\n return { isValid: true, value: Fp.sqrt(u * Fp.inv(v)) };\n }\n catch (e) {\n return { isValid: false, value: _0n };\n }\n });\n const adjustScalarBytes = CURVE.adjustScalarBytes || ((bytes) => bytes); // NOOP\n const domain = CURVE.domain ||\n ((data, ctx, phflag) => {\n abool('phflag', phflag);\n if (ctx.length || phflag)\n throw new Error('Contexts/pre-hash are not supported');\n return data;\n }); // NOOP\n // 0 <= n < MASK\n // Coordinates larger than Fp.ORDER are allowed for zip215\n function aCoordinate(title, n) {\n ut.aInRange('coordinate ' + title, n, _0n, MASK);\n }\n function assertPoint(other) {\n if (!(other instanceof Point))\n throw new Error('ExtendedPoint expected');\n }\n // Converts Extended point to default (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n const toAffineMemo = memoized((p, iz) => {\n const { ex: x, ey: y, ez: z } = p;\n const is0 = p.is0();\n if (iz == null)\n iz = is0 ? _8n : Fp.inv(z); // 8 was chosen arbitrarily\n const ax = modP(x * iz);\n const ay = modP(y * iz);\n const zz = modP(z * iz);\n if (is0)\n return { x: _0n, y: _1n };\n if (zz !== _1n)\n throw new Error('invZ was invalid');\n return { x: ax, y: ay };\n });\n const assertValidMemo = memoized((p) => {\n const { a, d } = CURVE;\n if (p.is0())\n throw new Error('bad point: ZERO'); // TODO: optimize, with vars below?\n // Equation in affine coordinates: ax² + y² = 1 + dx²y²\n // Equation in projective coordinates (X/Z, Y/Z, Z): (aX² + Y²)Z² = Z⁴ + dX²Y²\n const { ex: X, ey: Y, ez: Z, et: T } = p;\n const X2 = modP(X * X); // X²\n const Y2 = modP(Y * Y); // Y²\n const Z2 = modP(Z * Z); // Z²\n const Z4 = modP(Z2 * Z2); // Z⁴\n const aX2 = modP(X2 * a); // aX²\n const left = modP(Z2 * modP(aX2 + Y2)); // (aX² + Y²)Z²\n const right = modP(Z4 + modP(d * modP(X2 * Y2))); // Z⁴ + dX²Y²\n if (left !== right)\n throw new Error('bad point: equation left != right (1)');\n // In Extended coordinates we also have T, which is x*y=T/Z: check X*Y == Z*T\n const XY = modP(X * Y);\n const ZT = modP(Z * T);\n if (XY !== ZT)\n throw new Error('bad point: equation left != right (2)');\n return true;\n });\n // Extended Point works in extended coordinates: (x, y, z, t) ∋ (x=x/z, y=y/z, t=xy).\n // https://en.wikipedia.org/wiki/Twisted_Edwards_curve#Extended_coordinates\n class Point {\n constructor(ex, ey, ez, et) {\n this.ex = ex;\n this.ey = ey;\n this.ez = ez;\n this.et = et;\n aCoordinate('x', ex);\n aCoordinate('y', ey);\n aCoordinate('z', ez);\n aCoordinate('t', et);\n Object.freeze(this);\n }\n get x() {\n return this.toAffine().x;\n }\n get y() {\n return this.toAffine().y;\n }\n static fromAffine(p) {\n if (p instanceof Point)\n throw new Error('extended point not allowed');\n const { x, y } = p || {};\n aCoordinate('x', x);\n aCoordinate('y', y);\n return new Point(x, y, _1n, modP(x * y));\n }\n static normalizeZ(points) {\n const toInv = Fp.invertBatch(points.map((p) => p.ez));\n return points.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);\n }\n // Multiscalar Multiplication\n static msm(points, scalars) {\n return pippenger(Point, Fn, points, scalars);\n }\n // \"Private method\", don't use it directly\n _setWindowSize(windowSize) {\n wnaf.setWindowSize(this, windowSize);\n }\n // Not required for fromHex(), which always creates valid points.\n // Could be useful for fromAffine().\n assertValidity() {\n assertValidMemo(this);\n }\n // Compare one point to another.\n equals(other) {\n assertPoint(other);\n const { ex: X1, ey: Y1, ez: Z1 } = this;\n const { ex: X2, ey: Y2, ez: Z2 } = other;\n const X1Z2 = modP(X1 * Z2);\n const X2Z1 = modP(X2 * Z1);\n const Y1Z2 = modP(Y1 * Z2);\n const Y2Z1 = modP(Y2 * Z1);\n return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n }\n is0() {\n return this.equals(Point.ZERO);\n }\n negate() {\n // Flips point sign to a negative one (-x, y in affine coords)\n return new Point(modP(-this.ex), this.ey, this.ez, modP(-this.et));\n }\n // Fast algo for doubling Extended Point.\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#doubling-dbl-2008-hwcd\n // Cost: 4M + 4S + 1*a + 6add + 1*2.\n double() {\n const { a } = CURVE;\n const { ex: X1, ey: Y1, ez: Z1 } = this;\n const A = modP(X1 * X1); // A = X12\n const B = modP(Y1 * Y1); // B = Y12\n const C = modP(_2n * modP(Z1 * Z1)); // C = 2*Z12\n const D = modP(a * A); // D = a*A\n const x1y1 = X1 + Y1;\n const E = modP(modP(x1y1 * x1y1) - A - B); // E = (X1+Y1)2-A-B\n const G = D + B; // G = D+B\n const F = G - C; // F = G-C\n const H = D - B; // H = D-B\n const X3 = modP(E * F); // X3 = E*F\n const Y3 = modP(G * H); // Y3 = G*H\n const T3 = modP(E * H); // T3 = E*H\n const Z3 = modP(F * G); // Z3 = F*G\n return new Point(X3, Y3, Z3, T3);\n }\n // Fast algo for adding 2 Extended Points.\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#addition-add-2008-hwcd\n // Cost: 9M + 1*a + 1*d + 7add.\n add(other) {\n assertPoint(other);\n const { a, d } = CURVE;\n const { ex: X1, ey: Y1, ez: Z1, et: T1 } = this;\n const { ex: X2, ey: Y2, ez: Z2, et: T2 } = other;\n // Faster algo for adding 2 Extended Points when curve's a=-1.\n // http://hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html#addition-add-2008-hwcd-4\n // Cost: 8M + 8add + 2*2.\n // Note: It does not check whether the `other` point is valid.\n if (a === BigInt(-1)) {\n const A = modP((Y1 - X1) * (Y2 + X2));\n const B = modP((Y1 + X1) * (Y2 - X2));\n const F = modP(B - A);\n if (F === _0n)\n return this.double(); // Same point. Tests say it doesn't affect timing\n const C = modP(Z1 * _2n * T2);\n const D = modP(T1 * _2n * Z2);\n const E = D + C;\n const G = B + A;\n const H = D - C;\n const X3 = modP(E * F);\n const Y3 = modP(G * H);\n const T3 = modP(E * H);\n const Z3 = modP(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n const A = modP(X1 * X2); // A = X1*X2\n const B = modP(Y1 * Y2); // B = Y1*Y2\n const C = modP(T1 * d * T2); // C = T1*d*T2\n const D = modP(Z1 * Z2); // D = Z1*Z2\n const E = modP((X1 + Y1) * (X2 + Y2) - A - B); // E = (X1+Y1)*(X2+Y2)-A-B\n const F = D - C; // F = D-C\n const G = D + C; // G = D+C\n const H = modP(B - a * A); // H = B-a*A\n const X3 = modP(E * F); // X3 = E*F\n const Y3 = modP(G * H); // Y3 = G*H\n const T3 = modP(E * H); // T3 = E*H\n const Z3 = modP(F * G); // Z3 = F*G\n return new Point(X3, Y3, Z3, T3);\n }\n subtract(other) {\n return this.add(other.negate());\n }\n wNAF(n) {\n return wnaf.wNAFCached(this, n, Point.normalizeZ);\n }\n // Constant-time multiplication.\n multiply(scalar) {\n const n = scalar;\n ut.aInRange('scalar', n, _1n, CURVE_ORDER); // 1 <= scalar < L\n const { p, f } = this.wNAF(n);\n return Point.normalizeZ([p, f])[0];\n }\n // Non-constant-time multiplication. Uses double-and-add algorithm.\n // It's faster, but should only be used when you don't care about\n // an exposed private key e.g. sig verification.\n // Does NOT allow scalars higher than CURVE.n.\n // Accepts optional accumulator to merge with multiply (important for sparse scalars)\n multiplyUnsafe(scalar, acc = Point.ZERO) {\n const n = scalar;\n ut.aInRange('scalar', n, _0n, CURVE_ORDER); // 0 <= scalar < L\n if (n === _0n)\n return I;\n if (this.is0() || n === _1n)\n return this;\n return wnaf.wNAFCachedUnsafe(this, n, Point.normalizeZ, acc);\n }\n // Checks if point is of small order.\n // If you add something to small order point, you will have \"dirty\"\n // point with torsion component.\n // Multiplies point by cofactor and checks if the result is 0.\n isSmallOrder() {\n return this.multiplyUnsafe(cofactor).is0();\n }\n // Multiplies point by curve order and checks if the result is 0.\n // Returns `false` is the point is dirty.\n isTorsionFree() {\n return wnaf.unsafeLadder(this, CURVE_ORDER).is0();\n }\n // Converts Extended point to default (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n toAffine(iz) {\n return toAffineMemo(this, iz);\n }\n clearCofactor() {\n const { h: cofactor } = CURVE;\n if (cofactor === _1n)\n return this;\n return this.multiplyUnsafe(cofactor);\n }\n // Converts hash string or Uint8Array to Point.\n // Uses algo from RFC8032 5.1.3.\n static fromHex(hex, zip215 = false) {\n const { d, a } = CURVE;\n const len = Fp.BYTES;\n hex = ensureBytes('pointHex', hex, len); // copy hex to a new array\n abool('zip215', zip215);\n const normed = hex.slice(); // copy again, we'll manipulate it\n const lastByte = hex[len - 1]; // select last byte\n normed[len - 1] = lastByte & ~0x80; // clear last bit\n const y = ut.bytesToNumberLE(normed);\n // zip215=true is good for consensus-critical apps. =false follows RFC8032 / NIST186-5.\n // RFC8032 prohibits >= p, but ZIP215 doesn't\n // zip215=true: 0 <= y < MASK (2^256 for ed25519)\n // zip215=false: 0 <= y < P (2^255-19 for ed25519)\n const max = zip215 ? MASK : Fp.ORDER;\n ut.aInRange('pointHex.y', y, _0n, max);\n // Ed25519: x² = (y²-1)/(dy²+1) mod p. Ed448: x² = (y²-1)/(dy²-1) mod p. Generic case:\n // ax²+y²=1+dx²y² => y²-1=dx²y²-ax² => y²-1=x²(dy²-a) => x²=(y²-1)/(dy²-a)\n const y2 = modP(y * y); // denominator is always non-0 mod p.\n const u = modP(y2 - _1n); // u = y² - 1\n const v = modP(d * y2 - a); // v = d y² + 1.\n let { isValid, value: x } = uvRatio(u, v); // √(u/v)\n if (!isValid)\n throw new Error('Point.fromHex: invalid y coordinate');\n const isXOdd = (x & _1n) === _1n; // There are 2 square roots. Use x_0 bit to select proper\n const isLastByteOdd = (lastByte & 0x80) !== 0; // x_0, last bit\n if (!zip215 && x === _0n && isLastByteOdd)\n // if x=0 and x_0 = 1, fail\n throw new Error('Point.fromHex: x=0 and x_0=1');\n if (isLastByteOdd !== isXOdd)\n x = modP(-x); // if x_0 != x mod 2, set x = p-x\n return Point.fromAffine({ x, y });\n }\n static fromPrivateKey(privKey) {\n return getExtendedPublicKey(privKey).point;\n }\n toRawBytes() {\n const { x, y } = this.toAffine();\n const bytes = ut.numberToBytesLE(y, Fp.BYTES); // each y has 2 x values (x, -y)\n bytes[bytes.length - 1] |= x & _1n ? 0x80 : 0; // when compressing, it's enough to store y\n return bytes; // and use the last byte to encode sign of x\n }\n toHex() {\n return ut.bytesToHex(this.toRawBytes()); // Same as toRawBytes, but returns string.\n }\n }\n Point.BASE = new Point(CURVE.Gx, CURVE.Gy, _1n, modP(CURVE.Gx * CURVE.Gy));\n Point.ZERO = new Point(_0n, _1n, _1n, _0n); // 0, 1, 1, 0\n const { BASE: G, ZERO: I } = Point;\n const wnaf = wNAF(Point, nByteLength * 8);\n function modN(a) {\n return mod(a, CURVE_ORDER);\n }\n // Little-endian SHA512 with modulo n\n function modN_LE(hash) {\n return modN(ut.bytesToNumberLE(hash));\n }\n /** Convenience method that creates public key and other stuff. RFC8032 5.1.5 */\n function getExtendedPublicKey(key) {\n const len = Fp.BYTES;\n key = ensureBytes('private key', key, len);\n // Hash private key with curve's hash function to produce uniformingly random input\n // Check byte lengths: ensure(64, h(ensure(32, key)))\n const hashed = ensureBytes('hashed private key', cHash(key), 2 * len);\n const head = adjustScalarBytes(hashed.slice(0, len)); // clear first half bits, produce FE\n const prefix = hashed.slice(len, 2 * len); // second half is called key prefix (5.1.6)\n const scalar = modN_LE(head); // The actual private scalar\n const point = G.multiply(scalar); // Point on Edwards curve aka public key\n const pointBytes = point.toRawBytes(); // Uint8Array representation\n return { head, prefix, scalar, point, pointBytes };\n }\n // Calculates EdDSA pub key. RFC8032 5.1.5. Privkey is hashed. Use first half with 3 bits cleared\n function getPublicKey(privKey) {\n return getExtendedPublicKey(privKey).pointBytes;\n }\n // int('LE', SHA512(dom2(F, C) || msgs)) mod N\n function hashDomainToScalar(context = new Uint8Array(), ...msgs) {\n const msg = ut.concatBytes(...msgs);\n return modN_LE(cHash(domain(msg, ensureBytes('context', context), !!prehash)));\n }\n /** Signs message with privateKey. RFC8032 5.1.6 */\n function sign(msg, privKey, options = {}) {\n msg = ensureBytes('message', msg);\n if (prehash)\n msg = prehash(msg); // for ed25519ph etc.\n const { prefix, scalar, pointBytes } = getExtendedPublicKey(privKey);\n const r = hashDomainToScalar(options.context, prefix, msg); // r = dom2(F, C) || prefix || PH(M)\n const R = G.multiply(r).toRawBytes(); // R = rG\n const k = hashDomainToScalar(options.context, R, pointBytes, msg); // R || A || PH(M)\n const s = modN(r + k * scalar); // S = (r + k * s) mod L\n ut.aInRange('signature.s', s, _0n, CURVE_ORDER); // 0 <= s < l\n const res = ut.concatBytes(R, ut.numberToBytesLE(s, Fp.BYTES));\n return ensureBytes('result', res, Fp.BYTES * 2); // 64-byte signature\n }\n const verifyOpts = VERIFY_DEFAULT;\n /**\n * Verifies EdDSA signature against message and public key. RFC8032 5.1.7.\n * An extended group equation is checked.\n */\n function verify(sig, msg, publicKey, options = verifyOpts) {\n const { context, zip215 } = options;\n const len = Fp.BYTES; // Verifies EdDSA signature against message and public key. RFC8032 5.1.7.\n sig = ensureBytes('signature', sig, 2 * len); // An extended group equation is checked.\n msg = ensureBytes('message', msg);\n publicKey = ensureBytes('publicKey', publicKey, len);\n if (zip215 !== undefined)\n abool('zip215', zip215);\n if (prehash)\n msg = prehash(msg); // for ed25519ph, etc\n const s = ut.bytesToNumberLE(sig.slice(len, 2 * len));\n let A, R, SB;\n try {\n // zip215=true is good for consensus-critical apps. =false follows RFC8032 / NIST186-5.\n // zip215=true: 0 <= y < MASK (2^256 for ed25519)\n // zip215=false: 0 <= y < P (2^255-19 for ed25519)\n A = Point.fromHex(publicKey, zip215);\n R = Point.fromHex(sig.slice(0, len), zip215);\n SB = G.multiplyUnsafe(s); // 0 <= s < l is done inside\n }\n catch (error) {\n return false;\n }\n if (!zip215 && A.isSmallOrder())\n return false;\n const k = hashDomainToScalar(context, R.toRawBytes(), A.toRawBytes(), msg);\n const RkA = R.add(A.multiplyUnsafe(k));\n // Extended group equation\n // [8][S]B = [8]R + [8][k]A'\n return RkA.subtract(SB).clearCofactor().equals(Point.ZERO);\n }\n G._setWindowSize(8); // Enable precomputes. Slows down first publicKey computation by 20ms.\n const utils = {\n getExtendedPublicKey,\n // ed25519 private keys are uniform 32b. No need to check for modulo bias, like in secp256k1.\n randomPrivateKey: () => randomBytes(Fp.BYTES),\n /**\n * We're doing scalar multiplication (used in getPublicKey etc) with precomputed BASE_POINT\n * values. This slows down first getPublicKey() by milliseconds (see Speed section),\n * but allows to speed-up subsequent getPublicKey() calls up to 20x.\n * @param windowSize 2, 4, 8, 16\n */\n precompute(windowSize = 8, point = Point.BASE) {\n point._setWindowSize(windowSize);\n point.multiply(BigInt(3));\n return point;\n },\n };\n return {\n CURVE,\n getPublicKey,\n sign,\n verify,\n ExtendedPoint: Point,\n utils,\n };\n}\n//# sourceMappingURL=edwards.js.map","/**\n * ed25519 Twisted Edwards curve with following addons:\n * - X25519 ECDH\n * - Ristretto cofactor elimination\n * - Elligator hash-to-group / point indistinguishability\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha512 } from '@noble/hashes/sha512';\nimport { concatBytes, randomBytes, utf8ToBytes } from '@noble/hashes/utils';\nimport { twistedEdwards } from './abstract/edwards.js';\nimport { createHasher, expand_message_xmd, } from './abstract/hash-to-curve.js';\nimport { Field, FpSqrtEven, isNegativeLE, mod, pow2 } from './abstract/modular.js';\nimport { montgomery } from './abstract/montgomery.js';\nimport { pippenger } from './abstract/curve.js';\nimport { bytesToHex, bytesToNumberLE, ensureBytes, equalBytes, numberToBytesLE, } from './abstract/utils.js';\nconst ED25519_P = BigInt('57896044618658097711785492504343953926634992332820282019728792003956564819949');\n// √(-1) aka √(a) aka 2^((p-1)/4)\nconst ED25519_SQRT_M1 = /* @__PURE__ */ BigInt('19681161376707505956807079304988542015446066515923890162744021073123829784752');\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3);\n// prettier-ignore\nconst _5n = BigInt(5), _8n = BigInt(8);\nfunction ed25519_pow_2_252_3(x) {\n // prettier-ignore\n const _10n = BigInt(10), _20n = BigInt(20), _40n = BigInt(40), _80n = BigInt(80);\n const P = ED25519_P;\n const x2 = (x * x) % P;\n const b2 = (x2 * x) % P; // x^3, 11\n const b4 = (pow2(b2, _2n, P) * b2) % P; // x^15, 1111\n const b5 = (pow2(b4, _1n, P) * x) % P; // x^31\n const b10 = (pow2(b5, _5n, P) * b5) % P;\n const b20 = (pow2(b10, _10n, P) * b10) % P;\n const b40 = (pow2(b20, _20n, P) * b20) % P;\n const b80 = (pow2(b40, _40n, P) * b40) % P;\n const b160 = (pow2(b80, _80n, P) * b80) % P;\n const b240 = (pow2(b160, _80n, P) * b80) % P;\n const b250 = (pow2(b240, _10n, P) * b10) % P;\n const pow_p_5_8 = (pow2(b250, _2n, P) * x) % P;\n // ^ To pow to (p+3)/8, multiply it by x.\n return { pow_p_5_8, b2 };\n}\nfunction adjustScalarBytes(bytes) {\n // Section 5: For X25519, in order to decode 32 random bytes as an integer scalar,\n // set the three least significant bits of the first byte\n bytes[0] &= 248; // 0b1111_1000\n // and the most significant bit of the last to zero,\n bytes[31] &= 127; // 0b0111_1111\n // set the second most significant bit of the last byte to 1\n bytes[31] |= 64; // 0b0100_0000\n return bytes;\n}\n// sqrt(u/v)\nfunction uvRatio(u, v) {\n const P = ED25519_P;\n const v3 = mod(v * v * v, P); // v³\n const v7 = mod(v3 * v3 * v, P); // v⁷\n // (p+3)/8 and (p-5)/8\n const pow = ed25519_pow_2_252_3(u * v7).pow_p_5_8;\n let x = mod(u * v3 * pow, P); // (uv³)(uv⁷)^(p-5)/8\n const vx2 = mod(v * x * x, P); // vx²\n const root1 = x; // First root candidate\n const root2 = mod(x * ED25519_SQRT_M1, P); // Second root candidate\n const useRoot1 = vx2 === u; // If vx² = u (mod p), x is a square root\n const useRoot2 = vx2 === mod(-u, P); // If vx² = -u, set x <-- x * 2^((p-1)/4)\n const noRoot = vx2 === mod(-u * ED25519_SQRT_M1, P); // There is no valid root, vx² = -u√(-1)\n if (useRoot1)\n x = root1;\n if (useRoot2 || noRoot)\n x = root2; // We return root2 anyway, for const-time\n if (isNegativeLE(x, P))\n x = mod(-x, P);\n return { isValid: useRoot1 || useRoot2, value: x };\n}\n// Just in case\nexport const ED25519_TORSION_SUBGROUP = [\n '0100000000000000000000000000000000000000000000000000000000000000',\n 'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac037a',\n '0000000000000000000000000000000000000000000000000000000000000080',\n '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05',\n 'ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f',\n '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc85',\n '0000000000000000000000000000000000000000000000000000000000000000',\n 'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac03fa',\n];\nconst Fp = /* @__PURE__ */ (() => Field(ED25519_P, undefined, true))();\nconst ed25519Defaults = /* @__PURE__ */ (() => ({\n // Param: a\n a: BigInt(-1), // Fp.create(-1) is proper; our way still works and is faster\n // d is equal to -121665/121666 over finite field.\n // Negative number is P - number, and division is invert(number, P)\n d: BigInt('37095705934669439343138083508754565189542113879843219016388785533085940283555'),\n // Finite field 𝔽p over which we'll do calculations; 2n**255n - 19n\n Fp,\n // Subgroup order: how many points curve has\n // 2n**252n + 27742317777372353535851937790883648493n;\n n: BigInt('7237005577332262213973186563042994240857116359379907606001950938285454250989'),\n // Cofactor\n h: _8n,\n // Base point (x, y) aka generator point\n Gx: BigInt('15112221349535400772501151409588531511454012693041857206046113283949847762202'),\n Gy: BigInt('46316835694926478169428394003475163141307993866256225615783033603165251855960'),\n hash: sha512,\n randomBytes,\n adjustScalarBytes,\n // dom2\n // Ratio of u to v. Allows us to combine inversion and square root. Uses algo from RFC8032 5.1.3.\n // Constant-time, u/√v\n uvRatio,\n}))();\n/**\n * ed25519 curve with EdDSA signatures.\n * @example\n * import { ed25519 } from '@noble/curves/ed25519';\n * const priv = ed25519.utils.randomPrivateKey();\n * const pub = ed25519.getPublicKey(priv);\n * const msg = new TextEncoder().encode('hello');\n * const sig = ed25519.sign(msg, priv);\n * ed25519.verify(sig, msg, pub); // Default mode: follows ZIP215\n * ed25519.verify(sig, msg, pub, { zip215: false }); // RFC8032 / FIPS 186-5\n */\nexport const ed25519 = /* @__PURE__ */ (() => twistedEdwards(ed25519Defaults))();\nfunction ed25519_domain(data, ctx, phflag) {\n if (ctx.length > 255)\n throw new Error('Context is too big');\n return concatBytes(utf8ToBytes('SigEd25519 no Ed25519 collisions'), new Uint8Array([phflag ? 1 : 0, ctx.length]), ctx, data);\n}\nexport const ed25519ctx = /* @__PURE__ */ (() => twistedEdwards({\n ...ed25519Defaults,\n domain: ed25519_domain,\n}))();\nexport const ed25519ph = /* @__PURE__ */ (() => twistedEdwards(Object.assign({}, ed25519Defaults, {\n domain: ed25519_domain,\n prehash: sha512,\n})))();\n/**\n * ECDH using curve25519 aka x25519.\n * @example\n * import { x25519 } from '@noble/curves/ed25519';\n * const priv = 'a546e36bf0527c9d3b16154b82465edd62144c0ac1fc5a18506a2244ba449ac4';\n * const pub = 'e6db6867583030db3594c1a424b15f7c726624ec26b3353b10a903a6d0ab1c4c';\n * x25519.getSharedSecret(priv, pub) === x25519.scalarMult(priv, pub); // aliases\n * x25519.getPublicKey(priv) === x25519.scalarMultBase(priv);\n * x25519.getPublicKey(x25519.utils.randomPrivateKey());\n */\nexport const x25519 = /* @__PURE__ */ (() => montgomery({\n P: ED25519_P,\n a: BigInt(486662),\n montgomeryBits: 255, // n is 253 bits\n nByteLength: 32,\n Gu: BigInt(9),\n powPminus2: (x) => {\n const P = ED25519_P;\n // x^(p-2) aka x^(2^255-21)\n const { pow_p_5_8, b2 } = ed25519_pow_2_252_3(x);\n return mod(pow2(pow_p_5_8, _3n, P) * b2, P);\n },\n adjustScalarBytes,\n randomBytes,\n}))();\n/**\n * Converts ed25519 public key to x25519 public key. Uses formula:\n * * `(u, v) = ((1+y)/(1-y), sqrt(-486664)*u/x)`\n * * `(x, y) = (sqrt(-486664)*u/v, (u-1)/(u+1))`\n * @example\n * const someonesPub = ed25519.getPublicKey(ed25519.utils.randomPrivateKey());\n * const aPriv = x25519.utils.randomPrivateKey();\n * x25519.getSharedSecret(aPriv, edwardsToMontgomeryPub(someonesPub))\n */\nexport function edwardsToMontgomeryPub(edwardsPub) {\n const { y } = ed25519.ExtendedPoint.fromHex(edwardsPub);\n const _1n = BigInt(1);\n return Fp.toBytes(Fp.create((_1n + y) * Fp.inv(_1n - y)));\n}\nexport const edwardsToMontgomery = edwardsToMontgomeryPub; // deprecated\n/**\n * Converts ed25519 secret key to x25519 secret key.\n * @example\n * const someonesPub = x25519.getPublicKey(x25519.utils.randomPrivateKey());\n * const aPriv = ed25519.utils.randomPrivateKey();\n * x25519.getSharedSecret(edwardsToMontgomeryPriv(aPriv), someonesPub)\n */\nexport function edwardsToMontgomeryPriv(edwardsPriv) {\n const hashed = ed25519Defaults.hash(edwardsPriv.subarray(0, 32));\n return ed25519Defaults.adjustScalarBytes(hashed).subarray(0, 32);\n}\n// Hash To Curve Elligator2 Map (NOTE: different from ristretto255 elligator)\n// NOTE: very important part is usage of FpSqrtEven for ELL2_C1_EDWARDS, since\n// SageMath returns different root first and everything falls apart\nconst ELL2_C1 = /* @__PURE__ */ (() => (Fp.ORDER + _3n) / _8n)(); // 1. c1 = (q + 3) / 8 # Integer arithmetic\nconst ELL2_C2 = /* @__PURE__ */ (() => Fp.pow(_2n, ELL2_C1))(); // 2. c2 = 2^c1\nconst ELL2_C3 = /* @__PURE__ */ (() => Fp.sqrt(Fp.neg(Fp.ONE)))(); // 3. c3 = sqrt(-1)\n// prettier-ignore\nfunction map_to_curve_elligator2_curve25519(u) {\n const ELL2_C4 = (Fp.ORDER - _5n) / _8n; // 4. c4 = (q - 5) / 8 # Integer arithmetic\n const ELL2_J = BigInt(486662);\n let tv1 = Fp.sqr(u); // 1. tv1 = u^2\n tv1 = Fp.mul(tv1, _2n); // 2. tv1 = 2 * tv1\n let xd = Fp.add(tv1, Fp.ONE); // 3. xd = tv1 + 1 # Nonzero: -1 is square (mod p), tv1 is not\n let x1n = Fp.neg(ELL2_J); // 4. x1n = -J # x1 = x1n / xd = -J / (1 + 2 * u^2)\n let tv2 = Fp.sqr(xd); // 5. tv2 = xd^2\n let gxd = Fp.mul(tv2, xd); // 6. gxd = tv2 * xd # gxd = xd^3\n let gx1 = Fp.mul(tv1, ELL2_J); // 7. gx1 = J * tv1 # x1n + J * xd\n gx1 = Fp.mul(gx1, x1n); // 8. gx1 = gx1 * x1n # x1n^2 + J * x1n * xd\n gx1 = Fp.add(gx1, tv2); // 9. gx1 = gx1 + tv2 # x1n^2 + J * x1n * xd + xd^2\n gx1 = Fp.mul(gx1, x1n); // 10. gx1 = gx1 * x1n # x1n^3 + J * x1n^2 * xd + x1n * xd^2\n let tv3 = Fp.sqr(gxd); // 11. tv3 = gxd^2\n tv2 = Fp.sqr(tv3); // 12. tv2 = tv3^2 # gxd^4\n tv3 = Fp.mul(tv3, gxd); // 13. tv3 = tv3 * gxd # gxd^3\n tv3 = Fp.mul(tv3, gx1); // 14. tv3 = tv3 * gx1 # gx1 * gxd^3\n tv2 = Fp.mul(tv2, tv3); // 15. tv2 = tv2 * tv3 # gx1 * gxd^7\n let y11 = Fp.pow(tv2, ELL2_C4); // 16. y11 = tv2^c4 # (gx1 * gxd^7)^((p - 5) / 8)\n y11 = Fp.mul(y11, tv3); // 17. y11 = y11 * tv3 # gx1*gxd^3*(gx1*gxd^7)^((p-5)/8)\n let y12 = Fp.mul(y11, ELL2_C3); // 18. y12 = y11 * c3\n tv2 = Fp.sqr(y11); // 19. tv2 = y11^2\n tv2 = Fp.mul(tv2, gxd); // 20. tv2 = tv2 * gxd\n let e1 = Fp.eql(tv2, gx1); // 21. e1 = tv2 == gx1\n let y1 = Fp.cmov(y12, y11, e1); // 22. y1 = CMOV(y12, y11, e1) # If g(x1) is square, this is its sqrt\n let x2n = Fp.mul(x1n, tv1); // 23. x2n = x1n * tv1 # x2 = x2n / xd = 2 * u^2 * x1n / xd\n let y21 = Fp.mul(y11, u); // 24. y21 = y11 * u\n y21 = Fp.mul(y21, ELL2_C2); // 25. y21 = y21 * c2\n let y22 = Fp.mul(y21, ELL2_C3); // 26. y22 = y21 * c3\n let gx2 = Fp.mul(gx1, tv1); // 27. gx2 = gx1 * tv1 # g(x2) = gx2 / gxd = 2 * u^2 * g(x1)\n tv2 = Fp.sqr(y21); // 28. tv2 = y21^2\n tv2 = Fp.mul(tv2, gxd); // 29. tv2 = tv2 * gxd\n let e2 = Fp.eql(tv2, gx2); // 30. e2 = tv2 == gx2\n let y2 = Fp.cmov(y22, y21, e2); // 31. y2 = CMOV(y22, y21, e2) # If g(x2) is square, this is its sqrt\n tv2 = Fp.sqr(y1); // 32. tv2 = y1^2\n tv2 = Fp.mul(tv2, gxd); // 33. tv2 = tv2 * gxd\n let e3 = Fp.eql(tv2, gx1); // 34. e3 = tv2 == gx1\n let xn = Fp.cmov(x2n, x1n, e3); // 35. xn = CMOV(x2n, x1n, e3) # If e3, x = x1, else x = x2\n let y = Fp.cmov(y2, y1, e3); // 36. y = CMOV(y2, y1, e3) # If e3, y = y1, else y = y2\n let e4 = Fp.isOdd(y); // 37. e4 = sgn0(y) == 1 # Fix sign of y\n y = Fp.cmov(y, Fp.neg(y), e3 !== e4); // 38. y = CMOV(y, -y, e3 XOR e4)\n return { xMn: xn, xMd: xd, yMn: y, yMd: _1n }; // 39. return (xn, xd, y, 1)\n}\nconst ELL2_C1_EDWARDS = /* @__PURE__ */ (() => FpSqrtEven(Fp, Fp.neg(BigInt(486664))))(); // sgn0(c1) MUST equal 0\nfunction map_to_curve_elligator2_edwards25519(u) {\n const { xMn, xMd, yMn, yMd } = map_to_curve_elligator2_curve25519(u); // 1. (xMn, xMd, yMn, yMd) =\n // map_to_curve_elligator2_curve25519(u)\n let xn = Fp.mul(xMn, yMd); // 2. xn = xMn * yMd\n xn = Fp.mul(xn, ELL2_C1_EDWARDS); // 3. xn = xn * c1\n let xd = Fp.mul(xMd, yMn); // 4. xd = xMd * yMn # xn / xd = c1 * xM / yM\n let yn = Fp.sub(xMn, xMd); // 5. yn = xMn - xMd\n let yd = Fp.add(xMn, xMd); // 6. yd = xMn + xMd # (n / d - 1) / (n / d + 1) = (n - d) / (n + d)\n let tv1 = Fp.mul(xd, yd); // 7. tv1 = xd * yd\n let e = Fp.eql(tv1, Fp.ZERO); // 8. e = tv1 == 0\n xn = Fp.cmov(xn, Fp.ZERO, e); // 9. xn = CMOV(xn, 0, e)\n xd = Fp.cmov(xd, Fp.ONE, e); // 10. xd = CMOV(xd, 1, e)\n yn = Fp.cmov(yn, Fp.ONE, e); // 11. yn = CMOV(yn, 1, e)\n yd = Fp.cmov(yd, Fp.ONE, e); // 12. yd = CMOV(yd, 1, e)\n const inv = Fp.invertBatch([xd, yd]); // batch division\n return { x: Fp.mul(xn, inv[0]), y: Fp.mul(yn, inv[1]) }; // 13. return (xn, xd, yn, yd)\n}\nconst htf = /* @__PURE__ */ (() => createHasher(ed25519.ExtendedPoint, (scalars) => map_to_curve_elligator2_edwards25519(scalars[0]), {\n DST: 'edwards25519_XMD:SHA-512_ELL2_RO_',\n encodeDST: 'edwards25519_XMD:SHA-512_ELL2_NU_',\n p: Fp.ORDER,\n m: 1,\n k: 128,\n expand: 'xmd',\n hash: sha512,\n}))();\nexport const hashToCurve = /* @__PURE__ */ (() => htf.hashToCurve)();\nexport const encodeToCurve = /* @__PURE__ */ (() => htf.encodeToCurve)();\nfunction assertRstPoint(other) {\n if (!(other instanceof RistPoint))\n throw new Error('RistrettoPoint expected');\n}\n// √(-1) aka √(a) aka 2^((p-1)/4)\nconst SQRT_M1 = ED25519_SQRT_M1;\n// √(ad - 1)\nconst SQRT_AD_MINUS_ONE = /* @__PURE__ */ BigInt('25063068953384623474111414158702152701244531502492656460079210482610430750235');\n// 1 / √(a-d)\nconst INVSQRT_A_MINUS_D = /* @__PURE__ */ BigInt('54469307008909316920995813868745141605393597292927456921205312896311721017578');\n// 1-d²\nconst ONE_MINUS_D_SQ = /* @__PURE__ */ BigInt('1159843021668779879193775521855586647937357759715417654439879720876111806838');\n// (d-1)²\nconst D_MINUS_ONE_SQ = /* @__PURE__ */ BigInt('40440834346308536858101042469323190826248399146238708352240133220865137265952');\n// Calculates 1/√(number)\nconst invertSqrt = (number) => uvRatio(_1n, number);\nconst MAX_255B = /* @__PURE__ */ BigInt('0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff');\nconst bytes255ToNumberLE = (bytes) => ed25519.CURVE.Fp.create(bytesToNumberLE(bytes) & MAX_255B);\n// Computes Elligator map for Ristretto\n// https://ristretto.group/formulas/elligator.html\nfunction calcElligatorRistrettoMap(r0) {\n const { d } = ed25519.CURVE;\n const P = ed25519.CURVE.Fp.ORDER;\n const mod = ed25519.CURVE.Fp.create;\n const r = mod(SQRT_M1 * r0 * r0); // 1\n const Ns = mod((r + _1n) * ONE_MINUS_D_SQ); // 2\n let c = BigInt(-1); // 3\n const D = mod((c - d * r) * mod(r + d)); // 4\n let { isValid: Ns_D_is_sq, value: s } = uvRatio(Ns, D); // 5\n let s_ = mod(s * r0); // 6\n if (!isNegativeLE(s_, P))\n s_ = mod(-s_);\n if (!Ns_D_is_sq)\n s = s_; // 7\n if (!Ns_D_is_sq)\n c = r; // 8\n const Nt = mod(c * (r - _1n) * D_MINUS_ONE_SQ - D); // 9\n const s2 = s * s;\n const W0 = mod((s + s) * D); // 10\n const W1 = mod(Nt * SQRT_AD_MINUS_ONE); // 11\n const W2 = mod(_1n - s2); // 12\n const W3 = mod(_1n + s2); // 13\n return new ed25519.ExtendedPoint(mod(W0 * W3), mod(W2 * W1), mod(W1 * W3), mod(W0 * W2));\n}\n/**\n * Each ed25519/ExtendedPoint has 8 different equivalent points. This can be\n * a source of bugs for protocols like ring signatures. Ristretto was created to solve this.\n * Ristretto point operates in X:Y:Z:T extended coordinates like ExtendedPoint,\n * but it should work in its own namespace: do not combine those two.\n * https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-ristretto255-decaf448\n */\nclass RistPoint {\n // Private property to discourage combining ExtendedPoint + RistrettoPoint\n // Always use Ristretto encoding/decoding instead.\n constructor(ep) {\n this.ep = ep;\n }\n static fromAffine(ap) {\n return new RistPoint(ed25519.ExtendedPoint.fromAffine(ap));\n }\n /**\n * Takes uniform output of 64-byte hash function like sha512 and converts it to `RistrettoPoint`.\n * The hash-to-group operation applies Elligator twice and adds the results.\n * **Note:** this is one-way map, there is no conversion from point to hash.\n * https://ristretto.group/formulas/elligator.html\n * @param hex 64-byte output of a hash function\n */\n static hashToCurve(hex) {\n hex = ensureBytes('ristrettoHash', hex, 64);\n const r1 = bytes255ToNumberLE(hex.slice(0, 32));\n const R1 = calcElligatorRistrettoMap(r1);\n const r2 = bytes255ToNumberLE(hex.slice(32, 64));\n const R2 = calcElligatorRistrettoMap(r2);\n return new RistPoint(R1.add(R2));\n }\n /**\n * Converts ristretto-encoded string to ristretto point.\n * https://ristretto.group/formulas/decoding.html\n * @param hex Ristretto-encoded 32 bytes. Not every 32-byte string is valid ristretto encoding\n */\n static fromHex(hex) {\n hex = ensureBytes('ristrettoHex', hex, 32);\n const { a, d } = ed25519.CURVE;\n const P = ed25519.CURVE.Fp.ORDER;\n const mod = ed25519.CURVE.Fp.create;\n const emsg = 'RistrettoPoint.fromHex: the hex is not valid encoding of RistrettoPoint';\n const s = bytes255ToNumberLE(hex);\n // 1. Check that s_bytes is the canonical encoding of a field element, or else abort.\n // 3. Check that s is non-negative, or else abort\n if (!equalBytes(numberToBytesLE(s, 32), hex) || isNegativeLE(s, P))\n throw new Error(emsg);\n const s2 = mod(s * s);\n const u1 = mod(_1n + a * s2); // 4 (a is -1)\n const u2 = mod(_1n - a * s2); // 5\n const u1_2 = mod(u1 * u1);\n const u2_2 = mod(u2 * u2);\n const v = mod(a * d * u1_2 - u2_2); // 6\n const { isValid, value: I } = invertSqrt(mod(v * u2_2)); // 7\n const Dx = mod(I * u2); // 8\n const Dy = mod(I * Dx * v); // 9\n let x = mod((s + s) * Dx); // 10\n if (isNegativeLE(x, P))\n x = mod(-x); // 10\n const y = mod(u1 * Dy); // 11\n const t = mod(x * y); // 12\n if (!isValid || isNegativeLE(t, P) || y === _0n)\n throw new Error(emsg);\n return new RistPoint(new ed25519.ExtendedPoint(x, y, _1n, t));\n }\n static msm(points, scalars) {\n const Fn = Field(ed25519.CURVE.n, ed25519.CURVE.nBitLength);\n return pippenger(RistPoint, Fn, points, scalars);\n }\n /**\n * Encodes ristretto point to Uint8Array.\n * https://ristretto.group/formulas/encoding.html\n */\n toRawBytes() {\n let { ex: x, ey: y, ez: z, et: t } = this.ep;\n const P = ed25519.CURVE.Fp.ORDER;\n const mod = ed25519.CURVE.Fp.create;\n const u1 = mod(mod(z + y) * mod(z - y)); // 1\n const u2 = mod(x * y); // 2\n // Square root always exists\n const u2sq = mod(u2 * u2);\n const { value: invsqrt } = invertSqrt(mod(u1 * u2sq)); // 3\n const D1 = mod(invsqrt * u1); // 4\n const D2 = mod(invsqrt * u2); // 5\n const zInv = mod(D1 * D2 * t); // 6\n let D; // 7\n if (isNegativeLE(t * zInv, P)) {\n let _x = mod(y * SQRT_M1);\n let _y = mod(x * SQRT_M1);\n x = _x;\n y = _y;\n D = mod(D1 * INVSQRT_A_MINUS_D);\n }\n else {\n D = D2; // 8\n }\n if (isNegativeLE(x * zInv, P))\n y = mod(-y); // 9\n let s = mod((z - y) * D); // 10 (check footer's note, no sqrt(-a))\n if (isNegativeLE(s, P))\n s = mod(-s);\n return numberToBytesLE(s, 32); // 11\n }\n toHex() {\n return bytesToHex(this.toRawBytes());\n }\n toString() {\n return this.toHex();\n }\n // Compare one point to another.\n equals(other) {\n assertRstPoint(other);\n const { ex: X1, ey: Y1 } = this.ep;\n const { ex: X2, ey: Y2 } = other.ep;\n const mod = ed25519.CURVE.Fp.create;\n // (x1 * y2 == y1 * x2) | (y1 * y2 == x1 * x2)\n const one = mod(X1 * Y2) === mod(Y1 * X2);\n const two = mod(Y1 * Y2) === mod(X1 * X2);\n return one || two;\n }\n add(other) {\n assertRstPoint(other);\n return new RistPoint(this.ep.add(other.ep));\n }\n subtract(other) {\n assertRstPoint(other);\n return new RistPoint(this.ep.subtract(other.ep));\n }\n multiply(scalar) {\n return new RistPoint(this.ep.multiply(scalar));\n }\n multiplyUnsafe(scalar) {\n return new RistPoint(this.ep.multiplyUnsafe(scalar));\n }\n double() {\n return new RistPoint(this.ep.double());\n }\n negate() {\n return new RistPoint(this.ep.negate());\n }\n}\nexport const RistrettoPoint = /* @__PURE__ */ (() => {\n if (!RistPoint.BASE)\n RistPoint.BASE = new RistPoint(ed25519.ExtendedPoint.BASE);\n if (!RistPoint.ZERO)\n RistPoint.ZERO = new RistPoint(ed25519.ExtendedPoint.ZERO);\n return RistPoint;\n})();\n// Hashing to ristretto255. https://www.rfc-editor.org/rfc/rfc9380#appendix-B\nexport const hashToRistretto255 = (msg, options) => {\n const d = options.DST;\n const DST = typeof d === 'string' ? utf8ToBytes(d) : d;\n const uniform_bytes = expand_message_xmd(msg, DST, 64, sha512);\n const P = RistPoint.hashToCurve(uniform_bytes);\n return P;\n};\nexport const hash_to_ristretto255 = hashToRistretto255; // legacy\n//# sourceMappingURL=ed25519.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _ExpirableMap_inner, _ExpirableMap_expirationTime, _a, _b;\n/**\n * A map that expires entries after a given time.\n * Defaults to 10 minutes.\n */\nexport class ExpirableMap {\n /**\n * Create a new ExpirableMap.\n * @param {ExpirableMapOptions} options - options for the map.\n * @param {Iterable<[any, any]>} options.source - an optional source of entries to initialize the map with.\n * @param {number} options.expirationTime - the time in milliseconds after which entries will expire.\n */\n constructor(options = {}) {\n // Internals\n _ExpirableMap_inner.set(this, void 0);\n _ExpirableMap_expirationTime.set(this, void 0);\n this[_a] = this.entries.bind(this);\n this[_b] = 'ExpirableMap';\n const { source = [], expirationTime = 10 * 60 * 1000 } = options;\n const currentTime = Date.now();\n __classPrivateFieldSet(this, _ExpirableMap_inner, new Map([...source].map(([key, value]) => [key, { value, timestamp: currentTime }])), \"f\");\n __classPrivateFieldSet(this, _ExpirableMap_expirationTime, expirationTime, \"f\");\n }\n /**\n * Prune removes all expired entries.\n */\n prune() {\n const currentTime = Date.now();\n for (const [key, entry] of __classPrivateFieldGet(this, _ExpirableMap_inner, \"f\").entries()) {\n if (currentTime - entry.timestamp > __classPrivateFieldGet(this, _ExpirableMap_expirationTime, \"f\")) {\n __classPrivateFieldGet(this, _ExpirableMap_inner, \"f\").delete(key);\n }\n }\n return this;\n }\n // Implementing the Map interface\n /**\n * Set the value for the given key. Prunes expired entries.\n * @param key for the entry\n * @param value of the entry\n * @returns this\n */\n set(key, value) {\n this.prune();\n const entry = {\n value,\n timestamp: Date.now(),\n };\n __classPrivateFieldGet(this, _ExpirableMap_inner, \"f\").set(key, entry);\n return this;\n }\n /**\n * Get the value associated with the key, if it exists and has not expired.\n * @param key K\n * @returns the value associated with the key, or undefined if the key is not present or has expired.\n */\n get(key) {\n const entry = __classPrivateFieldGet(this, _ExpirableMap_inner, \"f\").get(key);\n if (entry === undefined) {\n return undefined;\n }\n if (Date.now() - entry.timestamp > __classPrivateFieldGet(this, _ExpirableMap_expirationTime, \"f\")) {\n __classPrivateFieldGet(this, _ExpirableMap_inner, \"f\").delete(key);\n return undefined;\n }\n return entry.value;\n }\n /**\n * Clear all entries.\n */\n clear() {\n __classPrivateFieldGet(this, _ExpirableMap_inner, \"f\").clear();\n }\n /**\n * Entries returns the entries of the map, without the expiration time.\n * @returns an iterator over the entries of the map.\n */\n entries() {\n const iterator = __classPrivateFieldGet(this, _ExpirableMap_inner, \"f\").entries();\n const generator = function* () {\n for (const [key, value] of iterator) {\n yield [key, value.value];\n }\n };\n return generator();\n }\n /**\n * Values returns the values of the map, without the expiration time.\n * @returns an iterator over the values of the map.\n */\n values() {\n const iterator = __classPrivateFieldGet(this, _ExpirableMap_inner, \"f\").values();\n const generator = function* () {\n for (const value of iterator) {\n yield value.value;\n }\n };\n return generator();\n }\n /**\n * Keys returns the keys of the map\n * @returns an iterator over the keys of the map.\n */\n keys() {\n return __classPrivateFieldGet(this, _ExpirableMap_inner, \"f\").keys();\n }\n /**\n * forEach calls the callbackfn on each entry of the map.\n * @param callbackfn to call on each entry\n * @param thisArg to use as this when calling the callbackfn\n */\n forEach(callbackfn, thisArg) {\n for (const [key, value] of __classPrivateFieldGet(this, _ExpirableMap_inner, \"f\").entries()) {\n callbackfn.call(thisArg, value.value, key, this);\n }\n }\n /**\n * has returns true if the key exists and has not expired.\n * @param key K\n * @returns true if the key exists and has not expired.\n */\n has(key) {\n return __classPrivateFieldGet(this, _ExpirableMap_inner, \"f\").has(key);\n }\n /**\n * delete the entry for the given key.\n * @param key K\n * @returns true if the key existed and has been deleted.\n */\n delete(key) {\n return __classPrivateFieldGet(this, _ExpirableMap_inner, \"f\").delete(key);\n }\n /**\n * get size of the map.\n * @returns the size of the map.\n */\n get size() {\n return __classPrivateFieldGet(this, _ExpirableMap_inner, \"f\").size;\n }\n}\n_ExpirableMap_inner = new WeakMap(), _ExpirableMap_expirationTime = new WeakMap(), _a = Symbol.iterator, _b = Symbol.toStringTag;\n//# sourceMappingURL=expirableMap.js.map","import { bufEquals } from './utils/buffer';\nexport const encodeLenBytes = (len) => {\n if (len <= 0x7f) {\n return 1;\n }\n else if (len <= 0xff) {\n return 2;\n }\n else if (len <= 0xffff) {\n return 3;\n }\n else if (len <= 0xffffff) {\n return 4;\n }\n else {\n throw new Error('Length too long (> 4 bytes)');\n }\n};\nexport const encodeLen = (buf, offset, len) => {\n if (len <= 0x7f) {\n buf[offset] = len;\n return 1;\n }\n else if (len <= 0xff) {\n buf[offset] = 0x81;\n buf[offset + 1] = len;\n return 2;\n }\n else if (len <= 0xffff) {\n buf[offset] = 0x82;\n buf[offset + 1] = len >> 8;\n buf[offset + 2] = len;\n return 3;\n }\n else if (len <= 0xffffff) {\n buf[offset] = 0x83;\n buf[offset + 1] = len >> 16;\n buf[offset + 2] = len >> 8;\n buf[offset + 3] = len;\n return 4;\n }\n else {\n throw new Error('Length too long (> 4 bytes)');\n }\n};\nexport const decodeLenBytes = (buf, offset) => {\n if (buf[offset] < 0x80)\n return 1;\n if (buf[offset] === 0x80)\n throw new Error('Invalid length 0');\n if (buf[offset] === 0x81)\n return 2;\n if (buf[offset] === 0x82)\n return 3;\n if (buf[offset] === 0x83)\n return 4;\n throw new Error('Length too long (> 4 bytes)');\n};\nexport const decodeLen = (buf, offset) => {\n const lenBytes = decodeLenBytes(buf, offset);\n if (lenBytes === 1)\n return buf[offset];\n else if (lenBytes === 2)\n return buf[offset + 1];\n else if (lenBytes === 3)\n return (buf[offset + 1] << 8) + buf[offset + 2];\n else if (lenBytes === 4)\n return (buf[offset + 1] << 16) + (buf[offset + 2] << 8) + buf[offset + 3];\n throw new Error('Length too long (> 4 bytes)');\n};\n/**\n * A DER encoded `SEQUENCE(OID)` for DER-encoded-COSE\n */\nexport const DER_COSE_OID = Uint8Array.from([\n ...[0x30, 0x0c],\n ...[0x06, 0x0a],\n ...[0x2b, 0x06, 0x01, 0x04, 0x01, 0x83, 0xb8, 0x43, 0x01, 0x01], // DER encoded COSE\n]);\n/**\n * A DER encoded `SEQUENCE(OID)` for the Ed25519 algorithm\n */\nexport const ED25519_OID = Uint8Array.from([\n ...[0x30, 0x05],\n ...[0x06, 0x03],\n ...[0x2b, 0x65, 0x70], // id-Ed25519 OID\n]);\n/**\n * A DER encoded `SEQUENCE(OID)` for secp256k1 with the ECDSA algorithm\n */\nexport const SECP256K1_OID = Uint8Array.from([\n ...[0x30, 0x10],\n ...[0x06, 0x07],\n ...[0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01],\n ...[0x06, 0x05],\n ...[0x2b, 0x81, 0x04, 0x00, 0x0a], // OID secp256k1\n]);\n/**\n * Wraps the given `payload` in a DER encoding tagged with the given encoded `oid` like so:\n * `SEQUENCE(oid, BITSTRING(payload))`\n *\n * @param payload The payload to encode as the bit string\n * @param oid The DER encoded (and SEQUENCE wrapped!) OID to tag the payload with\n */\nexport function wrapDER(payload, oid) {\n // The Bit String header needs to include the unused bit count byte in its length\n const bitStringHeaderLength = 2 + encodeLenBytes(payload.byteLength + 1);\n const len = oid.byteLength + bitStringHeaderLength + payload.byteLength;\n let offset = 0;\n const buf = new Uint8Array(1 + encodeLenBytes(len) + len);\n // Sequence\n buf[offset++] = 0x30;\n // Sequence Length\n offset += encodeLen(buf, offset, len);\n // OID\n buf.set(oid, offset);\n offset += oid.byteLength;\n // Bit String Header\n buf[offset++] = 0x03;\n offset += encodeLen(buf, offset, payload.byteLength + 1);\n // 0 padding\n buf[offset++] = 0x00;\n buf.set(new Uint8Array(payload), offset);\n return buf;\n}\n/**\n * Extracts a payload from the given `derEncoded` data, and checks that it was tagged with the given `oid`.\n *\n * `derEncoded = SEQUENCE(oid, BITSTRING(payload))`\n *\n * @param derEncoded The DER encoded and tagged data\n * @param oid The DER encoded (and SEQUENCE wrapped!) expected OID\n * @returns The unwrapped payload\n */\nexport const unwrapDER = (derEncoded, oid) => {\n let offset = 0;\n const expect = (n, msg) => {\n if (buf[offset++] !== n) {\n throw new Error('Expected: ' + msg);\n }\n };\n const buf = new Uint8Array(derEncoded);\n expect(0x30, 'sequence');\n offset += decodeLenBytes(buf, offset);\n if (!bufEquals(buf.slice(offset, offset + oid.byteLength), oid)) {\n throw new Error('Not the expected OID.');\n }\n offset += oid.byteLength;\n expect(0x03, 'bit string');\n const payloadLen = decodeLen(buf, offset) - 1; // Subtracting 1 to account for the 0 padding\n offset += decodeLenBytes(buf, offset);\n expect(0x00, '0 padding');\n const result = buf.slice(offset);\n if (payloadLen !== result.length) {\n throw new Error(`DER payload mismatch: Expected length ${payloadLen} actual length ${result.length}`);\n }\n return result;\n};\n//# sourceMappingURL=der.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Ed25519PublicKey_rawKey, _Ed25519PublicKey_derKey;\nimport { ED25519_OID, unwrapDER, wrapDER } from './der';\nexport class Ed25519PublicKey {\n // `fromRaw` and `fromDer` should be used for instantiation, not this constructor.\n constructor(key) {\n _Ed25519PublicKey_rawKey.set(this, void 0);\n _Ed25519PublicKey_derKey.set(this, void 0);\n if (key.byteLength !== Ed25519PublicKey.RAW_KEY_LENGTH) {\n throw new Error('An Ed25519 public key must be exactly 32bytes long');\n }\n __classPrivateFieldSet(this, _Ed25519PublicKey_rawKey, key, \"f\");\n __classPrivateFieldSet(this, _Ed25519PublicKey_derKey, Ed25519PublicKey.derEncode(key), \"f\");\n }\n static from(key) {\n return this.fromDer(key.toDer());\n }\n static fromRaw(rawKey) {\n return new Ed25519PublicKey(rawKey);\n }\n static fromDer(derKey) {\n return new Ed25519PublicKey(this.derDecode(derKey));\n }\n static derEncode(publicKey) {\n return wrapDER(publicKey, ED25519_OID).buffer;\n }\n static derDecode(key) {\n const unwrapped = unwrapDER(key, ED25519_OID);\n if (unwrapped.length !== this.RAW_KEY_LENGTH) {\n throw new Error('An Ed25519 public key must be exactly 32bytes long');\n }\n return unwrapped;\n }\n get rawKey() {\n return __classPrivateFieldGet(this, _Ed25519PublicKey_rawKey, \"f\");\n }\n get derKey() {\n return __classPrivateFieldGet(this, _Ed25519PublicKey_derKey, \"f\");\n }\n toDer() {\n return this.derKey;\n }\n toRaw() {\n return this.rawKey;\n }\n}\n_Ed25519PublicKey_rawKey = new WeakMap(), _Ed25519PublicKey_derKey = new WeakMap();\n// The length of Ed25519 public keys is always 32 bytes.\nEd25519PublicKey.RAW_KEY_LENGTH = 32;\n//# sourceMappingURL=public_key.js.map","export class Observable {\n constructor() {\n this.observers = [];\n }\n subscribe(func) {\n this.observers.push(func);\n }\n unsubscribe(func) {\n this.observers = this.observers.filter(observer => observer !== func);\n }\n notify(data, ...rest) {\n this.observers.forEach(observer => observer(data, ...rest));\n }\n}\nexport class ObservableLog extends Observable {\n constructor() {\n super();\n }\n print(message, ...rest) {\n this.notify({ message, level: 'info' }, ...rest);\n }\n warn(message, ...rest) {\n this.notify({ message, level: 'warn' }, ...rest);\n }\n error(message, error, ...rest) {\n this.notify({ message, level: 'error', error }, ...rest);\n }\n}\n//# sourceMappingURL=observable.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _ExponentialBackoff_currentInterval, _ExponentialBackoff_randomizationFactor, _ExponentialBackoff_multiplier, _ExponentialBackoff_maxInterval, _ExponentialBackoff_startTime, _ExponentialBackoff_maxElapsedTime, _ExponentialBackoff_maxIterations, _ExponentialBackoff_date, _ExponentialBackoff_count;\nconst RANDOMIZATION_FACTOR = 0.5;\nconst MULTIPLIER = 1.5;\nconst INITIAL_INTERVAL_MSEC = 500;\nconst MAX_INTERVAL_MSEC = 60000;\nconst MAX_ELAPSED_TIME_MSEC = 900000;\nconst MAX_ITERATIONS = 10;\n/**\n * Exponential backoff strategy.\n */\nexport class ExponentialBackoff {\n constructor(options = ExponentialBackoff.default) {\n _ExponentialBackoff_currentInterval.set(this, void 0);\n _ExponentialBackoff_randomizationFactor.set(this, void 0);\n _ExponentialBackoff_multiplier.set(this, void 0);\n _ExponentialBackoff_maxInterval.set(this, void 0);\n _ExponentialBackoff_startTime.set(this, void 0);\n _ExponentialBackoff_maxElapsedTime.set(this, void 0);\n _ExponentialBackoff_maxIterations.set(this, void 0);\n _ExponentialBackoff_date.set(this, void 0);\n _ExponentialBackoff_count.set(this, 0);\n const { initialInterval = INITIAL_INTERVAL_MSEC, randomizationFactor = RANDOMIZATION_FACTOR, multiplier = MULTIPLIER, maxInterval = MAX_INTERVAL_MSEC, maxElapsedTime = MAX_ELAPSED_TIME_MSEC, maxIterations = MAX_ITERATIONS, date = Date, } = options;\n __classPrivateFieldSet(this, _ExponentialBackoff_currentInterval, initialInterval, \"f\");\n __classPrivateFieldSet(this, _ExponentialBackoff_randomizationFactor, randomizationFactor, \"f\");\n __classPrivateFieldSet(this, _ExponentialBackoff_multiplier, multiplier, \"f\");\n __classPrivateFieldSet(this, _ExponentialBackoff_maxInterval, maxInterval, \"f\");\n __classPrivateFieldSet(this, _ExponentialBackoff_date, date, \"f\");\n __classPrivateFieldSet(this, _ExponentialBackoff_startTime, date.now(), \"f\");\n __classPrivateFieldSet(this, _ExponentialBackoff_maxElapsedTime, maxElapsedTime, \"f\");\n __classPrivateFieldSet(this, _ExponentialBackoff_maxIterations, maxIterations, \"f\");\n }\n get ellapsedTimeInMsec() {\n return __classPrivateFieldGet(this, _ExponentialBackoff_date, \"f\").now() - __classPrivateFieldGet(this, _ExponentialBackoff_startTime, \"f\");\n }\n get currentInterval() {\n return __classPrivateFieldGet(this, _ExponentialBackoff_currentInterval, \"f\");\n }\n get count() {\n return __classPrivateFieldGet(this, _ExponentialBackoff_count, \"f\");\n }\n get randomValueFromInterval() {\n const delta = __classPrivateFieldGet(this, _ExponentialBackoff_randomizationFactor, \"f\") * __classPrivateFieldGet(this, _ExponentialBackoff_currentInterval, \"f\");\n const min = __classPrivateFieldGet(this, _ExponentialBackoff_currentInterval, \"f\") - delta;\n const max = __classPrivateFieldGet(this, _ExponentialBackoff_currentInterval, \"f\") + delta;\n return Math.random() * (max - min) + min;\n }\n incrementCurrentInterval() {\n var _a;\n __classPrivateFieldSet(this, _ExponentialBackoff_currentInterval, Math.min(__classPrivateFieldGet(this, _ExponentialBackoff_currentInterval, \"f\") * __classPrivateFieldGet(this, _ExponentialBackoff_multiplier, \"f\"), __classPrivateFieldGet(this, _ExponentialBackoff_maxInterval, \"f\")), \"f\");\n __classPrivateFieldSet(this, _ExponentialBackoff_count, (_a = __classPrivateFieldGet(this, _ExponentialBackoff_count, \"f\"), _a++, _a), \"f\");\n return __classPrivateFieldGet(this, _ExponentialBackoff_currentInterval, \"f\");\n }\n next() {\n if (this.ellapsedTimeInMsec >= __classPrivateFieldGet(this, _ExponentialBackoff_maxElapsedTime, \"f\") || __classPrivateFieldGet(this, _ExponentialBackoff_count, \"f\") >= __classPrivateFieldGet(this, _ExponentialBackoff_maxIterations, \"f\")) {\n return null;\n }\n else {\n this.incrementCurrentInterval();\n return this.randomValueFromInterval;\n }\n }\n}\n_ExponentialBackoff_currentInterval = new WeakMap(), _ExponentialBackoff_randomizationFactor = new WeakMap(), _ExponentialBackoff_multiplier = new WeakMap(), _ExponentialBackoff_maxInterval = new WeakMap(), _ExponentialBackoff_startTime = new WeakMap(), _ExponentialBackoff_maxElapsedTime = new WeakMap(), _ExponentialBackoff_maxIterations = new WeakMap(), _ExponentialBackoff_date = new WeakMap(), _ExponentialBackoff_count = new WeakMap();\nExponentialBackoff.default = {\n initialInterval: INITIAL_INTERVAL_MSEC,\n randomizationFactor: RANDOMIZATION_FACTOR,\n multiplier: MULTIPLIER,\n maxInterval: MAX_INTERVAL_MSEC,\n // 1 minute\n maxElapsedTime: MAX_ELAPSED_TIME_MSEC,\n maxIterations: MAX_ITERATIONS,\n date: Date,\n};\n/**\n * Utility function to create an exponential backoff iterator.\n * @param options - for the exponential backoff\n * @returns an iterator that yields the next delay in the exponential backoff\n * @yields the next delay in the exponential backoff\n */\nexport function* exponentialBackoff(options = ExponentialBackoff.default) {\n const backoff = new ExponentialBackoff(options);\n let next = backoff.next();\n while (next) {\n yield next;\n next = backoff.next();\n }\n}\n//# sourceMappingURL=backoff.js.map","// Default delta for ingress expiry is 5 minutes.\nexport const DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS = 5 * 60 * 1000;\n//# sourceMappingURL=constants.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _HttpAgent_instances, _HttpAgent_identity, _HttpAgent_fetch, _HttpAgent_fetchOptions, _HttpAgent_callOptions, _HttpAgent_timeDiffMsecs, _HttpAgent_credentials, _HttpAgent_rootKeyFetched, _HttpAgent_retryTimes, _HttpAgent_backoffStrategy, _HttpAgent_maxIngressExpiryInMinutes, _HttpAgent_waterMark, _HttpAgent_queryPipeline, _HttpAgent_updatePipeline, _HttpAgent_subnetKeys, _HttpAgent_verifyQuerySignatures, _HttpAgent_requestAndRetryQuery, _HttpAgent_requestAndRetry, _HttpAgent_verifyQueryResponse;\nimport { Principal } from '@dfinity/principal';\nimport { AgentError } from '../../errors';\nimport { AnonymousIdentity } from '../../auth';\nimport * as cbor from '../../cbor';\nimport { hashOfMap, requestIdOf } from '../../request_id';\nimport { bufFromBufLike, concat, fromHex } from '../../utils/buffer';\nimport { Expiry, httpHeadersTransform, makeNonceTransform } from './transforms';\nimport { makeNonce, SubmitRequestType, } from './types';\nimport { AgentHTTPResponseError } from './errors';\nimport { request } from '../../canisterStatus';\nimport { CertificateVerificationError, LookupStatus, lookup_path, } from '../../certificate';\nimport { ed25519 } from '@noble/curves/ed25519';\nimport { ExpirableMap } from '../../utils/expirableMap';\nimport { Ed25519PublicKey } from '../../public_key';\nimport { decodeTime } from '../../utils/leb';\nimport { ObservableLog } from '../../observable';\nimport { ExponentialBackoff } from '../../polling/backoff';\nimport { DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS } from '../../constants';\nexport * from './transforms';\nexport { makeNonce } from './types';\nexport var RequestStatusResponseStatus;\n(function (RequestStatusResponseStatus) {\n RequestStatusResponseStatus[\"Received\"] = \"received\";\n RequestStatusResponseStatus[\"Processing\"] = \"processing\";\n RequestStatusResponseStatus[\"Replied\"] = \"replied\";\n RequestStatusResponseStatus[\"Rejected\"] = \"rejected\";\n RequestStatusResponseStatus[\"Unknown\"] = \"unknown\";\n RequestStatusResponseStatus[\"Done\"] = \"done\";\n})(RequestStatusResponseStatus || (RequestStatusResponseStatus = {}));\nconst MINUTE_TO_MSECS = 60 * 1000;\n// Root public key for the IC, encoded as hex\nexport const IC_ROOT_KEY = '308182301d060d2b0601040182dc7c0503010201060c2b0601040182dc7c05030201036100814' +\n 'c0e6ec71fab583b08bd81373c255c3c371b2e84863c98a4f1e08b74235d14fb5d9c0cd546d968' +\n '5f913a0c0b2cc5341583bf4b4392e467db96d65b9bb4cb717112f8472e0d5a4d14505ffd7484' +\n 'b01291091c5f87b98883463f98091a0baaae';\nexport const MANAGEMENT_CANISTER_ID = 'aaaaa-aa';\n// IC0 domain info\nconst IC0_DOMAIN = 'ic0.app';\nconst IC0_SUB_DOMAIN = '.ic0.app';\nconst ICP0_DOMAIN = 'icp0.io';\nconst ICP0_SUB_DOMAIN = '.icp0.io';\nconst ICP_API_DOMAIN = 'icp-api.io';\nconst ICP_API_SUB_DOMAIN = '.icp-api.io';\nclass HttpDefaultFetchError extends AgentError {\n constructor(message) {\n super(message);\n this.message = message;\n }\n}\nexport class IdentityInvalidError extends AgentError {\n constructor(message) {\n super(message);\n this.message = message;\n }\n}\nfunction getDefaultFetch() {\n let defaultFetch;\n if (typeof window !== 'undefined') {\n // Browser context\n if (window.fetch) {\n defaultFetch = window.fetch.bind(window);\n }\n else {\n throw new HttpDefaultFetchError('Fetch implementation was not available. You appear to be in a browser context, but window.fetch was not present.');\n }\n }\n else if (typeof global !== 'undefined') {\n // Node context\n if (global.fetch) {\n defaultFetch = global.fetch.bind(global);\n }\n else {\n throw new HttpDefaultFetchError('Fetch implementation was not available. You appear to be in a Node.js context, but global.fetch was not available.');\n }\n }\n else if (typeof self !== 'undefined') {\n if (self.fetch) {\n defaultFetch = self.fetch.bind(self);\n }\n }\n if (defaultFetch) {\n return defaultFetch;\n }\n throw new HttpDefaultFetchError('Fetch implementation was not available. Please provide fetch to the HttpAgent constructor, or ensure it is available in the window or global context.');\n}\nfunction determineHost(configuredHost) {\n let host;\n if (configuredHost !== undefined) {\n if (!configuredHost.match(/^[a-z]+:/) && typeof window !== 'undefined') {\n host = new URL(window.location.protocol + '//' + configuredHost);\n }\n else {\n host = new URL(configuredHost);\n }\n }\n else {\n // Mainnet, local, and remote environments will have the api route available\n const knownHosts = ['ic0.app', 'icp0.io', '127.0.0.1', 'localhost'];\n const remoteHosts = ['.github.dev', '.gitpod.io'];\n const location = typeof window !== 'undefined' ? window.location : undefined;\n const hostname = location === null || location === void 0 ? void 0 : location.hostname;\n let knownHost;\n if (hostname && typeof hostname === 'string') {\n if (remoteHosts.some(host => hostname.endsWith(host))) {\n knownHost = hostname;\n }\n else {\n knownHost = knownHosts.find(host => hostname.endsWith(host));\n }\n }\n if (location && knownHost) {\n // If the user is on a boundary-node provided host, we can use the same host for the agent\n host = new URL(`${location.protocol}//${knownHost}${location.port ? ':' + location.port : ''}`);\n }\n else {\n host = new URL('https://icp-api.io');\n }\n }\n return host.toString();\n}\n/**\n * A HTTP agent allows users to interact with a client of the internet computer\nusing the available methods. It exposes an API that closely follows the\npublic view of the internet computer, and is not intended to be exposed\ndirectly to the majority of users due to its low-level interface.\n * There is a pipeline to apply transformations to the request before sending\nit to the client. This is to decouple signature, nonce generation and\nother computations so that this class can stay as simple as possible while\nallowing extensions.\n */\nexport class HttpAgent {\n /**\n * @param options - Options for the HttpAgent\n * @deprecated Use `HttpAgent.create` or `HttpAgent.createSync` instead\n */\n constructor(options = {}) {\n var _a;\n _HttpAgent_instances.add(this);\n _HttpAgent_identity.set(this, void 0);\n _HttpAgent_fetch.set(this, void 0);\n _HttpAgent_fetchOptions.set(this, void 0);\n _HttpAgent_callOptions.set(this, void 0);\n _HttpAgent_timeDiffMsecs.set(this, 0);\n _HttpAgent_credentials.set(this, void 0);\n _HttpAgent_rootKeyFetched.set(this, false);\n _HttpAgent_retryTimes.set(this, void 0); // Retry requests N times before erroring by default\n _HttpAgent_backoffStrategy.set(this, void 0);\n _HttpAgent_maxIngressExpiryInMinutes.set(this, void 0);\n // Public signature to help with type checking.\n this._isAgent = true;\n this.config = {};\n // The UTC time in milliseconds when the latest request was made\n _HttpAgent_waterMark.set(this, 0);\n this.log = new ObservableLog();\n _HttpAgent_queryPipeline.set(this, []);\n _HttpAgent_updatePipeline.set(this, []);\n _HttpAgent_subnetKeys.set(this, new ExpirableMap({\n expirationTime: 5 * 60 * 1000, // 5 minutes\n }));\n _HttpAgent_verifyQuerySignatures.set(this, true);\n /**\n * See https://internetcomputer.org/docs/current/references/ic-interface-spec/#http-query for details on validation\n * @param queryResponse - The response from the query\n * @param subnetStatus - The subnet status, including all node keys\n * @returns ApiQueryResponse\n */\n _HttpAgent_verifyQueryResponse.set(this, (queryResponse, subnetStatus) => {\n if (__classPrivateFieldGet(this, _HttpAgent_verifyQuerySignatures, \"f\") === false) {\n // This should not be called if the user has disabled verification\n return queryResponse;\n }\n if (!subnetStatus) {\n throw new CertificateVerificationError('Invalid signature from replica signed query: no matching node key found.');\n }\n const { status, signatures = [], requestId } = queryResponse;\n const domainSeparator = new TextEncoder().encode('\\x0Bic-response');\n for (const sig of signatures) {\n const { timestamp, identity } = sig;\n const nodeId = Principal.fromUint8Array(identity).toText();\n let hash;\n // Hash is constructed differently depending on the status\n if (status === 'replied') {\n const { reply } = queryResponse;\n hash = hashOfMap({\n status: status,\n reply: reply,\n timestamp: BigInt(timestamp),\n request_id: requestId,\n });\n }\n else if (status === 'rejected') {\n const { reject_code, reject_message, error_code } = queryResponse;\n hash = hashOfMap({\n status: status,\n reject_code: reject_code,\n reject_message: reject_message,\n error_code: error_code,\n timestamp: BigInt(timestamp),\n request_id: requestId,\n });\n }\n else {\n throw new Error(`Unknown status: ${status}`);\n }\n const separatorWithHash = concat(domainSeparator, new Uint8Array(hash));\n // FIX: check for match without verifying N times\n const pubKey = subnetStatus === null || subnetStatus === void 0 ? void 0 : subnetStatus.nodeKeys.get(nodeId);\n if (!pubKey) {\n throw new CertificateVerificationError('Invalid signature from replica signed query: no matching node key found.');\n }\n const rawKey = Ed25519PublicKey.fromDer(pubKey).rawKey;\n const valid = ed25519.verify(sig.signature, new Uint8Array(separatorWithHash), new Uint8Array(rawKey));\n if (valid)\n return queryResponse;\n throw new CertificateVerificationError(`Invalid signature from replica ${nodeId} signed query.`);\n }\n return queryResponse;\n });\n this.config = options;\n __classPrivateFieldSet(this, _HttpAgent_fetch, options.fetch || getDefaultFetch() || fetch.bind(global), \"f\");\n __classPrivateFieldSet(this, _HttpAgent_fetchOptions, options.fetchOptions, \"f\");\n __classPrivateFieldSet(this, _HttpAgent_callOptions, options.callOptions, \"f\");\n this.rootKey = options.rootKey ? options.rootKey : fromHex(IC_ROOT_KEY);\n const host = determineHost(options.host);\n this.host = new URL(host);\n if (options.verifyQuerySignatures !== undefined) {\n __classPrivateFieldSet(this, _HttpAgent_verifyQuerySignatures, options.verifyQuerySignatures, \"f\");\n }\n // Default is 3\n __classPrivateFieldSet(this, _HttpAgent_retryTimes, (_a = options.retryTimes) !== null && _a !== void 0 ? _a : 3, \"f\");\n // Delay strategy for retries. Default is exponential backoff\n const defaultBackoffFactory = () => new ExponentialBackoff({\n maxIterations: __classPrivateFieldGet(this, _HttpAgent_retryTimes, \"f\"),\n });\n __classPrivateFieldSet(this, _HttpAgent_backoffStrategy, options.backoffStrategy || defaultBackoffFactory, \"f\");\n // Rewrite to avoid redirects\n if (this.host.hostname.endsWith(IC0_SUB_DOMAIN)) {\n this.host.hostname = IC0_DOMAIN;\n }\n else if (this.host.hostname.endsWith(ICP0_SUB_DOMAIN)) {\n this.host.hostname = ICP0_DOMAIN;\n }\n else if (this.host.hostname.endsWith(ICP_API_SUB_DOMAIN)) {\n this.host.hostname = ICP_API_DOMAIN;\n }\n if (options.credentials) {\n const { name, password } = options.credentials;\n __classPrivateFieldSet(this, _HttpAgent_credentials, `${name}${password ? ':' + password : ''}`, \"f\");\n }\n __classPrivateFieldSet(this, _HttpAgent_identity, Promise.resolve(options.identity || new AnonymousIdentity()), \"f\");\n if (options.ingressExpiryInMinutes && options.ingressExpiryInMinutes > 5) {\n throw new AgentError(`The maximum ingress expiry time is 5 minutes. Provided ingress expiry time is ${options.ingressExpiryInMinutes} minutes.`);\n }\n if (options.ingressExpiryInMinutes && options.ingressExpiryInMinutes <= 0) {\n throw new AgentError(`Ingress expiry time must be greater than 0. Provided ingress expiry time is ${options.ingressExpiryInMinutes} minutes.`);\n }\n __classPrivateFieldSet(this, _HttpAgent_maxIngressExpiryInMinutes, options.ingressExpiryInMinutes || 5, \"f\");\n // Add a nonce transform to ensure calls are unique\n this.addTransform('update', makeNonceTransform(makeNonce));\n if (options.useQueryNonces) {\n this.addTransform('query', makeNonceTransform(makeNonce));\n }\n if (options.logToConsole) {\n this.log.subscribe(log => {\n if (log.level === 'error') {\n console.error(log.message);\n }\n else if (log.level === 'warn') {\n console.warn(log.message);\n }\n else {\n console.log(log.message);\n }\n });\n }\n }\n get waterMark() {\n return __classPrivateFieldGet(this, _HttpAgent_waterMark, \"f\");\n }\n static createSync(options = {}) {\n return new this(Object.assign({}, options));\n }\n static async create(options = {\n shouldFetchRootKey: false,\n }) {\n const agent = HttpAgent.createSync(options);\n const initPromises = [agent.syncTime()];\n if (agent.host.toString() !== 'https://icp-api.io' && options.shouldFetchRootKey) {\n initPromises.push(agent.fetchRootKey());\n }\n await Promise.all(initPromises);\n return agent;\n }\n static async from(agent) {\n var _a;\n try {\n if ('config' in agent) {\n return await HttpAgent.create(agent.config);\n }\n return await HttpAgent.create({\n fetch: agent._fetch,\n fetchOptions: agent._fetchOptions,\n callOptions: agent._callOptions,\n host: agent._host.toString(),\n identity: (_a = agent._identity) !== null && _a !== void 0 ? _a : undefined,\n });\n }\n catch (_b) {\n throw new AgentError('Failed to create agent from provided agent');\n }\n }\n isLocal() {\n const hostname = this.host.hostname;\n return hostname === '127.0.0.1' || hostname.endsWith('127.0.0.1');\n }\n addTransform(type, fn, priority = fn.priority || 0) {\n if (type === 'update') {\n // Keep the pipeline sorted at all time, by priority.\n const i = __classPrivateFieldGet(this, _HttpAgent_updatePipeline, \"f\").findIndex(x => (x.priority || 0) < priority);\n __classPrivateFieldGet(this, _HttpAgent_updatePipeline, \"f\").splice(i >= 0 ? i : __classPrivateFieldGet(this, _HttpAgent_updatePipeline, \"f\").length, 0, Object.assign(fn, { priority }));\n }\n else if (type === 'query') {\n // Keep the pipeline sorted at all time, by priority.\n const i = __classPrivateFieldGet(this, _HttpAgent_queryPipeline, \"f\").findIndex(x => (x.priority || 0) < priority);\n __classPrivateFieldGet(this, _HttpAgent_queryPipeline, \"f\").splice(i >= 0 ? i : __classPrivateFieldGet(this, _HttpAgent_queryPipeline, \"f\").length, 0, Object.assign(fn, { priority }));\n }\n }\n async getPrincipal() {\n if (!__classPrivateFieldGet(this, _HttpAgent_identity, \"f\")) {\n throw new IdentityInvalidError(\"This identity has expired due this application's security policy. Please refresh your authentication.\");\n }\n return (await __classPrivateFieldGet(this, _HttpAgent_identity, \"f\")).getPrincipal();\n }\n async call(canisterId, options, identity) {\n var _a;\n // TODO - restore this value\n const callSync = (_a = options.callSync) !== null && _a !== void 0 ? _a : true;\n const id = await (identity !== undefined ? await identity : await __classPrivateFieldGet(this, _HttpAgent_identity, \"f\"));\n if (!id) {\n throw new IdentityInvalidError(\"This identity has expired due this application's security policy. Please refresh your authentication.\");\n }\n const canister = Principal.from(canisterId);\n const ecid = options.effectiveCanisterId\n ? Principal.from(options.effectiveCanisterId)\n : canister;\n const sender = id.getPrincipal() || Principal.anonymous();\n let ingress_expiry = new Expiry(__classPrivateFieldGet(this, _HttpAgent_maxIngressExpiryInMinutes, \"f\") * MINUTE_TO_MSECS);\n // If the value is off by more than 30 seconds, reconcile system time with the network\n if (Math.abs(__classPrivateFieldGet(this, _HttpAgent_timeDiffMsecs, \"f\")) > 1000 * 30) {\n ingress_expiry = new Expiry(__classPrivateFieldGet(this, _HttpAgent_maxIngressExpiryInMinutes, \"f\") * MINUTE_TO_MSECS + __classPrivateFieldGet(this, _HttpAgent_timeDiffMsecs, \"f\"));\n }\n const submit = {\n request_type: SubmitRequestType.Call,\n canister_id: canister,\n method_name: options.methodName,\n arg: options.arg,\n sender,\n ingress_expiry,\n };\n let transformedRequest = (await this._transform({\n request: {\n body: null,\n method: 'POST',\n headers: Object.assign({ 'Content-Type': 'application/cbor' }, (__classPrivateFieldGet(this, _HttpAgent_credentials, \"f\") ? { Authorization: 'Basic ' + btoa(__classPrivateFieldGet(this, _HttpAgent_credentials, \"f\")) } : {})),\n },\n endpoint: \"call\" /* Endpoint.Call */,\n body: submit,\n }));\n const nonce = transformedRequest.body.nonce\n ? toNonce(transformedRequest.body.nonce)\n : undefined;\n submit.nonce = nonce;\n function toNonce(buf) {\n return new Uint8Array(buf);\n }\n // Apply transform for identity.\n transformedRequest = (await id.transformRequest(transformedRequest));\n const body = cbor.encode(transformedRequest.body);\n const backoff = __classPrivateFieldGet(this, _HttpAgent_backoffStrategy, \"f\").call(this);\n try {\n // Attempt v3 sync call\n const requestSync = () => {\n this.log.print(`fetching \"/api/v3/canister/${ecid.toText()}/call\" with request:`, transformedRequest);\n return __classPrivateFieldGet(this, _HttpAgent_fetch, \"f\").call(this, '' + new URL(`/api/v3/canister/${ecid.toText()}/call`, this.host), Object.assign(Object.assign(Object.assign({}, __classPrivateFieldGet(this, _HttpAgent_callOptions, \"f\")), transformedRequest.request), { body }));\n };\n const requestAsync = () => {\n this.log.print(`fetching \"/api/v2/canister/${ecid.toText()}/call\" with request:`, transformedRequest);\n return __classPrivateFieldGet(this, _HttpAgent_fetch, \"f\").call(this, '' + new URL(`/api/v2/canister/${ecid.toText()}/call`, this.host), Object.assign(Object.assign(Object.assign({}, __classPrivateFieldGet(this, _HttpAgent_callOptions, \"f\")), transformedRequest.request), { body }));\n };\n const request = __classPrivateFieldGet(this, _HttpAgent_instances, \"m\", _HttpAgent_requestAndRetry).call(this, {\n request: callSync ? requestSync : requestAsync,\n backoff,\n tries: 0,\n });\n const requestId = requestIdOf(submit);\n const response = await request;\n const responseBuffer = await response.arrayBuffer();\n const responseBody = (response.status === 200 && responseBuffer.byteLength > 0\n ? cbor.decode(responseBuffer)\n : null);\n // Update the watermark with the latest time from consensus\n if (responseBody && 'certificate' in responseBody) {\n const time = await this.parseTimeFromResponse({\n certificate: responseBody.certificate,\n });\n __classPrivateFieldSet(this, _HttpAgent_waterMark, time, \"f\");\n }\n return {\n requestId,\n response: {\n ok: response.ok,\n status: response.status,\n statusText: response.statusText,\n body: responseBody,\n headers: httpHeadersTransform(response.headers),\n },\n requestDetails: submit,\n };\n }\n catch (error) {\n // If the error is due to the v3 api not being supported, fall back to v2\n if (error.message.includes('v3 api not supported.')) {\n this.log.warn('v3 api not supported. Fall back to v2');\n return this.call(canisterId, Object.assign(Object.assign({}, options), { \n // disable v3 api\n callSync: false }), identity);\n }\n this.log.error('Error while making call:', error);\n throw error;\n }\n }\n async query(canisterId, fields, identity) {\n const backoff = __classPrivateFieldGet(this, _HttpAgent_backoffStrategy, \"f\").call(this);\n const ecid = fields.effectiveCanisterId\n ? Principal.from(fields.effectiveCanisterId)\n : Principal.from(canisterId);\n this.log.print(`ecid ${ecid.toString()}`);\n this.log.print(`canisterId ${canisterId.toString()}`);\n const makeQuery = async () => {\n const id = await (identity !== undefined ? identity : __classPrivateFieldGet(this, _HttpAgent_identity, \"f\"));\n if (!id) {\n throw new IdentityInvalidError(\"This identity has expired due this application's security policy. Please refresh your authentication.\");\n }\n const canister = Principal.from(canisterId);\n const sender = (id === null || id === void 0 ? void 0 : id.getPrincipal()) || Principal.anonymous();\n const request = {\n request_type: \"query\" /* ReadRequestType.Query */,\n canister_id: canister,\n method_name: fields.methodName,\n arg: fields.arg,\n sender,\n ingress_expiry: new Expiry(__classPrivateFieldGet(this, _HttpAgent_maxIngressExpiryInMinutes, \"f\") * MINUTE_TO_MSECS),\n };\n const requestId = requestIdOf(request);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let transformedRequest = await this._transform({\n request: {\n method: 'POST',\n headers: Object.assign({ 'Content-Type': 'application/cbor' }, (__classPrivateFieldGet(this, _HttpAgent_credentials, \"f\") ? { Authorization: 'Basic ' + btoa(__classPrivateFieldGet(this, _HttpAgent_credentials, \"f\")) } : {})),\n },\n endpoint: \"read\" /* Endpoint.Query */,\n body: request,\n });\n // Apply transform for identity.\n transformedRequest = (await (id === null || id === void 0 ? void 0 : id.transformRequest(transformedRequest)));\n const body = cbor.encode(transformedRequest.body);\n const args = {\n canister: canister.toText(),\n ecid,\n transformedRequest,\n body,\n requestId,\n backoff,\n tries: 0,\n };\n return {\n requestDetails: request,\n query: await __classPrivateFieldGet(this, _HttpAgent_instances, \"m\", _HttpAgent_requestAndRetryQuery).call(this, args),\n };\n };\n const getSubnetStatus = async () => {\n if (!__classPrivateFieldGet(this, _HttpAgent_verifyQuerySignatures, \"f\")) {\n return undefined;\n }\n const subnetStatus = __classPrivateFieldGet(this, _HttpAgent_subnetKeys, \"f\").get(ecid.toString());\n if (subnetStatus) {\n return subnetStatus;\n }\n await this.fetchSubnetKeys(ecid.toString());\n return __classPrivateFieldGet(this, _HttpAgent_subnetKeys, \"f\").get(ecid.toString());\n };\n // Attempt to make the query i=retryTimes times\n // Make query and fetch subnet keys in parallel\n const [queryResult, subnetStatus] = await Promise.all([makeQuery(), getSubnetStatus()]);\n const { requestDetails, query } = queryResult;\n const queryWithDetails = Object.assign(Object.assign({}, query), { requestDetails });\n this.log.print('Query response:', queryWithDetails);\n // Skip verification if the user has disabled it\n if (!__classPrivateFieldGet(this, _HttpAgent_verifyQuerySignatures, \"f\")) {\n return queryWithDetails;\n }\n try {\n return __classPrivateFieldGet(this, _HttpAgent_verifyQueryResponse, \"f\").call(this, queryWithDetails, subnetStatus);\n }\n catch (_a) {\n // In case the node signatures have changed, refresh the subnet keys and try again\n this.log.warn('Query response verification failed. Retrying with fresh subnet keys.');\n __classPrivateFieldGet(this, _HttpAgent_subnetKeys, \"f\").delete(canisterId.toString());\n await this.fetchSubnetKeys(ecid.toString());\n const updatedSubnetStatus = __classPrivateFieldGet(this, _HttpAgent_subnetKeys, \"f\").get(canisterId.toString());\n if (!updatedSubnetStatus) {\n throw new CertificateVerificationError('Invalid signature from replica signed query: no matching node key found.');\n }\n return __classPrivateFieldGet(this, _HttpAgent_verifyQueryResponse, \"f\").call(this, queryWithDetails, updatedSubnetStatus);\n }\n }\n async createReadStateRequest(fields, identity) {\n const id = await (identity !== undefined ? await identity : await __classPrivateFieldGet(this, _HttpAgent_identity, \"f\"));\n if (!id) {\n throw new IdentityInvalidError(\"This identity has expired due this application's security policy. Please refresh your authentication.\");\n }\n const sender = (id === null || id === void 0 ? void 0 : id.getPrincipal()) || Principal.anonymous();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const transformedRequest = await this._transform({\n request: {\n method: 'POST',\n headers: Object.assign({ 'Content-Type': 'application/cbor' }, (__classPrivateFieldGet(this, _HttpAgent_credentials, \"f\") ? { Authorization: 'Basic ' + btoa(__classPrivateFieldGet(this, _HttpAgent_credentials, \"f\")) } : {})),\n },\n endpoint: \"read_state\" /* Endpoint.ReadState */,\n body: {\n request_type: \"read_state\" /* ReadRequestType.ReadState */,\n paths: fields.paths,\n sender,\n ingress_expiry: new Expiry(__classPrivateFieldGet(this, _HttpAgent_maxIngressExpiryInMinutes, \"f\") * MINUTE_TO_MSECS),\n },\n });\n // Apply transform for identity.\n return id === null || id === void 0 ? void 0 : id.transformRequest(transformedRequest);\n }\n async readState(canisterId, fields, identity, \n // eslint-disable-next-line\n request) {\n const canister = typeof canisterId === 'string' ? Principal.fromText(canisterId) : canisterId;\n const transformedRequest = request !== null && request !== void 0 ? request : (await this.createReadStateRequest(fields, identity));\n // With read_state, we should always use a fresh expiry, even beyond the point where the initial request would have expired\n const bodyWithAdjustedExpiry = Object.assign(Object.assign({}, transformedRequest.body), { ingress_expiry: new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS) });\n const body = cbor.encode(bodyWithAdjustedExpiry);\n this.log.print(`fetching \"/api/v2/canister/${canister}/read_state\" with request:`, transformedRequest);\n // TODO - https://dfinity.atlassian.net/browse/SDK-1092\n const backoff = __classPrivateFieldGet(this, _HttpAgent_backoffStrategy, \"f\").call(this);\n try {\n const response = await __classPrivateFieldGet(this, _HttpAgent_instances, \"m\", _HttpAgent_requestAndRetry).call(this, {\n request: () => __classPrivateFieldGet(this, _HttpAgent_fetch, \"f\").call(this, '' + new URL(`/api/v2/canister/${canister.toString()}/read_state`, this.host), Object.assign(Object.assign(Object.assign({}, __classPrivateFieldGet(this, _HttpAgent_fetchOptions, \"f\")), transformedRequest.request), { body })),\n backoff,\n tries: 0,\n });\n if (!response.ok) {\n throw new Error(`Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${await response.text()}\\n`);\n }\n const decodedResponse = cbor.decode(await response.arrayBuffer());\n this.log.print('Read state response:', decodedResponse);\n const parsedTime = await this.parseTimeFromResponse(decodedResponse);\n if (parsedTime > 0) {\n this.log.print('Read state response time:', parsedTime);\n __classPrivateFieldSet(this, _HttpAgent_waterMark, parsedTime, \"f\");\n }\n return decodedResponse;\n }\n catch (error) {\n this.log.error('Caught exception while attempting to read state', error);\n throw error;\n }\n }\n async parseTimeFromResponse(response) {\n let tree;\n if (response.certificate) {\n const decoded = cbor.decode(response.certificate);\n if (decoded && 'tree' in decoded) {\n tree = decoded.tree;\n }\n else {\n throw new Error('Could not decode time from response');\n }\n const timeLookup = lookup_path(['time'], tree);\n if (timeLookup.status !== LookupStatus.Found) {\n throw new Error('Time was not found in the response or was not in its expected format.');\n }\n if (!(timeLookup.value instanceof ArrayBuffer) && !ArrayBuffer.isView(timeLookup)) {\n throw new Error('Time was not found in the response or was not in its expected format.');\n }\n const date = decodeTime(bufFromBufLike(timeLookup.value));\n this.log.print('Time from response:', date);\n this.log.print('Time from response in milliseconds:', Number(date));\n return Number(date);\n }\n else {\n this.log.warn('No certificate found in response');\n }\n return 0;\n }\n /**\n * Allows agent to sync its time with the network. Can be called during intialization or mid-lifecycle if the device's clock has drifted away from the network time. This is necessary to set the Expiry for a request\n * @param {Principal} canisterId - Pass a canister ID if you need to sync the time with a particular replica. Uses the management canister by default\n */\n async syncTime(canisterId) {\n const CanisterStatus = await import('../../canisterStatus');\n const callTime = Date.now();\n try {\n if (!canisterId) {\n this.log.print('Syncing time with the IC. No canisterId provided, so falling back to ryjl3-tyaaa-aaaaa-aaaba-cai');\n }\n const status = await CanisterStatus.request({\n // Fall back with canisterId of the ICP Ledger\n canisterId: canisterId !== null && canisterId !== void 0 ? canisterId : Principal.from('ryjl3-tyaaa-aaaaa-aaaba-cai'),\n agent: this,\n paths: ['time'],\n });\n const replicaTime = status.get('time');\n if (replicaTime) {\n __classPrivateFieldSet(this, _HttpAgent_timeDiffMsecs, Number(replicaTime) - Number(callTime), \"f\");\n }\n }\n catch (error) {\n this.log.error('Caught exception while attempting to sync time', error);\n }\n }\n async status() {\n const headers = __classPrivateFieldGet(this, _HttpAgent_credentials, \"f\")\n ? {\n Authorization: 'Basic ' + btoa(__classPrivateFieldGet(this, _HttpAgent_credentials, \"f\")),\n }\n : {};\n this.log.print(`fetching \"/api/v2/status\"`);\n const backoff = __classPrivateFieldGet(this, _HttpAgent_backoffStrategy, \"f\").call(this);\n const response = await __classPrivateFieldGet(this, _HttpAgent_instances, \"m\", _HttpAgent_requestAndRetry).call(this, {\n backoff,\n request: () => __classPrivateFieldGet(this, _HttpAgent_fetch, \"f\").call(this, '' + new URL(`/api/v2/status`, this.host), Object.assign({ headers }, __classPrivateFieldGet(this, _HttpAgent_fetchOptions, \"f\"))),\n tries: 0,\n });\n return cbor.decode(await response.arrayBuffer());\n }\n async fetchRootKey() {\n if (!__classPrivateFieldGet(this, _HttpAgent_rootKeyFetched, \"f\")) {\n const status = await this.status();\n // Hex-encoded version of the replica root key\n this.rootKey = status.root_key;\n __classPrivateFieldSet(this, _HttpAgent_rootKeyFetched, true, \"f\");\n }\n return this.rootKey;\n }\n invalidateIdentity() {\n __classPrivateFieldSet(this, _HttpAgent_identity, null, \"f\");\n }\n replaceIdentity(identity) {\n __classPrivateFieldSet(this, _HttpAgent_identity, Promise.resolve(identity), \"f\");\n }\n async fetchSubnetKeys(canisterId) {\n const effectiveCanisterId = Principal.from(canisterId);\n const response = await request({\n canisterId: effectiveCanisterId,\n paths: ['subnet'],\n agent: this,\n });\n const subnetResponse = response.get('subnet');\n if (subnetResponse && typeof subnetResponse === 'object' && 'nodeKeys' in subnetResponse) {\n __classPrivateFieldGet(this, _HttpAgent_subnetKeys, \"f\").set(effectiveCanisterId.toText(), subnetResponse);\n return subnetResponse;\n }\n // If the subnet status is not returned, return undefined\n return undefined;\n }\n _transform(request) {\n let p = Promise.resolve(request);\n if (request.endpoint === \"call\" /* Endpoint.Call */) {\n for (const fn of __classPrivateFieldGet(this, _HttpAgent_updatePipeline, \"f\")) {\n p = p.then(r => fn(r).then(r2 => r2 || r));\n }\n }\n else {\n for (const fn of __classPrivateFieldGet(this, _HttpAgent_queryPipeline, \"f\")) {\n p = p.then(r => fn(r).then(r2 => r2 || r));\n }\n }\n return p;\n }\n}\n_HttpAgent_identity = new WeakMap(), _HttpAgent_fetch = new WeakMap(), _HttpAgent_fetchOptions = new WeakMap(), _HttpAgent_callOptions = new WeakMap(), _HttpAgent_timeDiffMsecs = new WeakMap(), _HttpAgent_credentials = new WeakMap(), _HttpAgent_rootKeyFetched = new WeakMap(), _HttpAgent_retryTimes = new WeakMap(), _HttpAgent_backoffStrategy = new WeakMap(), _HttpAgent_maxIngressExpiryInMinutes = new WeakMap(), _HttpAgent_waterMark = new WeakMap(), _HttpAgent_queryPipeline = new WeakMap(), _HttpAgent_updatePipeline = new WeakMap(), _HttpAgent_subnetKeys = new WeakMap(), _HttpAgent_verifyQuerySignatures = new WeakMap(), _HttpAgent_verifyQueryResponse = new WeakMap(), _HttpAgent_instances = new WeakSet(), _HttpAgent_requestAndRetryQuery = async function _HttpAgent_requestAndRetryQuery(args) {\n var _a, _b;\n const { ecid, transformedRequest, body, requestId, backoff, tries } = args;\n const delay = tries === 0 ? 0 : backoff.next();\n this.log.print(`fetching \"/api/v2/canister/${ecid.toString()}/query\" with tries:`, {\n tries,\n backoff,\n delay,\n });\n // If delay is null, the backoff strategy is exhausted due to a maximum number of retries, duration, or other reason\n if (delay === null) {\n throw new AgentError(`Timestamp failed to pass the watermark after retrying the configured ${__classPrivateFieldGet(this, _HttpAgent_retryTimes, \"f\")} times. We cannot guarantee the integrity of the response since it could be a replay attack.`);\n }\n if (delay > 0) {\n await new Promise(resolve => setTimeout(resolve, delay));\n }\n let response;\n // Make the request and retry if it throws an error\n try {\n this.log.print(`fetching \"/api/v2/canister/${ecid.toString()}/query\" with request:`, transformedRequest);\n const fetchResponse = await __classPrivateFieldGet(this, _HttpAgent_fetch, \"f\").call(this, '' + new URL(`/api/v2/canister/${ecid.toString()}/query`, this.host), Object.assign(Object.assign(Object.assign({}, __classPrivateFieldGet(this, _HttpAgent_fetchOptions, \"f\")), transformedRequest.request), { body }));\n if (fetchResponse.status === 200) {\n const queryResponse = cbor.decode(await fetchResponse.arrayBuffer());\n response = Object.assign(Object.assign({}, queryResponse), { httpDetails: {\n ok: fetchResponse.ok,\n status: fetchResponse.status,\n statusText: fetchResponse.statusText,\n headers: httpHeadersTransform(fetchResponse.headers),\n }, requestId });\n }\n else {\n throw new AgentHTTPResponseError(`Gateway returned an error:\\n` +\n ` Code: ${fetchResponse.status} (${fetchResponse.statusText})\\n` +\n ` Body: ${await fetchResponse.text()}\\n`, {\n ok: fetchResponse.ok,\n status: fetchResponse.status,\n statusText: fetchResponse.statusText,\n headers: httpHeadersTransform(fetchResponse.headers),\n });\n }\n }\n catch (error) {\n if (tries < __classPrivateFieldGet(this, _HttpAgent_retryTimes, \"f\")) {\n this.log.warn(`Caught exception while attempting to make query:\\n` +\n ` ${error}\\n` +\n ` Retrying query.`);\n return await __classPrivateFieldGet(this, _HttpAgent_instances, \"m\", _HttpAgent_requestAndRetryQuery).call(this, Object.assign(Object.assign({}, args), { tries: tries + 1 }));\n }\n throw error;\n }\n const timestamp = (_b = (_a = response.signatures) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.timestamp;\n // Skip watermark verification if the user has set verifyQuerySignatures to false\n if (!__classPrivateFieldGet(this, _HttpAgent_verifyQuerySignatures, \"f\")) {\n return response;\n }\n if (!timestamp) {\n throw new Error('Timestamp not found in query response. This suggests a malformed or malicious response.');\n }\n // Convert the timestamp to milliseconds\n const timeStampInMs = Number(BigInt(timestamp) / BigInt(1000000));\n this.log.print('watermark and timestamp', {\n waterMark: this.waterMark,\n timestamp: timeStampInMs,\n });\n // If the timestamp is less than the watermark, retry the request up to the retry limit\n if (Number(this.waterMark) > timeStampInMs) {\n const error = new AgentError('Timestamp is below the watermark. Retrying query.');\n this.log.error('Timestamp is below', error, {\n timestamp,\n waterMark: this.waterMark,\n });\n if (tries < __classPrivateFieldGet(this, _HttpAgent_retryTimes, \"f\")) {\n return await __classPrivateFieldGet(this, _HttpAgent_instances, \"m\", _HttpAgent_requestAndRetryQuery).call(this, Object.assign(Object.assign({}, args), { tries: tries + 1 }));\n }\n {\n throw new AgentError(`Timestamp failed to pass the watermark after retrying the configured ${__classPrivateFieldGet(this, _HttpAgent_retryTimes, \"f\")} times. We cannot guarantee the integrity of the response since it could be a replay attack.`);\n }\n }\n return response;\n}, _HttpAgent_requestAndRetry = async function _HttpAgent_requestAndRetry(args) {\n const { request, backoff, tries } = args;\n const delay = tries === 0 ? 0 : backoff.next();\n // If delay is null, the backoff strategy is exhausted due to a maximum number of retries, duration, or other reason\n if (delay === null) {\n throw new AgentError(`Timestamp failed to pass the watermark after retrying the configured ${__classPrivateFieldGet(this, _HttpAgent_retryTimes, \"f\")} times. We cannot guarantee the integrity of the response since it could be a replay attack.`);\n }\n if (delay > 0) {\n await new Promise(resolve => setTimeout(resolve, delay));\n }\n let response;\n try {\n response = await request();\n }\n catch (error) {\n if (__classPrivateFieldGet(this, _HttpAgent_retryTimes, \"f\") > tries) {\n this.log.warn(`Caught exception while attempting to make request:\\n` +\n ` ${error}\\n` +\n ` Retrying request.`);\n // Delay the request by the configured backoff strategy\n return await __classPrivateFieldGet(this, _HttpAgent_instances, \"m\", _HttpAgent_requestAndRetry).call(this, { request, backoff, tries: tries + 1 });\n }\n throw error;\n }\n if (response.ok) {\n return response;\n }\n const responseText = await response.clone().text();\n const errorMessage = `Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${responseText}\\n`;\n if (response.status === 404 && response.url.includes('api/v3')) {\n throw new AgentHTTPResponseError('v3 api not supported. Fall back to v2', {\n ok: response.ok,\n status: response.status,\n statusText: response.statusText,\n headers: httpHeadersTransform(response.headers),\n });\n }\n if (tries < __classPrivateFieldGet(this, _HttpAgent_retryTimes, \"f\")) {\n return await __classPrivateFieldGet(this, _HttpAgent_instances, \"m\", _HttpAgent_requestAndRetry).call(this, { request, backoff, tries: tries + 1 });\n }\n throw new AgentHTTPResponseError(errorMessage, {\n ok: response.ok,\n status: response.status,\n statusText: response.statusText,\n headers: httpHeadersTransform(response.headers),\n });\n};\n//# sourceMappingURL=index.js.map","import { Principal } from '@dfinity/principal';\nexport var ProxyMessageKind;\n(function (ProxyMessageKind) {\n ProxyMessageKind[\"Error\"] = \"err\";\n ProxyMessageKind[\"GetPrincipal\"] = \"gp\";\n ProxyMessageKind[\"GetPrincipalResponse\"] = \"gpr\";\n ProxyMessageKind[\"Query\"] = \"q\";\n ProxyMessageKind[\"QueryResponse\"] = \"qr\";\n ProxyMessageKind[\"Call\"] = \"c\";\n ProxyMessageKind[\"CallResponse\"] = \"cr\";\n ProxyMessageKind[\"ReadState\"] = \"rs\";\n ProxyMessageKind[\"ReadStateResponse\"] = \"rsr\";\n ProxyMessageKind[\"Status\"] = \"s\";\n ProxyMessageKind[\"StatusResponse\"] = \"sr\";\n})(ProxyMessageKind || (ProxyMessageKind = {}));\n// A Stub Agent that forwards calls to another Agent implementation.\nexport class ProxyStubAgent {\n constructor(_frontend, _agent) {\n this._frontend = _frontend;\n this._agent = _agent;\n }\n onmessage(msg) {\n switch (msg.type) {\n case ProxyMessageKind.GetPrincipal:\n this._agent.getPrincipal().then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.GetPrincipalResponse,\n response: response.toText(),\n });\n });\n break;\n case ProxyMessageKind.Query:\n this._agent.query(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.QueryResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.Call:\n this._agent.call(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.CallResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.ReadState:\n this._agent.readState(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.ReadStateResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.Status:\n this._agent.status().then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.StatusResponse,\n response,\n });\n });\n break;\n default:\n throw new Error(`Invalid message received: ${JSON.stringify(msg)}`);\n }\n }\n}\n// An Agent that forwards calls to a backend. The calls are serialized\nexport class ProxyAgent {\n constructor(_backend) {\n this._backend = _backend;\n this._nextId = 0;\n this._pendingCalls = new Map();\n this.rootKey = null;\n }\n onmessage(msg) {\n const id = msg.id;\n const maybePromise = this._pendingCalls.get(id);\n if (!maybePromise) {\n throw new Error('A proxy get the same message twice...');\n }\n this._pendingCalls.delete(id);\n const [resolve, reject] = maybePromise;\n switch (msg.type) {\n case ProxyMessageKind.Error:\n return reject(msg.error);\n case ProxyMessageKind.GetPrincipalResponse:\n case ProxyMessageKind.CallResponse:\n case ProxyMessageKind.QueryResponse:\n case ProxyMessageKind.ReadStateResponse:\n case ProxyMessageKind.StatusResponse:\n return resolve(msg.response);\n default:\n throw new Error(`Invalid message being sent to ProxyAgent: ${JSON.stringify(msg)}`);\n }\n }\n async getPrincipal() {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.GetPrincipal,\n }).then(principal => {\n if (typeof principal !== 'string') {\n throw new Error('Invalid principal received.');\n }\n return Principal.fromText(principal);\n });\n }\n readState(canisterId, fields) {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.ReadState,\n args: [canisterId.toString(), fields],\n });\n }\n call(canisterId, fields) {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Call,\n args: [canisterId.toString(), fields],\n });\n }\n status() {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Status,\n });\n }\n query(canisterId, fields) {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Query,\n args: [canisterId.toString(), fields],\n });\n }\n async _sendAndWait(msg) {\n return new Promise((resolve, reject) => {\n this._pendingCalls.set(msg.id, [resolve, reject]);\n this._backend(msg);\n });\n }\n async fetchRootKey() {\n // Hex-encoded version of the replica root key\n const rootKey = (await this.status()).root_key;\n this.rootKey = rootKey;\n return rootKey;\n }\n}\n//# sourceMappingURL=proxy.js.map","export * from './api';\nexport * from './http';\nexport * from './http/errors';\nexport * from './proxy';\nexport function getDefaultAgent() {\n const agent = typeof window === 'undefined'\n ? typeof global === 'undefined'\n ? typeof self === 'undefined'\n ? undefined\n : self.ic.agent\n : global.ic.agent\n : window.ic.agent;\n if (!agent) {\n throw new Error('No Agent could be found.');\n }\n return agent;\n}\n//# sourceMappingURL=index.js.map","import { toHex } from '../utils/buffer';\nconst FIVE_MINUTES_IN_MSEC = 5 * 60 * 1000;\n/**\n * A best practices polling strategy: wait 2 seconds before the first poll, then 1 second\n * with an exponential backoff factor of 1.2. Timeout after 5 minutes.\n */\nexport function defaultStrategy() {\n return chain(conditionalDelay(once(), 1000), backoff(1000, 1.2), timeout(FIVE_MINUTES_IN_MSEC));\n}\n/**\n * Predicate that returns true once.\n */\nexport function once() {\n let first = true;\n return async () => {\n if (first) {\n first = false;\n return true;\n }\n return false;\n };\n}\n/**\n * Delay the polling once.\n * @param condition A predicate that indicates when to delay.\n * @param timeInMsec The amount of time to delay.\n */\nexport function conditionalDelay(condition, timeInMsec) {\n return async (canisterId, requestId, status) => {\n if (await condition(canisterId, requestId, status)) {\n return new Promise(resolve => setTimeout(resolve, timeInMsec));\n }\n };\n}\n/**\n * Error out after a maximum number of polling has been done.\n * @param count The maximum attempts to poll.\n */\nexport function maxAttempts(count) {\n let attempts = count;\n return async (canisterId, requestId, status) => {\n if (--attempts <= 0) {\n throw new Error(`Failed to retrieve a reply for request after ${count} attempts:\\n` +\n ` Request ID: ${toHex(requestId)}\\n` +\n ` Request status: ${status}\\n`);\n }\n };\n}\n/**\n * Throttle polling.\n * @param throttleInMsec Amount in millisecond to wait between each polling.\n */\nexport function throttle(throttleInMsec) {\n return () => new Promise(resolve => setTimeout(resolve, throttleInMsec));\n}\n/**\n * Reject a call after a certain amount of time.\n * @param timeInMsec Time in milliseconds before the polling should be rejected.\n */\nexport function timeout(timeInMsec) {\n const end = Date.now() + timeInMsec;\n return async (canisterId, requestId, status) => {\n if (Date.now() > end) {\n throw new Error(`Request timed out after ${timeInMsec} msec:\\n` +\n ` Request ID: ${toHex(requestId)}\\n` +\n ` Request status: ${status}\\n`);\n }\n };\n}\n/**\n * A strategy that throttle, but using an exponential backoff strategy.\n * @param startingThrottleInMsec The throttle in milliseconds to start with.\n * @param backoffFactor The factor to multiple the throttle time between every poll. For\n * example if using 2, the throttle will double between every run.\n */\nexport function backoff(startingThrottleInMsec, backoffFactor) {\n let currentThrottling = startingThrottleInMsec;\n return () => new Promise(resolve => setTimeout(() => {\n currentThrottling *= backoffFactor;\n resolve();\n }, currentThrottling));\n}\n/**\n * Chain multiple polling strategy. This _chains_ the strategies, so if you pass in,\n * say, two throttling strategy of 1 second, it will result in a throttle of 2 seconds.\n * @param strategies A strategy list to chain.\n */\nexport function chain(...strategies) {\n return async (canisterId, requestId, status) => {\n for (const a of strategies) {\n await a(canisterId, requestId, status);\n }\n };\n}\n//# sourceMappingURL=strategy.js.map","import { Expiry, RequestStatusResponseStatus } from '../agent';\nimport { Certificate, lookupResultToBuffer } from '../certificate';\nimport { toHex } from '../utils/buffer';\nexport * as strategy from './strategy';\nimport { defaultStrategy } from './strategy';\nimport { DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS } from '../constants';\nexport { defaultStrategy } from './strategy';\n/**\n * Check if an object has a property\n * @param value the object that might have the property\n * @param property the key of property we're looking for\n */\nfunction hasProperty(value, property) {\n return Object.prototype.hasOwnProperty.call(value, property);\n}\n/**\n * Check if value is a signed read state request with expiry\n * @param value to check\n */\nfunction isSignedReadStateRequestWithExpiry(value) {\n return (value !== null &&\n typeof value === 'object' &&\n hasProperty(value, 'body') &&\n value.body !== null &&\n typeof value.body === 'object' &&\n hasProperty(value.body, 'content') &&\n value.body.content !== null &&\n typeof value.body.content === 'object' &&\n hasProperty(value.body.content, 'request_type') &&\n value.body.content.request_type === \"read_state\" /* ReadRequestType.ReadState */ &&\n hasProperty(value.body.content, 'ingress_expiry') &&\n typeof value.body.content.ingress_expiry === 'object' &&\n value.body.content.ingress_expiry !== null &&\n hasProperty(value.body.content.ingress_expiry, 'toCBOR') &&\n typeof value.body.content.ingress_expiry.toCBOR === 'function' &&\n hasProperty(value.body.content.ingress_expiry, 'toHash') &&\n typeof value.body.content.ingress_expiry.toHash === 'function');\n}\n/**\n * Polls the IC to check the status of the given request then\n * returns the response bytes once the request has been processed.\n * @param agent The agent to use to poll read_state.\n * @param canisterId The effective canister ID.\n * @param requestId The Request ID to poll status for.\n * @param strategy A polling strategy.\n * @param request Request for the repeated readState call.\n * @param blsVerify - optional replacement function that verifies the BLS signature of a certificate.\n */\nexport async function pollForResponse(agent, canisterId, requestId, strategy = defaultStrategy(), request, blsVerify) {\n var _a;\n const path = [new TextEncoder().encode('request_status'), requestId];\n const currentRequest = request !== null && request !== void 0 ? request : (await ((_a = agent.createReadStateRequest) === null || _a === void 0 ? void 0 : _a.call(agent, { paths: [path] })));\n // Use a fresh expiry for the repeated readState call\n if (request && isSignedReadStateRequestWithExpiry(currentRequest)) {\n currentRequest.body.content.ingress_expiry = new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS);\n }\n const state = await agent.readState(canisterId, { paths: [path] }, undefined, currentRequest);\n if (agent.rootKey == null)\n throw new Error('Agent root key not initialized before polling');\n const cert = await Certificate.create({\n certificate: state.certificate,\n rootKey: agent.rootKey,\n canisterId: canisterId,\n blsVerify,\n });\n const maybeBuf = lookupResultToBuffer(cert.lookup([...path, new TextEncoder().encode('status')]));\n let status;\n if (typeof maybeBuf === 'undefined') {\n // Missing requestId means we need to wait\n status = RequestStatusResponseStatus.Unknown;\n }\n else {\n status = new TextDecoder().decode(maybeBuf);\n }\n switch (status) {\n case RequestStatusResponseStatus.Replied: {\n return {\n reply: lookupResultToBuffer(cert.lookup([...path, 'reply'])),\n certificate: cert,\n };\n }\n case RequestStatusResponseStatus.Received:\n case RequestStatusResponseStatus.Unknown:\n case RequestStatusResponseStatus.Processing:\n // Execute the polling strategy, then retry.\n await strategy(canisterId, requestId, status);\n return pollForResponse(agent, canisterId, requestId, strategy, currentRequest, blsVerify);\n case RequestStatusResponseStatus.Rejected: {\n const rejectCode = new Uint8Array(lookupResultToBuffer(cert.lookup([...path, 'reject_code'])))[0];\n const rejectMessage = new TextDecoder().decode(lookupResultToBuffer(cert.lookup([...path, 'reject_message'])));\n throw new Error(`Call was rejected:\\n` +\n ` Request ID: ${toHex(requestId)}\\n` +\n ` Reject code: ${rejectCode}\\n` +\n ` Reject text: ${rejectMessage}\\n`);\n }\n case RequestStatusResponseStatus.Done:\n // This is _technically_ not an error, but we still didn't see the `Replied` status so\n // we don't know the result and cannot decode it.\n throw new Error(`Call was marked as done but we never saw the reply:\\n` +\n ` Request ID: ${toHex(requestId)}\\n`);\n }\n throw new Error('unreachable');\n}\n//# sourceMappingURL=index.js.map","/*\n * This file is generated from the candid for asset management.\n * didc version: 0.4.0\n */\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nexport default ({ IDL }) => {\n const bitcoin_network = IDL.Variant({\n mainnet: IDL.Null,\n testnet: IDL.Null,\n });\n const bitcoin_address = IDL.Text;\n const bitcoin_get_balance_args = IDL.Record({\n network: bitcoin_network,\n address: bitcoin_address,\n min_confirmations: IDL.Opt(IDL.Nat32),\n });\n const satoshi = IDL.Nat64;\n const bitcoin_get_balance_result = satoshi;\n const bitcoin_block_height = IDL.Nat32;\n const bitcoin_get_block_headers_args = IDL.Record({\n start_height: bitcoin_block_height,\n end_height: IDL.Opt(bitcoin_block_height),\n network: bitcoin_network,\n });\n const bitcoin_block_header = IDL.Vec(IDL.Nat8);\n const bitcoin_get_block_headers_result = IDL.Record({\n tip_height: bitcoin_block_height,\n block_headers: IDL.Vec(bitcoin_block_header),\n });\n const bitcoin_get_current_fee_percentiles_args = IDL.Record({\n network: bitcoin_network,\n });\n const millisatoshi_per_byte = IDL.Nat64;\n const bitcoin_get_current_fee_percentiles_result = IDL.Vec(millisatoshi_per_byte);\n const bitcoin_get_utxos_args = IDL.Record({\n network: bitcoin_network,\n filter: IDL.Opt(IDL.Variant({\n page: IDL.Vec(IDL.Nat8),\n min_confirmations: IDL.Nat32,\n })),\n address: bitcoin_address,\n });\n const bitcoin_block_hash = IDL.Vec(IDL.Nat8);\n const outpoint = IDL.Record({\n txid: IDL.Vec(IDL.Nat8),\n vout: IDL.Nat32,\n });\n const utxo = IDL.Record({\n height: IDL.Nat32,\n value: satoshi,\n outpoint: outpoint,\n });\n const bitcoin_get_utxos_result = IDL.Record({\n next_page: IDL.Opt(IDL.Vec(IDL.Nat8)),\n tip_height: bitcoin_block_height,\n tip_block_hash: bitcoin_block_hash,\n utxos: IDL.Vec(utxo),\n });\n const bitcoin_send_transaction_args = IDL.Record({\n transaction: IDL.Vec(IDL.Nat8),\n network: bitcoin_network,\n });\n const canister_id = IDL.Principal;\n const canister_info_args = IDL.Record({\n canister_id: canister_id,\n num_requested_changes: IDL.Opt(IDL.Nat64),\n });\n const change_origin = IDL.Variant({\n from_user: IDL.Record({ user_id: IDL.Principal }),\n from_canister: IDL.Record({\n canister_version: IDL.Opt(IDL.Nat64),\n canister_id: IDL.Principal,\n }),\n });\n const snapshot_id = IDL.Vec(IDL.Nat8);\n const change_details = IDL.Variant({\n creation: IDL.Record({ controllers: IDL.Vec(IDL.Principal) }),\n code_deployment: IDL.Record({\n mode: IDL.Variant({\n reinstall: IDL.Null,\n upgrade: IDL.Null,\n install: IDL.Null,\n }),\n module_hash: IDL.Vec(IDL.Nat8),\n }),\n load_snapshot: IDL.Record({\n canister_version: IDL.Nat64,\n taken_at_timestamp: IDL.Nat64,\n snapshot_id: snapshot_id,\n }),\n controllers_change: IDL.Record({\n controllers: IDL.Vec(IDL.Principal),\n }),\n code_uninstall: IDL.Null,\n });\n const change = IDL.Record({\n timestamp_nanos: IDL.Nat64,\n canister_version: IDL.Nat64,\n origin: change_origin,\n details: change_details,\n });\n const canister_info_result = IDL.Record({\n controllers: IDL.Vec(IDL.Principal),\n module_hash: IDL.Opt(IDL.Vec(IDL.Nat8)),\n recent_changes: IDL.Vec(change),\n total_num_changes: IDL.Nat64,\n });\n const canister_status_args = IDL.Record({ canister_id: canister_id });\n const log_visibility = IDL.Variant({\n controllers: IDL.Null,\n public: IDL.Null,\n });\n const definite_canister_settings = IDL.Record({\n freezing_threshold: IDL.Nat,\n controllers: IDL.Vec(IDL.Principal),\n reserved_cycles_limit: IDL.Nat,\n log_visibility: log_visibility,\n wasm_memory_limit: IDL.Nat,\n memory_allocation: IDL.Nat,\n compute_allocation: IDL.Nat,\n });\n const canister_status_result = IDL.Record({\n status: IDL.Variant({\n stopped: IDL.Null,\n stopping: IDL.Null,\n running: IDL.Null,\n }),\n memory_size: IDL.Nat,\n cycles: IDL.Nat,\n settings: definite_canister_settings,\n query_stats: IDL.Record({\n response_payload_bytes_total: IDL.Nat,\n num_instructions_total: IDL.Nat,\n num_calls_total: IDL.Nat,\n request_payload_bytes_total: IDL.Nat,\n }),\n idle_cycles_burned_per_day: IDL.Nat,\n module_hash: IDL.Opt(IDL.Vec(IDL.Nat8)),\n reserved_cycles: IDL.Nat,\n });\n const clear_chunk_store_args = IDL.Record({ canister_id: canister_id });\n const canister_settings = IDL.Record({\n freezing_threshold: IDL.Opt(IDL.Nat),\n controllers: IDL.Opt(IDL.Vec(IDL.Principal)),\n reserved_cycles_limit: IDL.Opt(IDL.Nat),\n log_visibility: IDL.Opt(log_visibility),\n wasm_memory_limit: IDL.Opt(IDL.Nat),\n memory_allocation: IDL.Opt(IDL.Nat),\n compute_allocation: IDL.Opt(IDL.Nat),\n });\n const create_canister_args = IDL.Record({\n settings: IDL.Opt(canister_settings),\n sender_canister_version: IDL.Opt(IDL.Nat64),\n });\n const create_canister_result = IDL.Record({ canister_id: canister_id });\n const delete_canister_args = IDL.Record({ canister_id: canister_id });\n const delete_canister_snapshot_args = IDL.Record({\n canister_id: canister_id,\n snapshot_id: snapshot_id,\n });\n const deposit_cycles_args = IDL.Record({ canister_id: canister_id });\n const ecdsa_curve = IDL.Variant({ secp256k1: IDL.Null });\n const ecdsa_public_key_args = IDL.Record({\n key_id: IDL.Record({ name: IDL.Text, curve: ecdsa_curve }),\n canister_id: IDL.Opt(canister_id),\n derivation_path: IDL.Vec(IDL.Vec(IDL.Nat8)),\n });\n const ecdsa_public_key_result = IDL.Record({\n public_key: IDL.Vec(IDL.Nat8),\n chain_code: IDL.Vec(IDL.Nat8),\n });\n const fetch_canister_logs_args = IDL.Record({ canister_id: canister_id });\n const canister_log_record = IDL.Record({\n idx: IDL.Nat64,\n timestamp_nanos: IDL.Nat64,\n content: IDL.Vec(IDL.Nat8),\n });\n const fetch_canister_logs_result = IDL.Record({\n canister_log_records: IDL.Vec(canister_log_record),\n });\n const http_header = IDL.Record({ value: IDL.Text, name: IDL.Text });\n const http_request_result = IDL.Record({\n status: IDL.Nat,\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(http_header),\n });\n const http_request_args = IDL.Record({\n url: IDL.Text,\n method: IDL.Variant({\n get: IDL.Null,\n head: IDL.Null,\n post: IDL.Null,\n }),\n max_response_bytes: IDL.Opt(IDL.Nat64),\n body: IDL.Opt(IDL.Vec(IDL.Nat8)),\n transform: IDL.Opt(IDL.Record({\n function: IDL.Func([\n IDL.Record({\n context: IDL.Vec(IDL.Nat8),\n response: http_request_result,\n }),\n ], [http_request_result], ['query']),\n context: IDL.Vec(IDL.Nat8),\n })),\n headers: IDL.Vec(http_header),\n });\n const canister_install_mode = IDL.Variant({\n reinstall: IDL.Null,\n upgrade: IDL.Opt(IDL.Record({\n wasm_memory_persistence: IDL.Opt(IDL.Variant({ keep: IDL.Null, replace: IDL.Null })),\n skip_pre_upgrade: IDL.Opt(IDL.Bool),\n })),\n install: IDL.Null,\n });\n const chunk_hash = IDL.Record({ hash: IDL.Vec(IDL.Nat8) });\n const install_chunked_code_args = IDL.Record({\n arg: IDL.Vec(IDL.Nat8),\n wasm_module_hash: IDL.Vec(IDL.Nat8),\n mode: canister_install_mode,\n chunk_hashes_list: IDL.Vec(chunk_hash),\n target_canister: canister_id,\n store_canister: IDL.Opt(canister_id),\n sender_canister_version: IDL.Opt(IDL.Nat64),\n });\n const wasm_module = IDL.Vec(IDL.Nat8);\n const install_code_args = IDL.Record({\n arg: IDL.Vec(IDL.Nat8),\n wasm_module: wasm_module,\n mode: canister_install_mode,\n canister_id: canister_id,\n sender_canister_version: IDL.Opt(IDL.Nat64),\n });\n const list_canister_snapshots_args = IDL.Record({\n canister_id: canister_id,\n });\n const snapshot = IDL.Record({\n id: snapshot_id,\n total_size: IDL.Nat64,\n taken_at_timestamp: IDL.Nat64,\n });\n const list_canister_snapshots_result = IDL.Vec(snapshot);\n const load_canister_snapshot_args = IDL.Record({\n canister_id: canister_id,\n sender_canister_version: IDL.Opt(IDL.Nat64),\n snapshot_id: snapshot_id,\n });\n const node_metrics_history_args = IDL.Record({\n start_at_timestamp_nanos: IDL.Nat64,\n subnet_id: IDL.Principal,\n });\n const node_metrics = IDL.Record({\n num_block_failures_total: IDL.Nat64,\n node_id: IDL.Principal,\n num_blocks_proposed_total: IDL.Nat64,\n });\n const node_metrics_history_result = IDL.Vec(IDL.Record({\n timestamp_nanos: IDL.Nat64,\n node_metrics: IDL.Vec(node_metrics),\n }));\n const provisional_create_canister_with_cycles_args = IDL.Record({\n settings: IDL.Opt(canister_settings),\n specified_id: IDL.Opt(canister_id),\n amount: IDL.Opt(IDL.Nat),\n sender_canister_version: IDL.Opt(IDL.Nat64),\n });\n const provisional_create_canister_with_cycles_result = IDL.Record({\n canister_id: canister_id,\n });\n const provisional_top_up_canister_args = IDL.Record({\n canister_id: canister_id,\n amount: IDL.Nat,\n });\n const raw_rand_result = IDL.Vec(IDL.Nat8);\n const schnorr_algorithm = IDL.Variant({\n ed25519: IDL.Null,\n bip340secp256k1: IDL.Null,\n });\n const schnorr_public_key_args = IDL.Record({\n key_id: IDL.Record({\n algorithm: schnorr_algorithm,\n name: IDL.Text,\n }),\n canister_id: IDL.Opt(canister_id),\n derivation_path: IDL.Vec(IDL.Vec(IDL.Nat8)),\n });\n const schnorr_public_key_result = IDL.Record({\n public_key: IDL.Vec(IDL.Nat8),\n chain_code: IDL.Vec(IDL.Nat8),\n });\n const sign_with_ecdsa_args = IDL.Record({\n key_id: IDL.Record({ name: IDL.Text, curve: ecdsa_curve }),\n derivation_path: IDL.Vec(IDL.Vec(IDL.Nat8)),\n message_hash: IDL.Vec(IDL.Nat8),\n });\n const sign_with_ecdsa_result = IDL.Record({\n signature: IDL.Vec(IDL.Nat8),\n });\n const sign_with_schnorr_args = IDL.Record({\n key_id: IDL.Record({\n algorithm: schnorr_algorithm,\n name: IDL.Text,\n }),\n derivation_path: IDL.Vec(IDL.Vec(IDL.Nat8)),\n message: IDL.Vec(IDL.Nat8),\n });\n const sign_with_schnorr_result = IDL.Record({\n signature: IDL.Vec(IDL.Nat8),\n });\n const start_canister_args = IDL.Record({ canister_id: canister_id });\n const stop_canister_args = IDL.Record({ canister_id: canister_id });\n const stored_chunks_args = IDL.Record({ canister_id: canister_id });\n const stored_chunks_result = IDL.Vec(chunk_hash);\n const take_canister_snapshot_args = IDL.Record({\n replace_snapshot: IDL.Opt(snapshot_id),\n canister_id: canister_id,\n });\n const take_canister_snapshot_result = snapshot;\n const uninstall_code_args = IDL.Record({\n canister_id: canister_id,\n sender_canister_version: IDL.Opt(IDL.Nat64),\n });\n const update_settings_args = IDL.Record({\n canister_id: IDL.Principal,\n settings: canister_settings,\n sender_canister_version: IDL.Opt(IDL.Nat64),\n });\n const upload_chunk_args = IDL.Record({\n chunk: IDL.Vec(IDL.Nat8),\n canister_id: IDL.Principal,\n });\n const upload_chunk_result = chunk_hash;\n return IDL.Service({\n bitcoin_get_balance: IDL.Func([bitcoin_get_balance_args], [bitcoin_get_balance_result], []),\n bitcoin_get_block_headers: IDL.Func([bitcoin_get_block_headers_args], [bitcoin_get_block_headers_result], []),\n bitcoin_get_current_fee_percentiles: IDL.Func([bitcoin_get_current_fee_percentiles_args], [bitcoin_get_current_fee_percentiles_result], []),\n bitcoin_get_utxos: IDL.Func([bitcoin_get_utxos_args], [bitcoin_get_utxos_result], []),\n bitcoin_send_transaction: IDL.Func([bitcoin_send_transaction_args], [], []),\n canister_info: IDL.Func([canister_info_args], [canister_info_result], []),\n canister_status: IDL.Func([canister_status_args], [canister_status_result], []),\n clear_chunk_store: IDL.Func([clear_chunk_store_args], [], []),\n create_canister: IDL.Func([create_canister_args], [create_canister_result], []),\n delete_canister: IDL.Func([delete_canister_args], [], []),\n delete_canister_snapshot: IDL.Func([delete_canister_snapshot_args], [], []),\n deposit_cycles: IDL.Func([deposit_cycles_args], [], []),\n ecdsa_public_key: IDL.Func([ecdsa_public_key_args], [ecdsa_public_key_result], []),\n fetch_canister_logs: IDL.Func([fetch_canister_logs_args], [fetch_canister_logs_result], ['query']),\n http_request: IDL.Func([http_request_args], [http_request_result], []),\n install_chunked_code: IDL.Func([install_chunked_code_args], [], []),\n install_code: IDL.Func([install_code_args], [], []),\n list_canister_snapshots: IDL.Func([list_canister_snapshots_args], [list_canister_snapshots_result], []),\n load_canister_snapshot: IDL.Func([load_canister_snapshot_args], [], []),\n node_metrics_history: IDL.Func([node_metrics_history_args], [node_metrics_history_result], []),\n provisional_create_canister_with_cycles: IDL.Func([provisional_create_canister_with_cycles_args], [provisional_create_canister_with_cycles_result], []),\n provisional_top_up_canister: IDL.Func([provisional_top_up_canister_args], [], []),\n raw_rand: IDL.Func([], [raw_rand_result], []),\n schnorr_public_key: IDL.Func([schnorr_public_key_args], [schnorr_public_key_result], []),\n sign_with_ecdsa: IDL.Func([sign_with_ecdsa_args], [sign_with_ecdsa_result], []),\n sign_with_schnorr: IDL.Func([sign_with_schnorr_args], [sign_with_schnorr_result], []),\n start_canister: IDL.Func([start_canister_args], [], []),\n stop_canister: IDL.Func([stop_canister_args], [], []),\n stored_chunks: IDL.Func([stored_chunks_args], [stored_chunks_result], []),\n take_canister_snapshot: IDL.Func([take_canister_snapshot_args], [take_canister_snapshot_result], []),\n uninstall_code: IDL.Func([uninstall_code_args], [], []),\n update_settings: IDL.Func([update_settings_args], [], []),\n upload_chunk: IDL.Func([upload_chunk_args], [upload_chunk_result], []),\n });\n};\n//# sourceMappingURL=management_idl.js.map","import { Buffer } from 'buffer/';\nimport { getDefaultAgent, ReplicaRejectCode, } from './agent';\nimport { AgentError } from './errors';\nimport { bufFromBufLike, IDL } from '@dfinity/candid';\nimport { pollForResponse, strategy } from './polling';\nimport { Principal } from '@dfinity/principal';\nimport { toHex } from './utils/buffer';\nimport { Certificate, lookupResultToBuffer } from './certificate';\nimport managementCanisterIdl from './canisters/management_idl';\nexport class ActorCallError extends AgentError {\n constructor(canisterId, methodName, type, props) {\n super([\n `Call failed:`,\n ` Canister: ${canisterId.toText()}`,\n ` Method: ${methodName} (${type})`,\n ...Object.getOwnPropertyNames(props).map(n => ` \"${n}\": ${JSON.stringify(props[n])}`),\n ].join('\\n'));\n this.canisterId = canisterId;\n this.methodName = methodName;\n this.type = type;\n this.props = props;\n }\n}\nexport class QueryCallRejectedError extends ActorCallError {\n constructor(canisterId, methodName, result) {\n var _a;\n super(canisterId, methodName, 'query', {\n Status: result.status,\n Code: (_a = ReplicaRejectCode[result.reject_code]) !== null && _a !== void 0 ? _a : `Unknown Code \"${result.reject_code}\"`,\n Message: result.reject_message,\n });\n this.result = result;\n }\n}\nexport class UpdateCallRejectedError extends ActorCallError {\n constructor(canisterId, methodName, requestId, response, reject_code, reject_message, error_code) {\n super(canisterId, methodName, 'update', Object.assign({ 'Request ID': toHex(requestId) }, (response.body\n ? Object.assign(Object.assign({}, (error_code\n ? {\n 'Error code': error_code,\n }\n : {})), { 'Reject code': String(reject_code), 'Reject message': reject_message }) : {\n 'HTTP status code': response.status.toString(),\n 'HTTP status text': response.statusText,\n })));\n this.requestId = requestId;\n this.response = response;\n this.reject_code = reject_code;\n this.reject_message = reject_message;\n this.error_code = error_code;\n }\n}\nconst metadataSymbol = Symbol.for('ic-agent-metadata');\n/**\n * An actor base class. An actor is an object containing only functions that will\n * return a promise. These functions are derived from the IDL definition.\n */\nexport class Actor {\n constructor(metadata) {\n this[metadataSymbol] = Object.freeze(metadata);\n }\n /**\n * Get the Agent class this Actor would call, or undefined if the Actor would use\n * the default agent (global.ic.agent).\n * @param actor The actor to get the agent of.\n */\n static agentOf(actor) {\n return actor[metadataSymbol].config.agent;\n }\n /**\n * Get the interface of an actor, in the form of an instance of a Service.\n * @param actor The actor to get the interface of.\n */\n static interfaceOf(actor) {\n return actor[metadataSymbol].service;\n }\n static canisterIdOf(actor) {\n return Principal.from(actor[metadataSymbol].config.canisterId);\n }\n static async install(fields, config) {\n const mode = fields.mode === undefined ? { install: null } : fields.mode;\n // Need to transform the arg into a number array.\n const arg = fields.arg ? [...new Uint8Array(fields.arg)] : [];\n // Same for module.\n const wasmModule = [...new Uint8Array(fields.module)];\n const canisterId = typeof config.canisterId === 'string'\n ? Principal.fromText(config.canisterId)\n : config.canisterId;\n await getManagementCanister(config).install_code({\n mode,\n arg,\n wasm_module: wasmModule,\n canister_id: canisterId,\n sender_canister_version: [],\n });\n }\n static async createCanister(config, settings) {\n function settingsToCanisterSettings(settings) {\n return [\n {\n controllers: settings.controllers ? [settings.controllers] : [],\n compute_allocation: settings.compute_allocation ? [settings.compute_allocation] : [],\n freezing_threshold: settings.freezing_threshold ? [settings.freezing_threshold] : [],\n memory_allocation: settings.memory_allocation ? [settings.memory_allocation] : [],\n reserved_cycles_limit: [],\n log_visibility: [],\n wasm_memory_limit: [],\n },\n ];\n }\n const { canister_id: canisterId } = await getManagementCanister(config || {}).provisional_create_canister_with_cycles({\n amount: [],\n settings: settingsToCanisterSettings(settings || {}),\n specified_id: [],\n sender_canister_version: [],\n });\n return canisterId;\n }\n static async createAndInstallCanister(interfaceFactory, fields, config) {\n const canisterId = await this.createCanister(config);\n await this.install(Object.assign({}, fields), Object.assign(Object.assign({}, config), { canisterId }));\n return this.createActor(interfaceFactory, Object.assign(Object.assign({}, config), { canisterId }));\n }\n static createActorClass(interfaceFactory, options) {\n const service = interfaceFactory({ IDL });\n class CanisterActor extends Actor {\n constructor(config) {\n if (!config.canisterId)\n throw new AgentError(`Canister ID is required, but received ${typeof config.canisterId} instead. If you are using automatically generated declarations, this may be because your application is not setting the canister ID in process.env correctly.`);\n const canisterId = typeof config.canisterId === 'string'\n ? Principal.fromText(config.canisterId)\n : config.canisterId;\n super({\n config: Object.assign(Object.assign(Object.assign({}, DEFAULT_ACTOR_CONFIG), config), { canisterId }),\n service,\n });\n for (const [methodName, func] of service._fields) {\n if (options === null || options === void 0 ? void 0 : options.httpDetails) {\n func.annotations.push(ACTOR_METHOD_WITH_HTTP_DETAILS);\n }\n if (options === null || options === void 0 ? void 0 : options.certificate) {\n func.annotations.push(ACTOR_METHOD_WITH_CERTIFICATE);\n }\n this[methodName] = _createActorMethod(this, methodName, func, config.blsVerify);\n }\n }\n }\n return CanisterActor;\n }\n static createActor(interfaceFactory, configuration) {\n if (!configuration.canisterId) {\n throw new AgentError(`Canister ID is required, but received ${typeof configuration.canisterId} instead. If you are using automatically generated declarations, this may be because your application is not setting the canister ID in process.env correctly.`);\n }\n return new (this.createActorClass(interfaceFactory))(configuration);\n }\n /**\n * Returns an actor with methods that return the http response details along with the result\n * @param interfaceFactory - the interface factory for the actor\n * @param configuration - the configuration for the actor\n * @deprecated - use createActor with actorClassOptions instead\n */\n static createActorWithHttpDetails(interfaceFactory, configuration) {\n return new (this.createActorClass(interfaceFactory, { httpDetails: true }))(configuration);\n }\n /**\n * Returns an actor with methods that return the http response details along with the result\n * @param interfaceFactory - the interface factory for the actor\n * @param configuration - the configuration for the actor\n * @param actorClassOptions - options for the actor class extended details to return with the result\n */\n static createActorWithExtendedDetails(interfaceFactory, configuration, actorClassOptions = {\n httpDetails: true,\n certificate: true,\n }) {\n return new (this.createActorClass(interfaceFactory, actorClassOptions))(configuration);\n }\n}\n// IDL functions can have multiple return values, so decoding always\n// produces an array. Ensure that functions with single or zero return\n// values behave as expected.\nfunction decodeReturnValue(types, msg) {\n const returnValues = IDL.decode(types, Buffer.from(msg));\n switch (returnValues.length) {\n case 0:\n return undefined;\n case 1:\n return returnValues[0];\n default:\n return returnValues;\n }\n}\nconst DEFAULT_ACTOR_CONFIG = {\n pollingStrategyFactory: strategy.defaultStrategy,\n};\nexport const ACTOR_METHOD_WITH_HTTP_DETAILS = 'http-details';\nexport const ACTOR_METHOD_WITH_CERTIFICATE = 'certificate';\nfunction _createActorMethod(actor, methodName, func, blsVerify) {\n let caller;\n if (func.annotations.includes('query') || func.annotations.includes('composite_query')) {\n caller = async (options, ...args) => {\n var _a, _b;\n // First, if there's a config transformation, call it.\n options = Object.assign(Object.assign({}, options), (_b = (_a = actor[metadataSymbol].config).queryTransform) === null || _b === void 0 ? void 0 : _b.call(_a, methodName, args, Object.assign(Object.assign({}, actor[metadataSymbol].config), options)));\n const agent = options.agent || actor[metadataSymbol].config.agent || getDefaultAgent();\n const cid = Principal.from(options.canisterId || actor[metadataSymbol].config.canisterId);\n const arg = IDL.encode(func.argTypes, args);\n const result = await agent.query(cid, {\n methodName,\n arg,\n effectiveCanisterId: options.effectiveCanisterId,\n });\n const httpDetails = Object.assign(Object.assign({}, result.httpDetails), { requestDetails: result.requestDetails });\n switch (result.status) {\n case \"rejected\" /* QueryResponseStatus.Rejected */:\n throw new QueryCallRejectedError(cid, methodName, result);\n case \"replied\" /* QueryResponseStatus.Replied */:\n return func.annotations.includes(ACTOR_METHOD_WITH_HTTP_DETAILS)\n ? {\n httpDetails,\n result: decodeReturnValue(func.retTypes, result.reply.arg),\n }\n : decodeReturnValue(func.retTypes, result.reply.arg);\n }\n };\n }\n else {\n caller = async (options, ...args) => {\n var _a, _b;\n // First, if there's a config transformation, call it.\n options = Object.assign(Object.assign({}, options), (_b = (_a = actor[metadataSymbol].config).callTransform) === null || _b === void 0 ? void 0 : _b.call(_a, methodName, args, Object.assign(Object.assign({}, actor[metadataSymbol].config), options)));\n const agent = options.agent || actor[metadataSymbol].config.agent || getDefaultAgent();\n const { canisterId, effectiveCanisterId, pollingStrategyFactory } = Object.assign(Object.assign(Object.assign({}, DEFAULT_ACTOR_CONFIG), actor[metadataSymbol].config), options);\n const cid = Principal.from(canisterId);\n const ecid = effectiveCanisterId !== undefined ? Principal.from(effectiveCanisterId) : cid;\n const arg = IDL.encode(func.argTypes, args);\n if (agent.rootKey == null)\n throw new AgentError('Agent root key not initialized before making call');\n const { requestId, response, requestDetails } = await agent.call(cid, {\n methodName,\n arg,\n effectiveCanisterId: ecid,\n });\n let reply;\n let certificate;\n if (response.body && response.body.certificate) {\n const cert = response.body.certificate;\n certificate = await Certificate.create({\n certificate: bufFromBufLike(cert),\n rootKey: agent.rootKey,\n canisterId: Principal.from(canisterId),\n blsVerify,\n });\n const path = [new TextEncoder().encode('request_status'), requestId];\n const status = new TextDecoder().decode(lookupResultToBuffer(certificate.lookup([...path, 'status'])));\n switch (status) {\n case 'replied':\n reply = lookupResultToBuffer(certificate.lookup([...path, 'reply']));\n break;\n case 'rejected': {\n // Find rejection details in the certificate\n const rejectCode = new Uint8Array(lookupResultToBuffer(certificate.lookup([...path, 'reject_code'])))[0];\n const rejectMessage = new TextDecoder().decode(lookupResultToBuffer(certificate.lookup([...path, 'reject_message'])));\n const error_code_buf = lookupResultToBuffer(certificate.lookup([...path, 'error_code']));\n const error_code = error_code_buf\n ? new TextDecoder().decode(error_code_buf)\n : undefined;\n throw new UpdateCallRejectedError(cid, methodName, requestId, response, rejectCode, rejectMessage, error_code);\n }\n }\n }\n else if (response.body && 'reject_message' in response.body) {\n // handle v2 response errors by throwing an UpdateCallRejectedError object\n const { reject_code, reject_message, error_code } = response.body;\n throw new UpdateCallRejectedError(cid, methodName, requestId, response, reject_code, reject_message, error_code);\n }\n // Fall back to polling if we receive an Accepted response code\n if (response.status === 202) {\n const pollStrategy = pollingStrategyFactory();\n // Contains the certificate and the reply from the boundary node\n const response = await pollForResponse(agent, ecid, requestId, pollStrategy, blsVerify);\n certificate = response.certificate;\n reply = response.reply;\n }\n const shouldIncludeHttpDetails = func.annotations.includes(ACTOR_METHOD_WITH_HTTP_DETAILS);\n const shouldIncludeCertificate = func.annotations.includes(ACTOR_METHOD_WITH_CERTIFICATE);\n const httpDetails = Object.assign(Object.assign({}, response), { requestDetails });\n if (reply !== undefined) {\n if (shouldIncludeHttpDetails && shouldIncludeCertificate) {\n return {\n httpDetails,\n certificate,\n result: decodeReturnValue(func.retTypes, reply),\n };\n }\n else if (shouldIncludeCertificate) {\n return {\n certificate,\n result: decodeReturnValue(func.retTypes, reply),\n };\n }\n else if (shouldIncludeHttpDetails) {\n return {\n httpDetails,\n result: decodeReturnValue(func.retTypes, reply),\n };\n }\n return decodeReturnValue(func.retTypes, reply);\n }\n else if (func.retTypes.length === 0) {\n return shouldIncludeHttpDetails\n ? {\n httpDetails: response,\n result: undefined,\n }\n : undefined;\n }\n else {\n throw new Error(`Call was returned undefined, but type [${func.retTypes.join(',')}].`);\n }\n };\n }\n const handler = (...args) => caller({}, ...args);\n handler.withOptions =\n (options) => (...args) => caller(options, ...args);\n return handler;\n}\n/**\n * Create a management canister actor\n * @param config - a CallConfig\n */\nexport function getManagementCanister(config) {\n function transform(methodName, args) {\n if (config.effectiveCanisterId) {\n return { effectiveCanisterId: Principal.from(config.effectiveCanisterId) };\n }\n const first = args[0];\n let effectiveCanisterId = Principal.fromHex('');\n if (first && typeof first === 'object' && first.target_canister && methodName === \"install_chunked_code\") {\n effectiveCanisterId = Principal.from(first.target_canister);\n }\n if (first && typeof first === 'object' && first.canister_id) {\n effectiveCanisterId = Principal.from(first.canister_id);\n }\n return { effectiveCanisterId };\n }\n return Actor.createActor(managementCanisterIdl, Object.assign(Object.assign(Object.assign({}, config), { canisterId: Principal.fromHex('') }), {\n callTransform: transform,\n queryTransform: transform,\n }));\n}\nexport class AdvancedActor extends Actor {\n constructor(metadata) {\n super(metadata);\n }\n}\n//# sourceMappingURL=actor.js.map","export const idlFactory = ({ IDL }) => {\n const Doctor = IDL.Record({\n 'id' : IDL.Nat,\n 'hospital' : IDL.Text,\n 'publicKey' : IDL.Opt(IDL.Text),\n 'name' : IDL.Text,\n 'role' : IDL.Text,\n 'email' : IDL.Text,\n 'phone' : IDL.Text,\n 'department' : IDL.Text,\n });\n const Result_1 = IDL.Variant({ 'ok' : Doctor, 'err' : IDL.Text });\n const MedicalRecord = IDL.Record({\n 'id' : IDL.Nat,\n 'cid' : IDL.Text,\n 'status' : IDL.Text,\n 'title' : IDL.Text,\n 'fromEmail' : IDL.Text,\n 'encryptedAesKeyForReceiver' : IDL.Text,\n 'toEmail' : IDL.Text,\n 'date' : IDL.Int,\n 'toDoctor' : IDL.Text,\n 'originalRecordId' : IDL.Opt(IDL.Nat),\n 'description' : IDL.Text,\n 'patientPhone' : IDL.Text,\n 'toDepartment' : IDL.Text,\n 'fromDoctor' : IDL.Text,\n 'toHospital' : IDL.Text,\n 'fromPhone' : IDL.Text,\n 'toPhone' : IDL.Text,\n 'encryptedAesKeyForSender' : IDL.Text,\n 'fromHospital' : IDL.Text,\n 'transferredDoctors' : IDL.Vec(IDL.Text),\n 'patientName' : IDL.Text,\n 'fromDepartment' : IDL.Text,\n 'phone' : IDL.Text,\n });\n const Result = IDL.Variant({ 'ok' : MedicalRecord, 'err' : IDL.Text });\n const Result_2 = IDL.Variant({ 'ok' : IDL.Null, 'err' : IDL.Text });\n const PagedResult = IDL.Record({\n 'total' : IDL.Nat,\n 'items' : IDL.Vec(MedicalRecord),\n });\n const PagedResult__1 = IDL.Record({\n 'total' : IDL.Nat,\n 'items' : IDL.Vec(Doctor),\n });\n return IDL.Service({\n 'createDoctor' : IDL.Func([Doctor], [Result_1], []),\n 'createMedicalRecord' : IDL.Func(\n [\n IDL.Text,\n IDL.Text,\n IDL.Text,\n IDL.Text,\n IDL.Text,\n IDL.Text,\n IDL.Text,\n IDL.Text,\n IDL.Text,\n ],\n [Result],\n [],\n ),\n 'deleteDoctor' : IDL.Func([IDL.Nat], [Result_2], []),\n 'getDoctor' : IDL.Func([IDL.Nat], [IDL.Opt(Doctor)], ['query']),\n 'getDoctorByEmail' : IDL.Func([IDL.Text], [IDL.Opt(Doctor)], ['query']),\n 'getMedicalRecord' : IDL.Func(\n [IDL.Nat],\n [IDL.Opt(MedicalRecord)],\n ['query'],\n ),\n 'getMedicalRecordsByDoctor' : IDL.Func(\n [IDL.Text, IDL.Text, IDL.Nat, IDL.Nat],\n [PagedResult],\n ['query'],\n ),\n 'getPagedDoctors' : IDL.Func(\n [IDL.Nat, IDL.Nat],\n [PagedResult__1],\n ['query'],\n ),\n 'getPagedMedicalRecords' : IDL.Func(\n [IDL.Nat, IDL.Nat],\n [PagedResult],\n ['query'],\n ),\n 'getTransferHistory' : IDL.Func(\n [IDL.Nat],\n [IDL.Vec(MedicalRecord)],\n ['query'],\n ),\n 'searchDoctors' : IDL.Func(\n [IDL.Text, IDL.Text, IDL.Nat, IDL.Nat],\n [PagedResult__1],\n ['query'],\n ),\n 'searchMedicalRecords' : IDL.Func(\n [IDL.Text, IDL.Text, IDL.Text, IDL.Text, IDL.Nat, IDL.Nat],\n [PagedResult],\n ['query'],\n ),\n 'transferMedicalRecord' : IDL.Func(\n [IDL.Nat, IDL.Text, IDL.Text, IDL.Text, IDL.Text],\n [Result],\n [],\n ),\n 'updateDoctor' : IDL.Func([Doctor], [Result_1], []),\n 'updateDoctorPublicKey' : IDL.Func([IDL.Text, IDL.Text], [Result_1], []),\n 'updateMedicalRecordStatus' : IDL.Func([IDL.Nat, IDL.Text], [Result], []),\n });\n};\nexport const init = ({ IDL }) => { return []; };\n","import {\n ref,\n onValue,\n query,\n orderByChild,\n equalTo,\n update,\n get,\n set,\n} from \"firebase/database\";\nimport { database } from \"./config\";\nimport { getAuth } from \"firebase/auth\";\nimport { ReferralStatus } from \"./referral\";\nimport { Actor, HttpAgent } from \"@dfinity/agent\";\nimport { idlFactory } from \"../../../declarations/mutual-link-backend/mutual-link-backend.did.js\";\n\ninterface ReferralNotification {\n referralId: string;\n status: ReferralStatus;\n doctorName: string;\n hospitalName: string;\n department: string;\n patientName: string;\n patientPhone: string;\n createdAt: string;\n updatedAt: string;\n fromEmail: string;\n toEmail: string;\n}\n\n// 이전 상태를 저장하기 위한 Map\nconst previousStates = new Map();\n// 알림 발생 여부를 추적하기 위한 Set\nconst notifiedReferrals = new Set();\n\n// 진료의뢰 상태 변경 함수\nexport const updateReferralStatus = async (\n referralId: string,\n status: ReferralStatus\n) => {\n try {\n const referralRef = ref(database, `referrals/${referralId}`);\n await update(referralRef, {\n status,\n updatedAt: new Date().toISOString(),\n });\n return { success: true };\n } catch (error) {\n throw error;\n }\n};\n\n// 알림 데이터 유효성 검사\nconst isValidNotification = (data: any): data is ReferralNotification => {\n return (\n typeof data === \"object\" &&\n data !== null &&\n typeof data.referralId === \"string\" &&\n typeof data.status === \"string\" &&\n typeof data.doctorName === \"string\" &&\n typeof data.hospitalName === \"string\" &&\n typeof data.department === \"string\" &&\n typeof data.patientName === \"string\" &&\n typeof data.patientPhone === \"string\" &&\n typeof data.createdAt === \"string\" &&\n typeof data.updatedAt === \"string\" &&\n typeof data.fromEmail === \"string\" &&\n typeof data.toEmail === \"string\"\n );\n};\n\n// 알림 이력 저장 함수\nexport const saveNotificationHistory = async (\n userEmail: string,\n referralId: string\n) => {\n try {\n const historyRef = ref(\n database,\n `notification_history/${userEmail.replace(/\\./g, \"_\")}/${referralId}`\n );\n await set(historyRef, {\n notifiedAt: new Date().toISOString(),\n });\n } catch (error) {\n throw error;\n }\n};\n\n// 알림 이력 확인 함수\nconst checkNotificationHistory = async (\n userEmail: string,\n referralId: string\n): Promise => {\n try {\n const historyRef = ref(\n database,\n `notification_history/${userEmail.replace(/\\./g, \"_\")}/${referralId}`\n );\n const snapshot = await get(historyRef);\n return snapshot.exists();\n } catch (error) {\n throw error;\n }\n};\n\nconst initActor = async () => {\n try {\n const currentHost = window.location.hostname;\n const isIcMainnet =\n /[a-z0-9-]+\\.icp0\\.io/.test(currentHost) ||\n /[a-z0-9-]+\\.ic0\\.app/.test(currentHost);\n\n const host = isIcMainnet ? \"https://icp0.io\" : \"http://127.0.0.1:4943\";\n\n const agent = new HttpAgent({ host });\n\n if (!isIcMainnet) {\n await agent.fetchRootKey();\n }\n\n const canisterId =\n import.meta.env.CANISTER_ID_MUTUAL_LINK_BACKEND ||\n (window as any).__CANISTER_ID_MUTUAL_LINK_BACKEND__;\n\n console.log(\"=== Notification Actor 초기화 ===\");\n console.log(\"현재 호스트:\", currentHost);\n console.log(\"IC 메인넷?:\", isIcMainnet);\n console.log(\"설정된 호스트:\", host);\n console.log(\"Canister ID:\", canisterId);\n\n return Actor.createActor(idlFactory, {\n agent,\n canisterId,\n });\n } catch (error) {\n console.error(\"Actor 초기화 중 에러:\", error);\n throw error;\n }\n};\n\n// 의료기록 상태 업데이트 함수\nconst updateMedicalRecordStatus = async (\n referralId: string,\n status: string\n) => {\n try {\n const actor = await initActor();\n await actor.updateMedicalRecordStatus(Number(referralId), status);\n } catch (error) {\n throw error;\n }\n};\n\n// 알림 처리 함수\nconst handleNotification = async (\n userEmail: string,\n referralId: string,\n referral: ReferralNotification,\n onUpdate: (data: any) => void\n) => {\n // 이미 알림을 보낸 경우 중복 처리 방지\n const notificationKey = `${referralId}-${referral.status}`;\n\n if (notifiedReferrals.has(notificationKey)) {\n return;\n }\n\n // notification_history에 없는 경우에만 알림 생성\n const alreadyChecked = await checkNotificationHistory(userEmail, referralId);\n\n if (!alreadyChecked) {\n notifiedReferrals.add(notificationKey);\n\n // 의료기록 상태 자동 업데이트 및 알림 생성\n if (referral.status === \"APPROVED\" || referral.status === \"REJECTED\") {\n await updateMedicalRecordStatus(referralId, referral.status);\n // saveNotificationHistory는 여기서 호출하지 않음\n onUpdate(referral);\n }\n }\n};\n\nexport const subscribeToReferralUpdates = (\n userEmail: string,\n onUpdate: (data: any) => void\n) => {\n console.log(\"=== 알림 구독 시작 ===\");\n console.log(\"사용자 이메일:\", userEmail);\n\n notifiedReferrals.clear();\n previousStates.clear(); // 명시적으로 이전 상태 초기화\n\n const referralsRef = ref(database, \"referrals\");\n let isInitialized = false; // 초기화 상태 추적\n\n // 초기 상태 로드\n const loadInitialState = async () => {\n try {\n console.log(\"초기 상태 로드 시작\");\n const snapshot = await get(referralsRef);\n\n if (snapshot.exists()) {\n const data = snapshot.val();\n for (const [\n referralId,\n referral,\n ] of Object.entries(data)) {\n if (\n referral.toEmail === userEmail ||\n referral.fromEmail === userEmail\n ) {\n console.log(\n `초기 상태 설정 - ID: ${referralId}, 상태: ${referral.status}`\n );\n previousStates.set(referralId, referral.status);\n }\n }\n }\n\n isInitialized = true;\n console.log(\"초기 상태 로드 완료\");\n } catch (error) {\n console.error(\"초기 상태 로드 실패:\", error);\n throw error;\n }\n };\n\n // 실시간 업데이트 구독\n const unsubscribe = onValue(\n referralsRef,\n async (snapshot) => {\n if (!isInitialized) {\n console.log(\"초기화 대기 중...\");\n await loadInitialState();\n return;\n }\n\n if (!snapshot.exists()) return;\n\n const data = snapshot.val();\n for (const [referralId, referral] of Object.entries(\n data\n )) {\n if (\n referral.toEmail === userEmail ||\n referral.fromEmail === userEmail\n ) {\n const prevStatus = previousStates.get(referralId);\n const currentStatus = referral.status;\n\n console.log(`\n=== 상태 변경 감지 ===\nReferral ID: ${referralId}\n이전 상태: ${prevStatus}\n현재 상태: ${currentStatus}\n현재 사용자: ${userEmail}\n송신자: ${referral.fromEmail}\n수신자: ${referral.toEmail}\n`);\n\n // 상태 변경 처리\n if (prevStatus && prevStatus !== currentStatus) {\n // 수신자의 승인 처리\n if (\n referral.toEmail === userEmail &&\n prevStatus === \"PENDING\" &&\n currentStatus === \"APPROVED\"\n ) {\n console.log(\"수신자의 승인 처리 시작\");\n await handleNotification(\n userEmail,\n referralId,\n referral,\n onUpdate\n );\n console.log(\"수신자의 승인 처리 완료\");\n }\n // 송신자의 상태 변경 처리\n else if (\n referral.fromEmail === userEmail &&\n prevStatus === \"PENDING\" &&\n (currentStatus === \"APPROVED\" || currentStatus === \"REJECTED\")\n ) {\n console.log(`송신자의 ${currentStatus} 상태 변경 처리 시작`);\n await handleNotification(\n userEmail,\n referralId,\n referral,\n onUpdate\n );\n console.log(`송신자의 ${currentStatus} 상태 변경 처리 완료`);\n }\n }\n\n // 상태 업데이트\n previousStates.set(referralId, currentStatus);\n }\n }\n },\n (error) => {\n console.error(\"Firebase 실시간 업데이트 에러:\", error);\n throw error;\n }\n );\n\n // 클린업 함수\n return () => {\n console.log(\"=== 알림 구독 정리 ===\");\n previousStates.clear();\n notifiedReferrals.clear();\n unsubscribe();\n };\n};\n\n// 알림 이력 조회 함수 추가\nexport const getUnreadNotifications = async (\n userEmail: string,\n referralsRef = ref(database, \"referrals\")\n): Promise => {\n try {\n // 모든 referral 데이터 가져오기\n const referralsSnapshot = await get(referralsRef);\n if (!referralsSnapshot.exists()) return [];\n\n const referrals = referralsSnapshot.val();\n const unreadNotifications: ReferralNotification[] = [];\n\n // notification_history 조회\n const historyRef = ref(\n database,\n `notification_history/${userEmail.replace(/\\./g, \"_\")}`\n );\n const historySnapshot = await get(historyRef);\n const readHistory = historySnapshot.exists() ? historySnapshot.val() : {};\n\n // 각 referral에 대해 처리\n for (const [referralId, referral] of Object.entries(\n referrals\n )) {\n // 이미 읽은 알림은 제외\n if (readHistory[referralId]) continue;\n\n // 수신자이고 APPROVED 상태인 경우\n if (referral.toEmail === userEmail && referral.status === \"APPROVED\") {\n unreadNotifications.push({ ...referral, referralId });\n }\n // 송신자이고 REJECTED 상태인 경우\n else if (\n referral.fromEmail === userEmail &&\n referral.status === \"REJECTED\"\n ) {\n unreadNotifications.push({ ...referral, referralId });\n }\n }\n\n return unreadNotifications;\n } catch (error) {\n throw error;\n }\n};\n","import {\n createContext,\n useContext,\n useState,\n ReactNode,\n useEffect,\n} from \"react\";\nimport { useWeb3Auth } from \"./Web3AuthContext\";\nimport { Spin, message } from \"antd\";\nimport {\n subscribeToReferralUpdates,\n saveNotificationHistory,\n getUnreadNotifications,\n} from \"../firebase/notification\";\n\nexport interface Notification {\n id: string;\n title: string;\n message: string;\n timestamp: string;\n read: boolean;\n referralId: string;\n status: string;\n}\n\ninterface UserInfo {\n hospital: string;\n department: string;\n name: string;\n role?: \"admin\" | \"user\";\n email: string;\n phone: string;\n publicKey?: string;\n privateKey?: string;\n id?: string;\n}\n\ninterface AuthContextType {\n isLoggedIn: boolean;\n userInfo: UserInfo | null;\n notifications: Notification[];\n unreadCount: number;\n markNotificationAsRead: (id: string) => void;\n clearNotifications: () => void;\n login: (userData: any) => void;\n logout: () => void;\n}\n\nconst AuthContext = createContext(null);\n\nfunction useAuth() {\n const context = useContext(AuthContext);\n if (!context) {\n throw new Error(\"useAuth must be used within an AuthProvider\");\n }\n return context;\n}\n\nfunction AuthProvider({ children }: { children: ReactNode }) {\n const [isLoggedIn, setIsLoggedIn] = useState(false);\n const [userInfo, setUserInfo] = useState(null);\n const [isLoading, setIsLoading] = useState(true);\n const { checkConnection, web3auth } = useWeb3Auth();\n const [unsubscribeNotifications, setUnsubscribeNotifications] = useState<\n (() => void) | null\n >(null);\n const [notifications, setNotifications] = useState([]);\n\n const unreadCount = notifications.filter((n) => !n.read).length;\n\n const markNotificationAsRead = async (id: string) => {\n const notification = notifications.find((n) => n.id === id);\n if (notification && !notification.read && userInfo?.email) {\n try {\n // Firebase에 알림 확인 기록\n await saveNotificationHistory(userInfo.email, notification.referralId);\n\n // 상태 업데이트 - 해당 알림을 목록에서 제거\n setNotifications((prev) => prev.filter((n) => n.id !== id));\n } catch (error) {\n console.error(\"알림 확인 처리 실패:\", error);\n }\n }\n };\n\n const clearNotifications = () => {\n setNotifications([]);\n };\n\n const loadUnreadNotifications = async (email: string) => {\n try {\n const unreadNotifications = await getUnreadNotifications(email);\n const formattedNotifications: Notification[] = unreadNotifications.map(\n (notification) => ({\n id: `${notification.referralId}-${notification.status}`,\n title:\n notification.status === \"APPROVED\"\n ? \"의료정보 공유 수락\"\n : \"의료정보 공유 거절\",\n message:\n notification.status === \"APPROVED\"\n ? `${notification.patientName} 환자가 의료정보 공유를 수락했습니다.`\n : `${notification.patientName} 환자가 의료정보 공유를 거절했습니다.`,\n timestamp: notification.updatedAt,\n read: false,\n referralId: notification.referralId,\n status: notification.status,\n })\n );\n setNotifications(formattedNotifications);\n } catch (error) {\n console.error(\"알림 로드 실패:\", error);\n throw error;\n }\n };\n\n const startNotificationSubscription = (email: string) => {\n loadUnreadNotifications(email);\n\n const unsubscribe = subscribeToReferralUpdates(email, (referral) => {\n const notificationKey = `${referral.referralId}-${referral.status}`;\n const isDuplicate = notifications.some(\n (n) => `${n.referralId}-${n.status}` === notificationKey\n );\n\n const shouldCreateNotification =\n (referral.toEmail === email &&\n referral.status === \"APPROVED\" &&\n !isDuplicate) ||\n (referral.fromEmail === email &&\n referral.status === \"REJECTED\" &&\n !isDuplicate);\n\n if (shouldCreateNotification) {\n const newNotification: Notification = {\n id: `${referral.referralId}-${Date.now()}`,\n title:\n referral.status === \"APPROVED\"\n ? \"의료정보 공유 수락\"\n : \"의료정보 공유 거절\",\n message:\n referral.status === \"APPROVED\"\n ? `${referral.patientName} 환자가 의료정보 공유를 수락했습니다.`\n : `${referral.patientName} 환자가 의료정보 공유를 거절했습니다.`,\n timestamp: new Date().toISOString(),\n read: false,\n referralId: referral.referralId,\n status: referral.status,\n };\n\n setNotifications((prev) => {\n const isDuplicateInPrev = prev.some(\n (n) => `${n.referralId}-${n.status}` === notificationKey\n );\n\n if (isDuplicateInPrev) {\n return prev;\n }\n\n return [newNotification, ...prev];\n });\n }\n });\n setUnsubscribeNotifications(() => unsubscribe);\n };\n\n const stopNotificationSubscription = () => {\n if (unsubscribeNotifications) {\n unsubscribeNotifications();\n setUnsubscribeNotifications(null);\n }\n };\n\n useEffect(() => {\n const initAuth = async () => {\n if (!web3auth) return;\n\n const storedUserInfo = localStorage.getItem(\"userInfo\");\n const storedIsLoggedIn = localStorage.getItem(\"isLoggedIn\");\n const isWeb3Connected = await checkConnection();\n\n if (storedUserInfo && storedIsLoggedIn && isWeb3Connected) {\n const userData = JSON.parse(storedUserInfo);\n setUserInfo(userData);\n setIsLoggedIn(true);\n if (userData.email) {\n startNotificationSubscription(userData.email);\n }\n } else {\n setIsLoggedIn(false);\n setUserInfo(null);\n localStorage.removeItem(\"isLoggedIn\");\n localStorage.removeItem(\"userInfo\");\n stopNotificationSubscription();\n }\n setIsLoading(false);\n };\n\n initAuth();\n\n return () => {\n stopNotificationSubscription();\n };\n }, [web3auth, checkConnection]);\n\n if (isLoading) {\n return (\n \n \n \n );\n }\n\n const login = (userData: any) => {\n setIsLoggedIn(true);\n setUserInfo(userData);\n localStorage.setItem(\"isLoggedIn\", \"true\");\n localStorage.setItem(\"userInfo\", JSON.stringify(userData));\n\n if (userData.email) {\n startNotificationSubscription(userData.email);\n }\n };\n\n const logout = () => {\n setIsLoggedIn(false);\n setUserInfo(null);\n setNotifications([]);\n localStorage.removeItem(\"isLoggedIn\");\n localStorage.removeItem(\"userInfo\");\n stopNotificationSubscription();\n };\n\n return (\n \n {children}\n \n );\n}\n\nexport { AuthProvider, useAuth };\n","import { Modal, Descriptions, Avatar } from \"antd\";\nimport { UserInfo } from \"@/types/auth\";\nimport { UserOutlined } from \"@ant-design/icons\";\n\ninterface UserInfoModalProps {\n visible: boolean;\n onClose: () => void;\n userInfo: UserInfo | null;\n}\n\nconst UserInfoModal: React.FC = ({\n visible,\n onClose,\n userInfo,\n}) => {\n if (!userInfo) return null;\n\n return (\n \n }\n style={{\n backgroundColor: \"var(--primary-color)\",\n color: \"#fff\",\n }}\n />\n

\n \n {userInfo.name}\n
\n
\n {userInfo.hospital} · {userInfo.department}\n
\n \n \n }\n open={visible}\n onCancel={onClose}\n footer={null}\n width={500}\n >\n
\n \n {userInfo.email}\n \n {userInfo.phone}\n \n \n {userInfo.hospital}\n \n \n {userInfo.department}\n \n \n
\n \n );\n};\n\nexport default UserInfoModal;\n","import {\n Layout,\n Menu,\n Button,\n Typography,\n Space,\n Avatar,\n Badge,\n theme,\n} from \"antd\";\nimport {\n MenuFoldOutlined,\n MenuUnfoldOutlined,\n BellOutlined,\n UserOutlined,\n} from \"@ant-design/icons\";\nimport { useState } from \"react\";\nimport { useNavigate, Outlet, useLocation } from \"react-router-dom\";\nimport { regularMenuItems, adminMenuItems } from \"@/constants/menuItems\";\nimport { useAuth } from \"@/contexts/AuthContext\";\nimport { useWeb3Auth } from \"@/contexts/Web3AuthContext\";\nimport UserInfoModal from \"@/components/UserInfoModal\";\n\nconst { Header, Sider, Content } = Layout;\nconst { Title, Text } = Typography;\nconst { useToken } = theme;\n\ninterface HomeProps {\n notificationCount: number;\n onNotificationClick: () => void;\n}\n\nconst Home = ({ notificationCount, onNotificationClick }: HomeProps) => {\n const [collapsed, setCollapsed] = useState(false);\n const [userInfoModalVisible, setUserInfoModalVisible] = useState(false);\n const navigate = useNavigate();\n const location = useLocation();\n const { logout: authLogout, userInfo } = useAuth();\n const { logout: web3AuthLogout } = useWeb3Auth();\n const { token } = useToken();\n\n const menuItems = [\n ...regularMenuItems,\n ...(userInfo?.role === \"admin\" ? adminMenuItems : []),\n ];\n\n const getSelectedKey = () => {\n const path = location.pathname.split(\"/\").pop() || \"\";\n if (path === \"doctor-list\") return \"doctorList\";\n if (path === \"approval-waiting\") return \"approvalWaiting\";\n if (path === \"medical-data-send\") return \"medicalDataSend\";\n if (path === \"medical-data-receive\") return \"medicalDataReceive\";\n if (path === \"user-management\") return \"userManagement\";\n if (path === \"hospital-management\") return \"hospitalManagement\";\n if (path === \"medical-record-waiting\") return \"medicalRecordWaiting\";\n return \"doctorList\";\n };\n\n const handleLogout = async () => {\n await web3AuthLogout();\n authLogout();\n navigate(\"/login\");\n };\n\n const handleMenuClick = (e: { key: string }) => {\n switch (e.key) {\n case \"doctorList\":\n navigate(\"/home/doctor-list\");\n break;\n case \"approvalWaiting\":\n navigate(\"/home/approval-waiting\");\n break;\n case \"medicalDataSend\":\n navigate(\"/home/medical-data-send\");\n break;\n case \"medicalDataReceive\":\n navigate(\"/home/medical-data-receive\");\n break;\n case \"userManagement\":\n navigate(\"/home/user-management\");\n break;\n case \"hospitalManagement\":\n navigate(\"/home/hospital-management\");\n break;\n case \"medicalRecordWaiting\":\n navigate(\"/home/medical-record-waiting\");\n break;\n }\n };\n\n return (\n \n \n
\n : }\n onClick={() => setCollapsed(!collapsed)}\n style={{\n fontSize: \"16px\",\n width: 64,\n height: 64,\n transition: \"all 0.2s\",\n }}\n />\n \n \n Mutual Link\n \n
\n \n \n }\n onClick={onNotificationClick}\n />\n \n setUserInfoModalVisible(true)}\n >\n }\n />\n
\n {userInfo?.name}님\n \n {userInfo?.hospital} {userInfo?.department}\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n
\n setUserInfoModalVisible(false)}\n userInfo={userInfo}\n />\n \n );\n};\n\nexport default Home;\n",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var X32WordArray = C_lib.WordArray;\n\n\t /**\n\t * x64 namespace.\n\t */\n\t var C_x64 = C.x64 = {};\n\n\t /**\n\t * A 64-bit word.\n\t */\n\t var X64Word = C_x64.Word = Base.extend({\n\t /**\n\t * Initializes a newly created 64-bit word.\n\t *\n\t * @param {number} high The high 32 bits.\n\t * @param {number} low The low 32 bits.\n\t *\n\t * @example\n\t *\n\t * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);\n\t */\n\t init: function (high, low) {\n\t this.high = high;\n\t this.low = low;\n\t }\n\n\t /**\n\t * Bitwise NOTs this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after negating.\n\t *\n\t * @example\n\t *\n\t * var negated = x64Word.not();\n\t */\n\t // not: function () {\n\t // var high = ~this.high;\n\t // var low = ~this.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ANDs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to AND with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ANDing.\n\t *\n\t * @example\n\t *\n\t * var anded = x64Word.and(anotherX64Word);\n\t */\n\t // and: function (word) {\n\t // var high = this.high & word.high;\n\t // var low = this.low & word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to OR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ORing.\n\t *\n\t * @example\n\t *\n\t * var ored = x64Word.or(anotherX64Word);\n\t */\n\t // or: function (word) {\n\t // var high = this.high | word.high;\n\t // var low = this.low | word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise XORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to XOR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after XORing.\n\t *\n\t * @example\n\t *\n\t * var xored = x64Word.xor(anotherX64Word);\n\t */\n\t // xor: function (word) {\n\t // var high = this.high ^ word.high;\n\t // var low = this.low ^ word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftL(25);\n\t */\n\t // shiftL: function (n) {\n\t // if (n < 32) {\n\t // var high = (this.high << n) | (this.low >>> (32 - n));\n\t // var low = this.low << n;\n\t // } else {\n\t // var high = this.low << (n - 32);\n\t // var low = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftR(7);\n\t */\n\t // shiftR: function (n) {\n\t // if (n < 32) {\n\t // var low = (this.low >>> n) | (this.high << (32 - n));\n\t // var high = this.high >>> n;\n\t // } else {\n\t // var low = this.high >>> (n - 32);\n\t // var high = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotL(25);\n\t */\n\t // rotL: function (n) {\n\t // return this.shiftL(n).or(this.shiftR(64 - n));\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotR(7);\n\t */\n\t // rotR: function (n) {\n\t // return this.shiftR(n).or(this.shiftL(64 - n));\n\t // },\n\n\t /**\n\t * Adds this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to add with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after adding.\n\t *\n\t * @example\n\t *\n\t * var added = x64Word.add(anotherX64Word);\n\t */\n\t // add: function (word) {\n\t // var low = (this.low + word.low) | 0;\n\t // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;\n\t // var high = (this.high + word.high + carry) | 0;\n\n\t // return X64Word.create(high, low);\n\t // }\n\t });\n\n\t /**\n\t * An array of 64-bit words.\n\t *\n\t * @property {Array} words The array of CryptoJS.x64.Word objects.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var X64WordArray = C_x64.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create();\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ]);\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ], 10);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 8;\n\t }\n\t },\n\n\t /**\n\t * Converts this 64-bit word array to a 32-bit word array.\n\t *\n\t * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.\n\t *\n\t * @example\n\t *\n\t * var x32WordArray = x64WordArray.toX32();\n\t */\n\t toX32: function () {\n\t // Shortcuts\n\t var x64Words = this.words;\n\t var x64WordsLength = x64Words.length;\n\n\t // Convert\n\t var x32Words = [];\n\t for (var i = 0; i < x64WordsLength; i++) {\n\t var x64Word = x64Words[i];\n\t x32Words.push(x64Word.high);\n\t x32Words.push(x64Word.low);\n\t }\n\n\t return X32WordArray.create(x32Words, this.sigBytes);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {X64WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = x64WordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\n\t // Clone \"words\" array\n\t var words = clone.words = this.words.slice(0);\n\n\t // Clone each X64Word object\n\t var wordsLength = words.length;\n\t for (var i = 0; i < wordsLength; i++) {\n\t words[i] = words[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\t}());\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Check if typed arrays are supported\n\t if (typeof ArrayBuffer != 'function') {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\n\t // Reference original init\n\t var superInit = WordArray.init;\n\n\t // Augment WordArray.init to handle typed arrays\n\t var subInit = WordArray.init = function (typedArray) {\n\t // Convert buffers to uint8\n\t if (typedArray instanceof ArrayBuffer) {\n\t typedArray = new Uint8Array(typedArray);\n\t }\n\n\t // Convert other array views to uint8\n\t if (\n\t typedArray instanceof Int8Array ||\n\t (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\n\t typedArray instanceof Int16Array ||\n\t typedArray instanceof Uint16Array ||\n\t typedArray instanceof Int32Array ||\n\t typedArray instanceof Uint32Array ||\n\t typedArray instanceof Float32Array ||\n\t typedArray instanceof Float64Array\n\t ) {\n\t typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t }\n\n\t // Handle Uint8Array\n\t if (typedArray instanceof Uint8Array) {\n\t // Shortcut\n\t var typedArrayByteLength = typedArray.byteLength;\n\n\t // Extract bytes\n\t var words = [];\n\t for (var i = 0; i < typedArrayByteLength; i++) {\n\t words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n\t }\n\n\t // Initialize this word array\n\t superInit.call(this, words, typedArrayByteLength);\n\t } else {\n\t // Else call normal init\n\t superInit.apply(this, arguments);\n\t }\n\t };\n\n\t subInit.prototype = WordArray;\n\t}());\n\n\n\treturn CryptoJS.lib.WordArray;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * UTF-16 BE encoding strategy.\n\t */\n\t var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\n\t /**\n\t * Converts a word array to a UTF-16 BE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 BE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 BE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 BE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t /**\n\t * UTF-16 LE encoding strategy.\n\t */\n\t C_enc.Utf16LE = {\n\t /**\n\t * Converts a word array to a UTF-16 LE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 LE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 LE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 LE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t function swapEndian(word) {\n\t return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Utf16;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64url encoding strategy.\n\t */\n\t var Base64url = C_enc.Base64url = {\n\t /**\n\t * Converts a word array to a Base64url string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {string} The Base64url string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64url.stringify(wordArray);\n\t */\n\t stringify: function (wordArray, urlSafe) {\n\t if (urlSafe === undefined) {\n\t urlSafe = true\n\t }\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = urlSafe ? this._safe_map : this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64url string to a word array.\n\t *\n\t * @param {string} base64Str The Base64url string.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64url.parse(base64String);\n\t */\n\t parse: function (base64Str, urlSafe) {\n\t if (urlSafe === undefined) {\n\t urlSafe = true\n\t }\n\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = urlSafe ? this._safe_map : this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n\t _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64url;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA256 = C_algo.SHA256;\n\n\t /**\n\t * SHA-224 hash algorithm.\n\t */\n\t var SHA224 = C_algo.SHA224 = SHA256.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n\t 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA256._doFinalize.call(this);\n\n\t hash.sigBytes -= 4;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA224('message');\n\t * var hash = CryptoJS.SHA224(wordArray);\n\t */\n\t C.SHA224 = SHA256._createHelper(SHA224);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA224(message, key);\n\t */\n\t C.HmacSHA224 = SHA256._createHmacHelper(SHA224);\n\t}());\n\n\n\treturn CryptoJS.SHA224;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\n\t function X64Word_create() {\n\t return X64Word.create.apply(X64Word, arguments);\n\t }\n\n\t // Constants\n\t var K = [\n\t X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),\n\t X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),\n\t X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),\n\t X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),\n\t X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),\n\t X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),\n\t X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),\n\t X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),\n\t X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),\n\t X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),\n\t X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),\n\t X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),\n\t X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),\n\t X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),\n\t X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),\n\t X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),\n\t X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),\n\t X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),\n\t X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),\n\t X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),\n\t X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),\n\t X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),\n\t X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),\n\t X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),\n\t X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),\n\t X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),\n\t X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),\n\t X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),\n\t X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),\n\t X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),\n\t X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),\n\t X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),\n\t X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),\n\t X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),\n\t X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),\n\t X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),\n\t X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),\n\t X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),\n\t X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),\n\t X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)\n\t ];\n\n\t // Reusable objects\n\t var W = [];\n\t (function () {\n\t for (var i = 0; i < 80; i++) {\n\t W[i] = X64Word_create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-512 hash algorithm.\n\t */\n\t var SHA512 = C_algo.SHA512 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),\n\t new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),\n\t new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),\n\t new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var H0 = H[0];\n\t var H1 = H[1];\n\t var H2 = H[2];\n\t var H3 = H[3];\n\t var H4 = H[4];\n\t var H5 = H[5];\n\t var H6 = H[6];\n\t var H7 = H[7];\n\n\t var H0h = H0.high;\n\t var H0l = H0.low;\n\t var H1h = H1.high;\n\t var H1l = H1.low;\n\t var H2h = H2.high;\n\t var H2l = H2.low;\n\t var H3h = H3.high;\n\t var H3l = H3.low;\n\t var H4h = H4.high;\n\t var H4l = H4.low;\n\t var H5h = H5.high;\n\t var H5l = H5.low;\n\t var H6h = H6.high;\n\t var H6l = H6.low;\n\t var H7h = H7.high;\n\t var H7l = H7.low;\n\n\t // Working variables\n\t var ah = H0h;\n\t var al = H0l;\n\t var bh = H1h;\n\t var bl = H1l;\n\t var ch = H2h;\n\t var cl = H2l;\n\t var dh = H3h;\n\t var dl = H3l;\n\t var eh = H4h;\n\t var el = H4l;\n\t var fh = H5h;\n\t var fl = H5l;\n\t var gh = H6h;\n\t var gl = H6l;\n\t var hh = H7h;\n\t var hl = H7l;\n\n\t // Rounds\n\t for (var i = 0; i < 80; i++) {\n\t var Wil;\n\t var Wih;\n\n\t // Shortcut\n\t var Wi = W[i];\n\n\t // Extend message\n\t if (i < 16) {\n\t Wih = Wi.high = M[offset + i * 2] | 0;\n\t Wil = Wi.low = M[offset + i * 2 + 1] | 0;\n\t } else {\n\t // Gamma0\n\t var gamma0x = W[i - 15];\n\t var gamma0xh = gamma0x.high;\n\t var gamma0xl = gamma0x.low;\n\t var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);\n\t var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));\n\n\t // Gamma1\n\t var gamma1x = W[i - 2];\n\t var gamma1xh = gamma1x.high;\n\t var gamma1xl = gamma1x.low;\n\t var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);\n\t var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));\n\n\t // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\t var Wi7 = W[i - 7];\n\t var Wi7h = Wi7.high;\n\t var Wi7l = Wi7.low;\n\n\t var Wi16 = W[i - 16];\n\t var Wi16h = Wi16.high;\n\t var Wi16l = Wi16.low;\n\n\t Wil = gamma0l + Wi7l;\n\t Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);\n\t Wil = Wil + gamma1l;\n\t Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);\n\t Wil = Wil + Wi16l;\n\t Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);\n\n\t Wi.high = Wih;\n\t Wi.low = Wil;\n\t }\n\n\t var chh = (eh & fh) ^ (~eh & gh);\n\t var chl = (el & fl) ^ (~el & gl);\n\t var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);\n\t var majl = (al & bl) ^ (al & cl) ^ (bl & cl);\n\n\t var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));\n\t var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));\n\t var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));\n\t var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));\n\n\t // t1 = h + sigma1 + ch + K[i] + W[i]\n\t var Ki = K[i];\n\t var Kih = Ki.high;\n\t var Kil = Ki.low;\n\n\t var t1l = hl + sigma1l;\n\t var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);\n\t var t1l = t1l + chl;\n\t var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);\n\t var t1l = t1l + Kil;\n\t var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);\n\t var t1l = t1l + Wil;\n\t var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);\n\n\t // t2 = sigma0 + maj\n\t var t2l = sigma0l + majl;\n\t var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);\n\n\t // Update working variables\n\t hh = gh;\n\t hl = gl;\n\t gh = fh;\n\t gl = fl;\n\t fh = eh;\n\t fl = el;\n\t el = (dl + t1l) | 0;\n\t eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;\n\t dh = ch;\n\t dl = cl;\n\t ch = bh;\n\t cl = bl;\n\t bh = ah;\n\t bl = al;\n\t al = (t1l + t2l) | 0;\n\t ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H0l = H0.low = (H0l + al);\n\t H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));\n\t H1l = H1.low = (H1l + bl);\n\t H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));\n\t H2l = H2.low = (H2l + cl);\n\t H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));\n\t H3l = H3.low = (H3l + dl);\n\t H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));\n\t H4l = H4.low = (H4l + el);\n\t H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));\n\t H5l = H5.low = (H5l + fl);\n\t H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));\n\t H6l = H6.low = (H6l + gl);\n\t H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));\n\t H7l = H7.low = (H7l + hl);\n\t H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Convert hash to 32-bit word array before returning\n\t var hash = this._hash.toX32();\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t },\n\n\t blockSize: 1024/32\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA512('message');\n\t * var hash = CryptoJS.SHA512(wordArray);\n\t */\n\t C.SHA512 = Hasher._createHelper(SHA512);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA512(message, key);\n\t */\n\t C.HmacSHA512 = Hasher._createHmacHelper(SHA512);\n\t}());\n\n\n\treturn CryptoJS.SHA512;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./sha512\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./sha512\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\t var SHA512 = C_algo.SHA512;\n\n\t /**\n\t * SHA-384 hash algorithm.\n\t */\n\t var SHA384 = C_algo.SHA384 = SHA512.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),\n\t new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),\n\t new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),\n\t new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA512._doFinalize.call(this);\n\n\t hash.sigBytes -= 16;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA384('message');\n\t * var hash = CryptoJS.SHA384(wordArray);\n\t */\n\t C.SHA384 = SHA512._createHelper(SHA384);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA384(message, key);\n\t */\n\t C.HmacSHA384 = SHA512._createHmacHelper(SHA384);\n\t}());\n\n\n\treturn CryptoJS.SHA384;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var C_algo = C.algo;\n\n\t // Constants tables\n\t var RHO_OFFSETS = [];\n\t var PI_INDEXES = [];\n\t var ROUND_CONSTANTS = [];\n\n\t // Compute Constants\n\t (function () {\n\t // Compute rho offset constants\n\t var x = 1, y = 0;\n\t for (var t = 0; t < 24; t++) {\n\t RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;\n\n\t var newX = y % 5;\n\t var newY = (2 * x + 3 * y) % 5;\n\t x = newX;\n\t y = newY;\n\t }\n\n\t // Compute pi index constants\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;\n\t }\n\t }\n\n\t // Compute round constants\n\t var LFSR = 0x01;\n\t for (var i = 0; i < 24; i++) {\n\t var roundConstantMsw = 0;\n\t var roundConstantLsw = 0;\n\n\t for (var j = 0; j < 7; j++) {\n\t if (LFSR & 0x01) {\n\t var bitPosition = (1 << j) - 1;\n\t if (bitPosition < 32) {\n\t roundConstantLsw ^= 1 << bitPosition;\n\t } else /* if (bitPosition >= 32) */ {\n\t roundConstantMsw ^= 1 << (bitPosition - 32);\n\t }\n\t }\n\n\t // Compute next LFSR\n\t if (LFSR & 0x80) {\n\t // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1\n\t LFSR = (LFSR << 1) ^ 0x71;\n\t } else {\n\t LFSR <<= 1;\n\t }\n\t }\n\n\t ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);\n\t }\n\t }());\n\n\t // Reusable objects for temporary values\n\t var T = [];\n\t (function () {\n\t for (var i = 0; i < 25; i++) {\n\t T[i] = X64Word.create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-3 hash algorithm.\n\t */\n\t var SHA3 = C_algo.SHA3 = Hasher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} outputLength\n\t * The desired number of bits in the output hash.\n\t * Only values permitted are: 224, 256, 384, 512.\n\t * Default: 512\n\t */\n\t cfg: Hasher.cfg.extend({\n\t outputLength: 512\n\t }),\n\n\t _doReset: function () {\n\t var state = this._state = []\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = new X64Word.init();\n\t }\n\n\t this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var state = this._state;\n\t var nBlockSizeLanes = this.blockSize / 2;\n\n\t // Absorb\n\t for (var i = 0; i < nBlockSizeLanes; i++) {\n\t // Shortcuts\n\t var M2i = M[offset + 2 * i];\n\t var M2i1 = M[offset + 2 * i + 1];\n\n\t // Swap endian\n\t M2i = (\n\t (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) |\n\t (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00)\n\t );\n\t M2i1 = (\n\t (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) |\n\t (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Absorb message into state\n\t var lane = state[i];\n\t lane.high ^= M2i1;\n\t lane.low ^= M2i;\n\t }\n\n\t // Rounds\n\t for (var round = 0; round < 24; round++) {\n\t // Theta\n\t for (var x = 0; x < 5; x++) {\n\t // Mix column lanes\n\t var tMsw = 0, tLsw = 0;\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t tMsw ^= lane.high;\n\t tLsw ^= lane.low;\n\t }\n\n\t // Temporary values\n\t var Tx = T[x];\n\t Tx.high = tMsw;\n\t Tx.low = tLsw;\n\t }\n\t for (var x = 0; x < 5; x++) {\n\t // Shortcuts\n\t var Tx4 = T[(x + 4) % 5];\n\t var Tx1 = T[(x + 1) % 5];\n\t var Tx1Msw = Tx1.high;\n\t var Tx1Lsw = Tx1.low;\n\n\t // Mix surrounding columns\n\t var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));\n\t var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t lane.high ^= tMsw;\n\t lane.low ^= tLsw;\n\t }\n\t }\n\n\t // Rho Pi\n\t for (var laneIndex = 1; laneIndex < 25; laneIndex++) {\n\t var tMsw;\n\t var tLsw;\n\n\t // Shortcuts\n\t var lane = state[laneIndex];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\t var rhoOffset = RHO_OFFSETS[laneIndex];\n\n\t // Rotate lanes\n\t if (rhoOffset < 32) {\n\t tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));\n\t tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));\n\t } else /* if (rhoOffset >= 32) */ {\n\t tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));\n\t tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));\n\t }\n\n\t // Transpose lanes\n\t var TPiLane = T[PI_INDEXES[laneIndex]];\n\t TPiLane.high = tMsw;\n\t TPiLane.low = tLsw;\n\t }\n\n\t // Rho pi at x = y = 0\n\t var T0 = T[0];\n\t var state0 = state[0];\n\t T0.high = state0.high;\n\t T0.low = state0.low;\n\n\t // Chi\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t // Shortcuts\n\t var laneIndex = x + 5 * y;\n\t var lane = state[laneIndex];\n\t var TLane = T[laneIndex];\n\t var Tx1Lane = T[((x + 1) % 5) + 5 * y];\n\t var Tx2Lane = T[((x + 2) % 5) + 5 * y];\n\n\t // Mix rows\n\t lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);\n\t lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);\n\t }\n\t }\n\n\t // Iota\n\t var lane = state[0];\n\t var roundConstant = ROUND_CONSTANTS[round];\n\t lane.high ^= roundConstant.high;\n\t lane.low ^= roundConstant.low;\n\t }\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\t var blockSizeBits = this.blockSize * 32;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);\n\t dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var state = this._state;\n\t var outputLengthBytes = this.cfg.outputLength / 8;\n\t var outputLengthLanes = outputLengthBytes / 8;\n\n\t // Squeeze\n\t var hashWords = [];\n\t for (var i = 0; i < outputLengthLanes; i++) {\n\t // Shortcuts\n\t var lane = state[i];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\n\t // Swap endian\n\t laneMsw = (\n\t (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) |\n\t (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00)\n\t );\n\t laneLsw = (\n\t (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) |\n\t (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Squeeze state to retrieve hash\n\t hashWords.push(laneLsw);\n\t hashWords.push(laneMsw);\n\t }\n\n\t // Return final computed hash\n\t return new WordArray.init(hashWords, outputLengthBytes);\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\n\t var state = clone._state = this._state.slice(0);\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = state[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA3('message');\n\t * var hash = CryptoJS.SHA3(wordArray);\n\t */\n\t C.SHA3 = Hasher._createHelper(SHA3);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA3(message, key);\n\t */\n\t C.HmacSHA3 = Hasher._createHmacHelper(SHA3);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA3;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t(c) 2012 by Cédric Mesnil. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n\t - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\t - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var _zl = WordArray.create([\n\t 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n\t 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n\t 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n\t 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n\t 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]);\n\t var _zr = WordArray.create([\n\t 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n\t 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n\t 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n\t 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n\t 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]);\n\t var _sl = WordArray.create([\n\t 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n\t 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n\t 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n\t 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n\t 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ]);\n\t var _sr = WordArray.create([\n\t 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n\t 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n\t 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n\t 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n\t 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]);\n\n\t var _hl = WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);\n\t var _hr = WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);\n\n\t /**\n\t * RIPEMD160 hash algorithm.\n\t */\n\t var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t // Swap\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\t // Shortcut\n\t var H = this._hash.words;\n\t var hl = _hl.words;\n\t var hr = _hr.words;\n\t var zl = _zl.words;\n\t var zr = _zr.words;\n\t var sl = _sl.words;\n\t var sr = _sr.words;\n\n\t // Working variables\n\t var al, bl, cl, dl, el;\n\t var ar, br, cr, dr, er;\n\n\t ar = al = H[0];\n\t br = bl = H[1];\n\t cr = cl = H[2];\n\t dr = dl = H[3];\n\t er = el = H[4];\n\t // Computation\n\t var t;\n\t for (var i = 0; i < 80; i += 1) {\n\t t = (al + M[offset+zl[i]])|0;\n\t if (i<16){\n\t\t t += f1(bl,cl,dl) + hl[0];\n\t } else if (i<32) {\n\t\t t += f2(bl,cl,dl) + hl[1];\n\t } else if (i<48) {\n\t\t t += f3(bl,cl,dl) + hl[2];\n\t } else if (i<64) {\n\t\t t += f4(bl,cl,dl) + hl[3];\n\t } else {// if (i<80) {\n\t\t t += f5(bl,cl,dl) + hl[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sl[i]);\n\t t = (t+el)|0;\n\t al = el;\n\t el = dl;\n\t dl = rotl(cl, 10);\n\t cl = bl;\n\t bl = t;\n\n\t t = (ar + M[offset+zr[i]])|0;\n\t if (i<16){\n\t\t t += f5(br,cr,dr) + hr[0];\n\t } else if (i<32) {\n\t\t t += f4(br,cr,dr) + hr[1];\n\t } else if (i<48) {\n\t\t t += f3(br,cr,dr) + hr[2];\n\t } else if (i<64) {\n\t\t t += f2(br,cr,dr) + hr[3];\n\t } else {// if (i<80) {\n\t\t t += f1(br,cr,dr) + hr[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sr[i]) ;\n\t t = (t+er)|0;\n\t ar = er;\n\t er = dr;\n\t dr = rotl(cr, 10);\n\t cr = br;\n\t br = t;\n\t }\n\t // Intermediate hash value\n\t t = (H[1] + cl + dr)|0;\n\t H[1] = (H[2] + dl + er)|0;\n\t H[2] = (H[3] + el + ar)|0;\n\t H[3] = (H[4] + al + br)|0;\n\t H[4] = (H[0] + bl + cr)|0;\n\t H[0] = t;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)\n\t );\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 5; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t // Swap\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\n\t function f1(x, y, z) {\n\t return ((x) ^ (y) ^ (z));\n\n\t }\n\n\t function f2(x, y, z) {\n\t return (((x)&(y)) | ((~x)&(z)));\n\t }\n\n\t function f3(x, y, z) {\n\t return (((x) | (~(y))) ^ (z));\n\t }\n\n\t function f4(x, y, z) {\n\t return (((x) & (z)) | ((y)&(~(z))));\n\t }\n\n\t function f5(x, y, z) {\n\t return ((x) ^ ((y) |(~(z))));\n\n\t }\n\n\t function rotl(x,n) {\n\t return (x<>>(32-n));\n\t }\n\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.RIPEMD160('message');\n\t * var hash = CryptoJS.RIPEMD160(wordArray);\n\t */\n\t C.RIPEMD160 = Hasher._createHelper(RIPEMD160);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacRIPEMD160(message, key);\n\t */\n\t C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);\n\t}(Math));\n\n\n\treturn CryptoJS.RIPEMD160;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA256 = C_algo.SHA256;\n\t var HMAC = C_algo.HMAC;\n\n\t /**\n\t * Password-Based Key Derivation Function 2 algorithm.\n\t */\n\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hasher to use. Default: SHA256\n\t * @property {number} iterations The number of iterations to perform. Default: 250000\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: SHA256,\n\t iterations: 250000\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init HMAC\n\t var hmac = HMAC.create(cfg.hasher, password);\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\t var blockIndex = WordArray.create([0x00000001]);\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var blockIndexWords = blockIndex.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t var block = hmac.update(salt).finalize(blockIndex);\n\t hmac.reset();\n\n\t // Shortcuts\n\t var blockWords = block.words;\n\t var blockWordsLength = blockWords.length;\n\n\t // Iterations\n\t var intermediate = block;\n\t for (var i = 1; i < iterations; i++) {\n\t intermediate = hmac.finalize(intermediate);\n\t hmac.reset();\n\n\t // Shortcut\n\t var intermediateWords = intermediate.words;\n\n\t // XOR intermediate with block\n\t for (var j = 0; j < blockWordsLength; j++) {\n\t blockWords[j] ^= intermediateWords[j];\n\t }\n\t }\n\n\t derivedKey.concat(block);\n\t blockIndexWords[0]++;\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.PBKDF2(password, salt);\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.PBKDF2 = function (password, salt, cfg) {\n\t return PBKDF2.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t var block;\n\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./evpkdf\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./evpkdf\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t var block;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t var modeCreator;\n\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t modeCreator = mode.createDecryptor;\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\n\t if (this._mode && this._mode.__creator == modeCreator) {\n\t this._mode.init(this, iv && iv.words);\n\t } else {\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t this._mode.__creator = modeCreator;\n\t }\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t var finalProcessedBlocks;\n\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t var wordArray;\n\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t var salt;\n\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt, hasher) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t if (!hasher) {\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\t } else {\n\t var key = EvpKDF.create({ keySize: keySize + ivSize, hasher: hasher }).compute(password, salt);\n\t }\n\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, cfg.salt, cfg.hasher);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt, cfg.hasher);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher Feedback block mode.\n\t */\n\tCryptoJS.mode.CFB = (function () {\n\t var CFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t CFB.Encryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t CFB.Decryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {\n\t var keystream;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t keystream = this._prevBlock;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\n\t return CFB;\n\t}());\n\n\n\treturn CryptoJS.mode.CFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Counter block mode.\n\t */\n\tCryptoJS.mode.CTR = (function () {\n\t var CTR = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = CTR.Encryptor = CTR.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t var keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Increment counter\n\t counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTR.Decryptor = Encryptor;\n\n\t return CTR;\n\t}());\n\n\n\treturn CryptoJS.mode.CTR;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t * Counter block mode compatible with Dr Brian Gladman fileenc.c\n\t * derived from CryptoJS.mode.CTR\n\t * Jan Hruby jhruby.web@gmail.com\n\t */\n\tCryptoJS.mode.CTRGladman = (function () {\n\t var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();\n\n\t\tfunction incWord(word)\n\t\t{\n\t\t\tif (((word >> 24) & 0xff) === 0xff) { //overflow\n\t\t\tvar b1 = (word >> 16)&0xff;\n\t\t\tvar b2 = (word >> 8)&0xff;\n\t\t\tvar b3 = word & 0xff;\n\n\t\t\tif (b1 === 0xff) // overflow b1\n\t\t\t{\n\t\t\tb1 = 0;\n\t\t\tif (b2 === 0xff)\n\t\t\t{\n\t\t\t\tb2 = 0;\n\t\t\t\tif (b3 === 0xff)\n\t\t\t\t{\n\t\t\t\t\tb3 = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t++b3;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t++b2;\n\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t++b1;\n\t\t\t}\n\n\t\t\tword = 0;\n\t\t\tword += (b1 << 16);\n\t\t\tword += (b2 << 8);\n\t\t\tword += b3;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\tword += (0x01 << 24);\n\t\t\t}\n\t\t\treturn word;\n\t\t}\n\n\t\tfunction incCounter(counter)\n\t\t{\n\t\t\tif ((counter[0] = incWord(counter[0])) === 0)\n\t\t\t{\n\t\t\t\t// encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8\n\t\t\t\tcounter[1] = incWord(counter[1]);\n\t\t\t}\n\t\t\treturn counter;\n\t\t}\n\n\t var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\n\t\t\t\tincCounter(counter);\n\n\t\t\t\tvar keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTRGladman.Decryptor = Encryptor;\n\n\t return CTRGladman;\n\t}());\n\n\n\n\n\treturn CryptoJS.mode.CTRGladman;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Output Feedback block mode.\n\t */\n\tCryptoJS.mode.OFB = (function () {\n\t var OFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = OFB.Encryptor = OFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var keystream = this._keystream;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = this._keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t OFB.Decryptor = Encryptor;\n\n\t return OFB;\n\t}());\n\n\n\treturn CryptoJS.mode.OFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Electronic Codebook block mode.\n\t */\n\tCryptoJS.mode.ECB = (function () {\n\t var ECB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t ECB.Encryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.encryptBlock(words, offset);\n\t }\n\t });\n\n\t ECB.Decryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.decryptBlock(words, offset);\n\t }\n\t });\n\n\t return ECB;\n\t}());\n\n\n\treturn CryptoJS.mode.ECB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ANSI X.923 padding strategy.\n\t */\n\tCryptoJS.pad.AnsiX923 = {\n\t pad: function (data, blockSize) {\n\t // Shortcuts\n\t var dataSigBytes = data.sigBytes;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;\n\n\t // Compute last byte position\n\t var lastBytePos = dataSigBytes + nPaddingBytes - 1;\n\n\t // Pad\n\t data.clamp();\n\t data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);\n\t data.sigBytes += nPaddingBytes;\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Ansix923;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO 10126 padding strategy.\n\t */\n\tCryptoJS.pad.Iso10126 = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Pad\n\t data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).\n\t concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso10126;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO/IEC 9797-1 Padding Method 2.\n\t */\n\tCryptoJS.pad.Iso97971 = {\n\t pad: function (data, blockSize) {\n\t // Add 0x80 byte\n\t data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));\n\n\t // Zero pad the rest\n\t CryptoJS.pad.ZeroPadding.pad(data, blockSize);\n\t },\n\n\t unpad: function (data) {\n\t // Remove zero padding\n\t CryptoJS.pad.ZeroPadding.unpad(data);\n\n\t // Remove one more byte -- the 0x80 byte\n\t data.sigBytes--;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso97971;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Zero padding strategy.\n\t */\n\tCryptoJS.pad.ZeroPadding = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Pad\n\t data.clamp();\n\t data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);\n\t },\n\n\t unpad: function (data) {\n\t // Shortcut\n\t var dataWords = data.words;\n\n\t // Unpad\n\t var i = data.sigBytes - 1;\n\t for (var i = data.sigBytes - 1; i >= 0; i--) {\n\t if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {\n\t data.sigBytes = i + 1;\n\t break;\n\t }\n\t }\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.ZeroPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * A noop padding strategy.\n\t */\n\tCryptoJS.pad.NoPadding = {\n\t pad: function () {\n\t },\n\n\t unpad: function () {\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.NoPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var CipherParams = C_lib.CipherParams;\n\t var C_enc = C.enc;\n\t var Hex = C_enc.Hex;\n\t var C_format = C.format;\n\n\t var HexFormatter = C_format.Hex = {\n\t /**\n\t * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The hexadecimally encoded string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.format.Hex.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t return cipherParams.ciphertext.toString(Hex);\n\t },\n\n\t /**\n\t * Converts a hexadecimally encoded ciphertext string to a cipher params object.\n\t *\n\t * @param {string} input The hexadecimally encoded string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.Hex.parse(hexString);\n\t */\n\t parse: function (input) {\n\t var ciphertext = Hex.parse(input);\n\t return CipherParams.create({ ciphertext: ciphertext });\n\t }\n\t };\n\t}());\n\n\n\treturn CryptoJS.format.Hex;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t var t;\n\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Permuted Choice 1 constants\n\t var PC1 = [\n\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t 29, 21, 13, 5, 28, 20, 12, 4\n\t ];\n\n\t // Permuted Choice 2 constants\n\t var PC2 = [\n\t 14, 17, 11, 24, 1, 5,\n\t 3, 28, 15, 6, 21, 10,\n\t 23, 19, 12, 4, 26, 8,\n\t 16, 7, 27, 20, 13, 2,\n\t 41, 52, 31, 37, 47, 55,\n\t 30, 40, 51, 45, 33, 48,\n\t 44, 49, 39, 56, 34, 53,\n\t 46, 42, 50, 36, 29, 32\n\t ];\n\n\t // Cumulative bit shift constants\n\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t // SBOXes and round permutation constants\n\t var SBOX_P = [\n\t {\n\t 0x0: 0x808200,\n\t 0x10000000: 0x8000,\n\t 0x20000000: 0x808002,\n\t 0x30000000: 0x2,\n\t 0x40000000: 0x200,\n\t 0x50000000: 0x808202,\n\t 0x60000000: 0x800202,\n\t 0x70000000: 0x800000,\n\t 0x80000000: 0x202,\n\t 0x90000000: 0x800200,\n\t 0xa0000000: 0x8200,\n\t 0xb0000000: 0x808000,\n\t 0xc0000000: 0x8002,\n\t 0xd0000000: 0x800002,\n\t 0xe0000000: 0x0,\n\t 0xf0000000: 0x8202,\n\t 0x8000000: 0x0,\n\t 0x18000000: 0x808202,\n\t 0x28000000: 0x8202,\n\t 0x38000000: 0x8000,\n\t 0x48000000: 0x808200,\n\t 0x58000000: 0x200,\n\t 0x68000000: 0x808002,\n\t 0x78000000: 0x2,\n\t 0x88000000: 0x800200,\n\t 0x98000000: 0x8200,\n\t 0xa8000000: 0x808000,\n\t 0xb8000000: 0x800202,\n\t 0xc8000000: 0x800002,\n\t 0xd8000000: 0x8002,\n\t 0xe8000000: 0x202,\n\t 0xf8000000: 0x800000,\n\t 0x1: 0x8000,\n\t 0x10000001: 0x2,\n\t 0x20000001: 0x808200,\n\t 0x30000001: 0x800000,\n\t 0x40000001: 0x808002,\n\t 0x50000001: 0x8200,\n\t 0x60000001: 0x200,\n\t 0x70000001: 0x800202,\n\t 0x80000001: 0x808202,\n\t 0x90000001: 0x808000,\n\t 0xa0000001: 0x800002,\n\t 0xb0000001: 0x8202,\n\t 0xc0000001: 0x202,\n\t 0xd0000001: 0x800200,\n\t 0xe0000001: 0x8002,\n\t 0xf0000001: 0x0,\n\t 0x8000001: 0x808202,\n\t 0x18000001: 0x808000,\n\t 0x28000001: 0x800000,\n\t 0x38000001: 0x200,\n\t 0x48000001: 0x8000,\n\t 0x58000001: 0x800002,\n\t 0x68000001: 0x2,\n\t 0x78000001: 0x8202,\n\t 0x88000001: 0x8002,\n\t 0x98000001: 0x800202,\n\t 0xa8000001: 0x202,\n\t 0xb8000001: 0x808200,\n\t 0xc8000001: 0x800200,\n\t 0xd8000001: 0x0,\n\t 0xe8000001: 0x8200,\n\t 0xf8000001: 0x808002\n\t },\n\t {\n\t 0x0: 0x40084010,\n\t 0x1000000: 0x4000,\n\t 0x2000000: 0x80000,\n\t 0x3000000: 0x40080010,\n\t 0x4000000: 0x40000010,\n\t 0x5000000: 0x40084000,\n\t 0x6000000: 0x40004000,\n\t 0x7000000: 0x10,\n\t 0x8000000: 0x84000,\n\t 0x9000000: 0x40004010,\n\t 0xa000000: 0x40000000,\n\t 0xb000000: 0x84010,\n\t 0xc000000: 0x80010,\n\t 0xd000000: 0x0,\n\t 0xe000000: 0x4010,\n\t 0xf000000: 0x40080000,\n\t 0x800000: 0x40004000,\n\t 0x1800000: 0x84010,\n\t 0x2800000: 0x10,\n\t 0x3800000: 0x40004010,\n\t 0x4800000: 0x40084010,\n\t 0x5800000: 0x40000000,\n\t 0x6800000: 0x80000,\n\t 0x7800000: 0x40080010,\n\t 0x8800000: 0x80010,\n\t 0x9800000: 0x0,\n\t 0xa800000: 0x4000,\n\t 0xb800000: 0x40080000,\n\t 0xc800000: 0x40000010,\n\t 0xd800000: 0x84000,\n\t 0xe800000: 0x40084000,\n\t 0xf800000: 0x4010,\n\t 0x10000000: 0x0,\n\t 0x11000000: 0x40080010,\n\t 0x12000000: 0x40004010,\n\t 0x13000000: 0x40084000,\n\t 0x14000000: 0x40080000,\n\t 0x15000000: 0x10,\n\t 0x16000000: 0x84010,\n\t 0x17000000: 0x4000,\n\t 0x18000000: 0x4010,\n\t 0x19000000: 0x80000,\n\t 0x1a000000: 0x80010,\n\t 0x1b000000: 0x40000010,\n\t 0x1c000000: 0x84000,\n\t 0x1d000000: 0x40004000,\n\t 0x1e000000: 0x40000000,\n\t 0x1f000000: 0x40084010,\n\t 0x10800000: 0x84010,\n\t 0x11800000: 0x80000,\n\t 0x12800000: 0x40080000,\n\t 0x13800000: 0x4000,\n\t 0x14800000: 0x40004000,\n\t 0x15800000: 0x40084010,\n\t 0x16800000: 0x10,\n\t 0x17800000: 0x40000000,\n\t 0x18800000: 0x40084000,\n\t 0x19800000: 0x40000010,\n\t 0x1a800000: 0x40004010,\n\t 0x1b800000: 0x80010,\n\t 0x1c800000: 0x0,\n\t 0x1d800000: 0x4010,\n\t 0x1e800000: 0x40080010,\n\t 0x1f800000: 0x84000\n\t },\n\t {\n\t 0x0: 0x104,\n\t 0x100000: 0x0,\n\t 0x200000: 0x4000100,\n\t 0x300000: 0x10104,\n\t 0x400000: 0x10004,\n\t 0x500000: 0x4000004,\n\t 0x600000: 0x4010104,\n\t 0x700000: 0x4010000,\n\t 0x800000: 0x4000000,\n\t 0x900000: 0x4010100,\n\t 0xa00000: 0x10100,\n\t 0xb00000: 0x4010004,\n\t 0xc00000: 0x4000104,\n\t 0xd00000: 0x10000,\n\t 0xe00000: 0x4,\n\t 0xf00000: 0x100,\n\t 0x80000: 0x4010100,\n\t 0x180000: 0x4010004,\n\t 0x280000: 0x0,\n\t 0x380000: 0x4000100,\n\t 0x480000: 0x4000004,\n\t 0x580000: 0x10000,\n\t 0x680000: 0x10004,\n\t 0x780000: 0x104,\n\t 0x880000: 0x4,\n\t 0x980000: 0x100,\n\t 0xa80000: 0x4010000,\n\t 0xb80000: 0x10104,\n\t 0xc80000: 0x10100,\n\t 0xd80000: 0x4000104,\n\t 0xe80000: 0x4010104,\n\t 0xf80000: 0x4000000,\n\t 0x1000000: 0x4010100,\n\t 0x1100000: 0x10004,\n\t 0x1200000: 0x10000,\n\t 0x1300000: 0x4000100,\n\t 0x1400000: 0x100,\n\t 0x1500000: 0x4010104,\n\t 0x1600000: 0x4000004,\n\t 0x1700000: 0x0,\n\t 0x1800000: 0x4000104,\n\t 0x1900000: 0x4000000,\n\t 0x1a00000: 0x4,\n\t 0x1b00000: 0x10100,\n\t 0x1c00000: 0x4010000,\n\t 0x1d00000: 0x104,\n\t 0x1e00000: 0x10104,\n\t 0x1f00000: 0x4010004,\n\t 0x1080000: 0x4000000,\n\t 0x1180000: 0x104,\n\t 0x1280000: 0x4010100,\n\t 0x1380000: 0x0,\n\t 0x1480000: 0x10004,\n\t 0x1580000: 0x4000100,\n\t 0x1680000: 0x100,\n\t 0x1780000: 0x4010004,\n\t 0x1880000: 0x10000,\n\t 0x1980000: 0x4010104,\n\t 0x1a80000: 0x10104,\n\t 0x1b80000: 0x4000004,\n\t 0x1c80000: 0x4000104,\n\t 0x1d80000: 0x4010000,\n\t 0x1e80000: 0x4,\n\t 0x1f80000: 0x10100\n\t },\n\t {\n\t 0x0: 0x80401000,\n\t 0x10000: 0x80001040,\n\t 0x20000: 0x401040,\n\t 0x30000: 0x80400000,\n\t 0x40000: 0x0,\n\t 0x50000: 0x401000,\n\t 0x60000: 0x80000040,\n\t 0x70000: 0x400040,\n\t 0x80000: 0x80000000,\n\t 0x90000: 0x400000,\n\t 0xa0000: 0x40,\n\t 0xb0000: 0x80001000,\n\t 0xc0000: 0x80400040,\n\t 0xd0000: 0x1040,\n\t 0xe0000: 0x1000,\n\t 0xf0000: 0x80401040,\n\t 0x8000: 0x80001040,\n\t 0x18000: 0x40,\n\t 0x28000: 0x80400040,\n\t 0x38000: 0x80001000,\n\t 0x48000: 0x401000,\n\t 0x58000: 0x80401040,\n\t 0x68000: 0x0,\n\t 0x78000: 0x80400000,\n\t 0x88000: 0x1000,\n\t 0x98000: 0x80401000,\n\t 0xa8000: 0x400000,\n\t 0xb8000: 0x1040,\n\t 0xc8000: 0x80000000,\n\t 0xd8000: 0x400040,\n\t 0xe8000: 0x401040,\n\t 0xf8000: 0x80000040,\n\t 0x100000: 0x400040,\n\t 0x110000: 0x401000,\n\t 0x120000: 0x80000040,\n\t 0x130000: 0x0,\n\t 0x140000: 0x1040,\n\t 0x150000: 0x80400040,\n\t 0x160000: 0x80401000,\n\t 0x170000: 0x80001040,\n\t 0x180000: 0x80401040,\n\t 0x190000: 0x80000000,\n\t 0x1a0000: 0x80400000,\n\t 0x1b0000: 0x401040,\n\t 0x1c0000: 0x80001000,\n\t 0x1d0000: 0x400000,\n\t 0x1e0000: 0x40,\n\t 0x1f0000: 0x1000,\n\t 0x108000: 0x80400000,\n\t 0x118000: 0x80401040,\n\t 0x128000: 0x0,\n\t 0x138000: 0x401000,\n\t 0x148000: 0x400040,\n\t 0x158000: 0x80000000,\n\t 0x168000: 0x80001040,\n\t 0x178000: 0x40,\n\t 0x188000: 0x80000040,\n\t 0x198000: 0x1000,\n\t 0x1a8000: 0x80001000,\n\t 0x1b8000: 0x80400040,\n\t 0x1c8000: 0x1040,\n\t 0x1d8000: 0x80401000,\n\t 0x1e8000: 0x400000,\n\t 0x1f8000: 0x401040\n\t },\n\t {\n\t 0x0: 0x80,\n\t 0x1000: 0x1040000,\n\t 0x2000: 0x40000,\n\t 0x3000: 0x20000000,\n\t 0x4000: 0x20040080,\n\t 0x5000: 0x1000080,\n\t 0x6000: 0x21000080,\n\t 0x7000: 0x40080,\n\t 0x8000: 0x1000000,\n\t 0x9000: 0x20040000,\n\t 0xa000: 0x20000080,\n\t 0xb000: 0x21040080,\n\t 0xc000: 0x21040000,\n\t 0xd000: 0x0,\n\t 0xe000: 0x1040080,\n\t 0xf000: 0x21000000,\n\t 0x800: 0x1040080,\n\t 0x1800: 0x21000080,\n\t 0x2800: 0x80,\n\t 0x3800: 0x1040000,\n\t 0x4800: 0x40000,\n\t 0x5800: 0x20040080,\n\t 0x6800: 0x21040000,\n\t 0x7800: 0x20000000,\n\t 0x8800: 0x20040000,\n\t 0x9800: 0x0,\n\t 0xa800: 0x21040080,\n\t 0xb800: 0x1000080,\n\t 0xc800: 0x20000080,\n\t 0xd800: 0x21000000,\n\t 0xe800: 0x1000000,\n\t 0xf800: 0x40080,\n\t 0x10000: 0x40000,\n\t 0x11000: 0x80,\n\t 0x12000: 0x20000000,\n\t 0x13000: 0x21000080,\n\t 0x14000: 0x1000080,\n\t 0x15000: 0x21040000,\n\t 0x16000: 0x20040080,\n\t 0x17000: 0x1000000,\n\t 0x18000: 0x21040080,\n\t 0x19000: 0x21000000,\n\t 0x1a000: 0x1040000,\n\t 0x1b000: 0x20040000,\n\t 0x1c000: 0x40080,\n\t 0x1d000: 0x20000080,\n\t 0x1e000: 0x0,\n\t 0x1f000: 0x1040080,\n\t 0x10800: 0x21000080,\n\t 0x11800: 0x1000000,\n\t 0x12800: 0x1040000,\n\t 0x13800: 0x20040080,\n\t 0x14800: 0x20000000,\n\t 0x15800: 0x1040080,\n\t 0x16800: 0x80,\n\t 0x17800: 0x21040000,\n\t 0x18800: 0x40080,\n\t 0x19800: 0x21040080,\n\t 0x1a800: 0x0,\n\t 0x1b800: 0x21000000,\n\t 0x1c800: 0x1000080,\n\t 0x1d800: 0x40000,\n\t 0x1e800: 0x20040000,\n\t 0x1f800: 0x20000080\n\t },\n\t {\n\t 0x0: 0x10000008,\n\t 0x100: 0x2000,\n\t 0x200: 0x10200000,\n\t 0x300: 0x10202008,\n\t 0x400: 0x10002000,\n\t 0x500: 0x200000,\n\t 0x600: 0x200008,\n\t 0x700: 0x10000000,\n\t 0x800: 0x0,\n\t 0x900: 0x10002008,\n\t 0xa00: 0x202000,\n\t 0xb00: 0x8,\n\t 0xc00: 0x10200008,\n\t 0xd00: 0x202008,\n\t 0xe00: 0x2008,\n\t 0xf00: 0x10202000,\n\t 0x80: 0x10200000,\n\t 0x180: 0x10202008,\n\t 0x280: 0x8,\n\t 0x380: 0x200000,\n\t 0x480: 0x202008,\n\t 0x580: 0x10000008,\n\t 0x680: 0x10002000,\n\t 0x780: 0x2008,\n\t 0x880: 0x200008,\n\t 0x980: 0x2000,\n\t 0xa80: 0x10002008,\n\t 0xb80: 0x10200008,\n\t 0xc80: 0x0,\n\t 0xd80: 0x10202000,\n\t 0xe80: 0x202000,\n\t 0xf80: 0x10000000,\n\t 0x1000: 0x10002000,\n\t 0x1100: 0x10200008,\n\t 0x1200: 0x10202008,\n\t 0x1300: 0x2008,\n\t 0x1400: 0x200000,\n\t 0x1500: 0x10000000,\n\t 0x1600: 0x10000008,\n\t 0x1700: 0x202000,\n\t 0x1800: 0x202008,\n\t 0x1900: 0x0,\n\t 0x1a00: 0x8,\n\t 0x1b00: 0x10200000,\n\t 0x1c00: 0x2000,\n\t 0x1d00: 0x10002008,\n\t 0x1e00: 0x10202000,\n\t 0x1f00: 0x200008,\n\t 0x1080: 0x8,\n\t 0x1180: 0x202000,\n\t 0x1280: 0x200000,\n\t 0x1380: 0x10000008,\n\t 0x1480: 0x10002000,\n\t 0x1580: 0x2008,\n\t 0x1680: 0x10202008,\n\t 0x1780: 0x10200000,\n\t 0x1880: 0x10202000,\n\t 0x1980: 0x10200008,\n\t 0x1a80: 0x2000,\n\t 0x1b80: 0x202008,\n\t 0x1c80: 0x200008,\n\t 0x1d80: 0x0,\n\t 0x1e80: 0x10000000,\n\t 0x1f80: 0x10002008\n\t },\n\t {\n\t 0x0: 0x100000,\n\t 0x10: 0x2000401,\n\t 0x20: 0x400,\n\t 0x30: 0x100401,\n\t 0x40: 0x2100401,\n\t 0x50: 0x0,\n\t 0x60: 0x1,\n\t 0x70: 0x2100001,\n\t 0x80: 0x2000400,\n\t 0x90: 0x100001,\n\t 0xa0: 0x2000001,\n\t 0xb0: 0x2100400,\n\t 0xc0: 0x2100000,\n\t 0xd0: 0x401,\n\t 0xe0: 0x100400,\n\t 0xf0: 0x2000000,\n\t 0x8: 0x2100001,\n\t 0x18: 0x0,\n\t 0x28: 0x2000401,\n\t 0x38: 0x2100400,\n\t 0x48: 0x100000,\n\t 0x58: 0x2000001,\n\t 0x68: 0x2000000,\n\t 0x78: 0x401,\n\t 0x88: 0x100401,\n\t 0x98: 0x2000400,\n\t 0xa8: 0x2100000,\n\t 0xb8: 0x100001,\n\t 0xc8: 0x400,\n\t 0xd8: 0x2100401,\n\t 0xe8: 0x1,\n\t 0xf8: 0x100400,\n\t 0x100: 0x2000000,\n\t 0x110: 0x100000,\n\t 0x120: 0x2000401,\n\t 0x130: 0x2100001,\n\t 0x140: 0x100001,\n\t 0x150: 0x2000400,\n\t 0x160: 0x2100400,\n\t 0x170: 0x100401,\n\t 0x180: 0x401,\n\t 0x190: 0x2100401,\n\t 0x1a0: 0x100400,\n\t 0x1b0: 0x1,\n\t 0x1c0: 0x0,\n\t 0x1d0: 0x2100000,\n\t 0x1e0: 0x2000001,\n\t 0x1f0: 0x400,\n\t 0x108: 0x100400,\n\t 0x118: 0x2000401,\n\t 0x128: 0x2100001,\n\t 0x138: 0x1,\n\t 0x148: 0x2000000,\n\t 0x158: 0x100000,\n\t 0x168: 0x401,\n\t 0x178: 0x2100400,\n\t 0x188: 0x2000001,\n\t 0x198: 0x2100000,\n\t 0x1a8: 0x0,\n\t 0x1b8: 0x2100401,\n\t 0x1c8: 0x100401,\n\t 0x1d8: 0x400,\n\t 0x1e8: 0x2000400,\n\t 0x1f8: 0x100001\n\t },\n\t {\n\t 0x0: 0x8000820,\n\t 0x1: 0x20000,\n\t 0x2: 0x8000000,\n\t 0x3: 0x20,\n\t 0x4: 0x20020,\n\t 0x5: 0x8020820,\n\t 0x6: 0x8020800,\n\t 0x7: 0x800,\n\t 0x8: 0x8020000,\n\t 0x9: 0x8000800,\n\t 0xa: 0x20800,\n\t 0xb: 0x8020020,\n\t 0xc: 0x820,\n\t 0xd: 0x0,\n\t 0xe: 0x8000020,\n\t 0xf: 0x20820,\n\t 0x80000000: 0x800,\n\t 0x80000001: 0x8020820,\n\t 0x80000002: 0x8000820,\n\t 0x80000003: 0x8000000,\n\t 0x80000004: 0x8020000,\n\t 0x80000005: 0x20800,\n\t 0x80000006: 0x20820,\n\t 0x80000007: 0x20,\n\t 0x80000008: 0x8000020,\n\t 0x80000009: 0x820,\n\t 0x8000000a: 0x20020,\n\t 0x8000000b: 0x8020800,\n\t 0x8000000c: 0x0,\n\t 0x8000000d: 0x8020020,\n\t 0x8000000e: 0x8000800,\n\t 0x8000000f: 0x20000,\n\t 0x10: 0x20820,\n\t 0x11: 0x8020800,\n\t 0x12: 0x20,\n\t 0x13: 0x800,\n\t 0x14: 0x8000800,\n\t 0x15: 0x8000020,\n\t 0x16: 0x8020020,\n\t 0x17: 0x20000,\n\t 0x18: 0x0,\n\t 0x19: 0x20020,\n\t 0x1a: 0x8020000,\n\t 0x1b: 0x8000820,\n\t 0x1c: 0x8020820,\n\t 0x1d: 0x20800,\n\t 0x1e: 0x820,\n\t 0x1f: 0x8000000,\n\t 0x80000010: 0x20000,\n\t 0x80000011: 0x800,\n\t 0x80000012: 0x8020020,\n\t 0x80000013: 0x20820,\n\t 0x80000014: 0x20,\n\t 0x80000015: 0x8020000,\n\t 0x80000016: 0x8000000,\n\t 0x80000017: 0x8000820,\n\t 0x80000018: 0x8020820,\n\t 0x80000019: 0x8000020,\n\t 0x8000001a: 0x8000800,\n\t 0x8000001b: 0x0,\n\t 0x8000001c: 0x20800,\n\t 0x8000001d: 0x820,\n\t 0x8000001e: 0x20020,\n\t 0x8000001f: 0x8020800\n\t }\n\t ];\n\n\t // Masks that select the SBOX input\n\t var SBOX_MASK = [\n\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t ];\n\n\t /**\n\t * DES block cipher algorithm.\n\t */\n\t var DES = C_algo.DES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Select 56 bits according to PC1\n\t var keyBits = [];\n\t for (var i = 0; i < 56; i++) {\n\t var keyBitPos = PC1[i] - 1;\n\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t }\n\n\t // Assemble 16 subkeys\n\t var subKeys = this._subKeys = [];\n\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t // Create subkey\n\t var subKey = subKeys[nSubKey] = [];\n\n\t // Shortcut\n\t var bitShift = BIT_SHIFTS[nSubKey];\n\n\t // Select 48 bits according to PC2\n\t for (var i = 0; i < 24; i++) {\n\t // Select from the left 28 key bits\n\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t // Select from the right 28 key bits\n\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t }\n\n\t // Since each subkey is applied to an expanded 32-bit input,\n\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t // which allows the key to be used without expansion\n\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t for (var i = 1; i < 7; i++) {\n\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t }\n\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t }\n\n\t // Compute inverse subkeys\n\t var invSubKeys = this._invSubKeys = [];\n\t for (var i = 0; i < 16; i++) {\n\t invSubKeys[i] = subKeys[15 - i];\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._subKeys);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t },\n\n\t _doCryptBlock: function (M, offset, subKeys) {\n\t // Get input\n\t this._lBlock = M[offset];\n\t this._rBlock = M[offset + 1];\n\n\t // Initial permutation\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeLR.call(this, 1, 0x55555555);\n\n\t // Rounds\n\t for (var round = 0; round < 16; round++) {\n\t // Shortcuts\n\t var subKey = subKeys[round];\n\t var lBlock = this._lBlock;\n\t var rBlock = this._rBlock;\n\n\t // Feistel function\n\t var f = 0;\n\t for (var i = 0; i < 8; i++) {\n\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t }\n\t this._lBlock = rBlock;\n\t this._rBlock = lBlock ^ f;\n\t }\n\n\t // Undo swap from last round\n\t var t = this._lBlock;\n\t this._lBlock = this._rBlock;\n\t this._rBlock = t;\n\n\t // Final permutation\n\t exchangeLR.call(this, 1, 0x55555555);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n\t // Set output\n\t M[offset] = this._lBlock;\n\t M[offset + 1] = this._rBlock;\n\t },\n\n\t keySize: 64/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t // Swap bits across the left and right words\n\t function exchangeLR(offset, mask) {\n\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t this._rBlock ^= t;\n\t this._lBlock ^= t << offset;\n\t }\n\n\t function exchangeRL(offset, mask) {\n\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t this._lBlock ^= t;\n\t this._rBlock ^= t << offset;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.DES = BlockCipher._createHelper(DES);\n\n\t /**\n\t * Triple-DES block cipher algorithm.\n\t */\n\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t // Make sure the key length is valid (64, 128 or >= 192 bit)\n\t if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {\n\t throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');\n\t }\n\n\t // Extend the key according to the keying options defined in 3DES standard\n\t var key1 = keyWords.slice(0, 2);\n\t var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);\n\t var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);\n\n\t // Create DES instances\n\t this._des1 = DES.createEncryptor(WordArray.create(key1));\n\t this._des2 = DES.createEncryptor(WordArray.create(key2));\n\t this._des3 = DES.createEncryptor(WordArray.create(key3));\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._des1.encryptBlock(M, offset);\n\t this._des2.decryptBlock(M, offset);\n\t this._des3.encryptBlock(M, offset);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._des3.decryptBlock(M, offset);\n\t this._des2.encryptBlock(M, offset);\n\t this._des1.decryptBlock(M, offset);\n\t },\n\n\t keySize: 192/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t /**\n\t * RC4 stream cipher algorithm.\n\t */\n\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t var keySigBytes = key.sigBytes;\n\n\t // Init sbox\n\t var S = this._S = [];\n\t for (var i = 0; i < 256; i++) {\n\t S[i] = i;\n\t }\n\n\t // Key setup\n\t for (var i = 0, j = 0; i < 256; i++) {\n\t var keyByteIndex = i % keySigBytes;\n\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t j = (j + S[i] + keyByte) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\t }\n\n\t // Counters\n\t this._i = this._j = 0;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t M[offset] ^= generateKeystreamWord.call(this);\n\t },\n\n\t keySize: 256/32,\n\n\t ivSize: 0\n\t });\n\n\t function generateKeystreamWord() {\n\t // Shortcuts\n\t var S = this._S;\n\t var i = this._i;\n\t var j = this._j;\n\n\t // Generate keystream word\n\t var keystreamWord = 0;\n\t for (var n = 0; n < 4; n++) {\n\t i = (i + 1) % 256;\n\t j = (j + S[i]) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\n\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t }\n\n\t // Update counters\n\t this._i = i;\n\t this._j = j;\n\n\t return keystreamWord;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4 = StreamCipher._createHelper(RC4);\n\n\t /**\n\t * Modified RC4 stream cipher algorithm.\n\t */\n\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} drop The number of keystream words to drop. Default 192\n\t */\n\t cfg: RC4.cfg.extend({\n\t drop: 192\n\t }),\n\n\t _doReset: function () {\n\t RC4._doReset.call(this);\n\n\t // Drop\n\t for (var i = this.cfg.drop; i > 0; i--) {\n\t generateKeystreamWord.call(this);\n\t }\n\t }\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm\n\t */\n\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm.\n\t *\n\t * This is a legacy version that neglected to convert the key to little-endian.\n\t * This error doesn't affect the cipher's security,\n\t * but it does affect its compatibility with other implementations.\n\t */\n\t var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);\n\t}());\n\n\n\treturn CryptoJS.RabbitLegacy;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t const N = 16;\n\n\t //Origin pbox and sbox, derived from PI\n\t const ORIG_P = [\n\t 0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344,\n\t 0xA4093822, 0x299F31D0, 0x082EFA98, 0xEC4E6C89,\n\t 0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C,\n\t 0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917,\n\t 0x9216D5D9, 0x8979FB1B\n\t ];\n\n\t const ORIG_S = [\n\t [ 0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7,\n\t 0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99,\n\t 0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16,\n\t 0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E,\n\t 0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE,\n\t 0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013,\n\t 0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF,\n\t 0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E,\n\t 0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60,\n\t 0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440,\n\t 0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE,\n\t 0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A,\n\t 0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E,\n\t 0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677,\n\t 0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193,\n\t 0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032,\n\t 0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88,\n\t 0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239,\n\t 0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E,\n\t 0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0,\n\t 0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3,\n\t 0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98,\n\t 0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88,\n\t 0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE,\n\t 0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6,\n\t 0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D,\n\t 0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B,\n\t 0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7,\n\t 0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA,\n\t 0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463,\n\t 0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F,\n\t 0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09,\n\t 0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3,\n\t 0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB,\n\t 0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279,\n\t 0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8,\n\t 0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB,\n\t 0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82,\n\t 0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB,\n\t 0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573,\n\t 0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0,\n\t 0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B,\n\t 0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790,\n\t 0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8,\n\t 0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4,\n\t 0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0,\n\t 0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7,\n\t 0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C,\n\t 0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD,\n\t 0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1,\n\t 0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299,\n\t 0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9,\n\t 0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477,\n\t 0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF,\n\t 0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49,\n\t 0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF,\n\t 0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA,\n\t 0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5,\n\t 0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41,\n\t 0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915,\n\t 0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400,\n\t 0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915,\n\t 0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664,\n\t 0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A ],\n\t [ 0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623,\n\t 0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266,\n\t 0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1,\n\t 0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E,\n\t 0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6,\n\t 0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1,\n\t 0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E,\n\t 0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1,\n\t 0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737,\n\t 0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8,\n\t 0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF,\n\t 0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD,\n\t 0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701,\n\t 0x3AE5E581, 0x37C2DADC, 0xC8B57634, 0x9AF3DDA7,\n\t 0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41,\n\t 0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331,\n\t 0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF,\n\t 0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF,\n\t 0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E,\n\t 0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87,\n\t 0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C,\n\t 0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2,\n\t 0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16,\n\t 0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD,\n\t 0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B,\n\t 0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509,\n\t 0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E,\n\t 0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3,\n\t 0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F,\n\t 0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A,\n\t 0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4,\n\t 0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960,\n\t 0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66,\n\t 0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28,\n\t 0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802,\n\t 0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84,\n\t 0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510,\n\t 0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF,\n\t 0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14,\n\t 0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E,\n\t 0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50,\n\t 0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7,\n\t 0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8,\n\t 0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281,\n\t 0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99,\n\t 0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696,\n\t 0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128,\n\t 0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73,\n\t 0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0,\n\t 0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0,\n\t 0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105,\n\t 0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250,\n\t 0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3,\n\t 0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285,\n\t 0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00,\n\t 0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061,\n\t 0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB,\n\t 0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E,\n\t 0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735,\n\t 0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC,\n\t 0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9,\n\t 0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340,\n\t 0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20,\n\t 0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7 ],\n\t [ 0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934,\n\t 0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068,\n\t 0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF,\n\t 0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840,\n\t 0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45,\n\t 0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504,\n\t 0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A,\n\t 0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB,\n\t 0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE,\n\t 0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6,\n\t 0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42,\n\t 0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B,\n\t 0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2,\n\t 0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB,\n\t 0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527,\n\t 0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B,\n\t 0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33,\n\t 0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C,\n\t 0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3,\n\t 0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC,\n\t 0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17,\n\t 0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564,\n\t 0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B,\n\t 0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115,\n\t 0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922,\n\t 0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728,\n\t 0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0,\n\t 0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E,\n\t 0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37,\n\t 0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D,\n\t 0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804,\n\t 0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B,\n\t 0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3,\n\t 0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB,\n\t 0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D,\n\t 0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C,\n\t 0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350,\n\t 0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9,\n\t 0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A,\n\t 0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE,\n\t 0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D,\n\t 0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC,\n\t 0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F,\n\t 0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61,\n\t 0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2,\n\t 0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9,\n\t 0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2,\n\t 0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C,\n\t 0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E,\n\t 0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633,\n\t 0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10,\n\t 0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169,\n\t 0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52,\n\t 0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027,\n\t 0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5,\n\t 0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62,\n\t 0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634,\n\t 0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76,\n\t 0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24,\n\t 0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC,\n\t 0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4,\n\t 0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C,\n\t 0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837,\n\t 0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0 ],\n\t [ 0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B,\n\t 0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE,\n\t 0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B,\n\t 0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4,\n\t 0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8,\n\t 0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6,\n\t 0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304,\n\t 0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22,\n\t 0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4,\n\t 0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6,\n\t 0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9,\n\t 0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59,\n\t 0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593,\n\t 0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51,\n\t 0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28,\n\t 0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C,\n\t 0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B,\n\t 0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28,\n\t 0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C,\n\t 0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD,\n\t 0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A,\n\t 0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319,\n\t 0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB,\n\t 0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F,\n\t 0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991,\n\t 0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32,\n\t 0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680,\n\t 0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166,\n\t 0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE,\n\t 0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB,\n\t 0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5,\n\t 0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47,\n\t 0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370,\n\t 0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D,\n\t 0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84,\n\t 0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048,\n\t 0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8,\n\t 0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD,\n\t 0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9,\n\t 0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7,\n\t 0x1A908749, 0xD44FBD9A, 0xD0DADECB, 0xD50ADA38,\n\t 0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F,\n\t 0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C,\n\t 0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525,\n\t 0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1,\n\t 0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442,\n\t 0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964,\n\t 0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E,\n\t 0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8,\n\t 0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D,\n\t 0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F,\n\t 0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299,\n\t 0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02,\n\t 0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC,\n\t 0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614,\n\t 0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A,\n\t 0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6,\n\t 0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B,\n\t 0x53113EC0, 0x1640E3D3, 0x38ABBD60, 0x2547ADF0,\n\t 0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060,\n\t 0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E,\n\t 0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9,\n\t 0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F,\n\t 0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6 ]\n\t ];\n\n\t var BLOWFISH_CTX = {\n\t pbox: [],\n\t sbox: []\n\t }\n\n\t function F(ctx, x){\n\t let a = (x >> 24) & 0xFF;\n\t let b = (x >> 16) & 0xFF;\n\t let c = (x >> 8) & 0xFF;\n\t let d = x & 0xFF;\n\n\t let y = ctx.sbox[0][a] + ctx.sbox[1][b];\n\t y = y ^ ctx.sbox[2][c];\n\t y = y + ctx.sbox[3][d];\n\n\t return y;\n\t }\n\n\t function BlowFish_Encrypt(ctx, left, right){\n\t let Xl = left;\n\t let Xr = right;\n\t let temp;\n\n\t for(let i = 0; i < N; ++i){\n\t Xl = Xl ^ ctx.pbox[i];\n\t Xr = F(ctx, Xl) ^ Xr;\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\t }\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\n\t Xr = Xr ^ ctx.pbox[N];\n\t Xl = Xl ^ ctx.pbox[N + 1];\n\n\t return {left: Xl, right: Xr};\n\t }\n\n\t function BlowFish_Decrypt(ctx, left, right){\n\t let Xl = left;\n\t let Xr = right;\n\t let temp;\n\n\t for(let i = N + 1; i > 1; --i){\n\t Xl = Xl ^ ctx.pbox[i];\n\t Xr = F(ctx, Xl) ^ Xr;\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\t }\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\n\t Xr = Xr ^ ctx.pbox[1];\n\t Xl = Xl ^ ctx.pbox[0];\n\n\t return {left: Xl, right: Xr};\n\t }\n\n\t /**\n\t * Initialization ctx's pbox and sbox.\n\t *\n\t * @param {Object} ctx The object has pbox and sbox.\n\t * @param {Array} key An array of 32-bit words.\n\t * @param {int} keysize The length of the key.\n\t *\n\t * @example\n\t *\n\t * BlowFishInit(BLOWFISH_CTX, key, 128/32);\n\t */\n\t function BlowFishInit(ctx, key, keysize)\n\t {\n\t for(let Row = 0; Row < 4; Row++)\n\t {\n\t ctx.sbox[Row] = [];\n\t for(let Col = 0; Col < 256; Col++)\n\t {\n\t ctx.sbox[Row][Col] = ORIG_S[Row][Col];\n\t }\n\t }\n\n\t let keyIndex = 0;\n\t for(let index = 0; index < N + 2; index++)\n\t {\n\t ctx.pbox[index] = ORIG_P[index] ^ key[keyIndex];\n\t keyIndex++;\n\t if(keyIndex >= keysize)\n\t {\n\t keyIndex = 0;\n\t }\n\t }\n\n\t let Data1 = 0;\n\t let Data2 = 0;\n\t let res = 0;\n\t for(let i = 0; i < N + 2; i += 2)\n\t {\n\t res = BlowFish_Encrypt(ctx, Data1, Data2);\n\t Data1 = res.left;\n\t Data2 = res.right;\n\t ctx.pbox[i] = Data1;\n\t ctx.pbox[i + 1] = Data2;\n\t }\n\n\t for(let i = 0; i < 4; i++)\n\t {\n\t for(let j = 0; j < 256; j += 2)\n\t {\n\t res = BlowFish_Encrypt(ctx, Data1, Data2);\n\t Data1 = res.left;\n\t Data2 = res.right;\n\t ctx.sbox[i][j] = Data1;\n\t ctx.sbox[i][j + 1] = Data2;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t /**\n\t * Blowfish block cipher algorithm.\n\t */\n\t var Blowfish = C_algo.Blowfish = BlockCipher.extend({\n\t _doReset: function () {\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t //Initialization pbox and sbox\n\t BlowFishInit(BLOWFISH_CTX, keyWords, keySize);\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t var res = BlowFish_Encrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);\n\t M[offset] = res.left;\n\t M[offset + 1] = res.right;\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t var res = BlowFish_Decrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);\n\t M[offset] = res.left;\n\t M[offset + 1] = res.right;\n\t },\n\n\t blockSize: 64/32,\n\n\t keySize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Blowfish.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Blowfish.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Blowfish = BlockCipher._createHelper(Blowfish);\n\t}());\n\n\n\treturn CryptoJS.Blowfish;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./lib-typedarrays\"), require(\"./enc-utf16\"), require(\"./enc-base64\"), require(\"./enc-base64url\"), require(\"./md5\"), require(\"./sha1\"), require(\"./sha256\"), require(\"./sha224\"), require(\"./sha512\"), require(\"./sha384\"), require(\"./sha3\"), require(\"./ripemd160\"), require(\"./hmac\"), require(\"./pbkdf2\"), require(\"./evpkdf\"), require(\"./cipher-core\"), require(\"./mode-cfb\"), require(\"./mode-ctr\"), require(\"./mode-ctr-gladman\"), require(\"./mode-ofb\"), require(\"./mode-ecb\"), require(\"./pad-ansix923\"), require(\"./pad-iso10126\"), require(\"./pad-iso97971\"), require(\"./pad-zeropadding\"), require(\"./pad-nopadding\"), require(\"./format-hex\"), require(\"./aes\"), require(\"./tripledes\"), require(\"./rc4\"), require(\"./rabbit\"), require(\"./rabbit-legacy\"), require(\"./blowfish\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./lib-typedarrays\", \"./enc-utf16\", \"./enc-base64\", \"./enc-base64url\", \"./md5\", \"./sha1\", \"./sha256\", \"./sha224\", \"./sha512\", \"./sha384\", \"./sha3\", \"./ripemd160\", \"./hmac\", \"./pbkdf2\", \"./evpkdf\", \"./cipher-core\", \"./mode-cfb\", \"./mode-ctr\", \"./mode-ctr-gladman\", \"./mode-ofb\", \"./mode-ecb\", \"./pad-ansix923\", \"./pad-iso10126\", \"./pad-iso97971\", \"./pad-zeropadding\", \"./pad-nopadding\", \"./format-hex\", \"./aes\", \"./tripledes\", \"./rc4\", \"./rabbit\", \"./rabbit-legacy\", \"./blowfish\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS;\n\n}));","import { ec as ec$1 } from 'elliptic';\n\nconst ec = new ec$1(\"secp256k1\");\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, n/no-unsupported-features/node-builtins\nconst browserCrypto = globalThis.crypto || globalThis.msCrypto || {};\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst subtle = browserCrypto.subtle || browserCrypto.webkitSubtle;\nconst EC_GROUP_ORDER = Buffer.from(\"fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141\", \"hex\");\nconst ZERO32 = Buffer.alloc(32, 0);\nfunction assert(condition, message) {\n if (!condition) {\n throw new Error(message || \"Assertion failed\");\n }\n}\nfunction isScalar(x) {\n return Buffer.isBuffer(x) && x.length === 32;\n}\nfunction isValidPrivateKey(privateKey) {\n if (!isScalar(privateKey)) {\n return false;\n }\n return privateKey.compare(ZERO32) > 0 &&\n // > 0\n privateKey.compare(EC_GROUP_ORDER) < 0; // < G\n}\n\n// Compare two buffers in constant time to prevent timing attacks.\nfunction equalConstTime(b1, b2) {\n if (b1.length !== b2.length) {\n return false;\n }\n let res = 0;\n for (let i = 0; i < b1.length; i++) {\n res |= b1[i] ^ b2[i]; // jshint ignore:line\n }\n return res === 0;\n}\n\n/* This must check if we're in the browser or\nnot, since the functions are different and does\nnot convert using browserify */\nfunction randomBytes(size) {\n if (typeof browserCrypto.getRandomValues === \"undefined\") {\n return Buffer.from(browserCrypto.randomBytes(size));\n }\n const arr = new Uint8Array(size);\n browserCrypto.getRandomValues(arr);\n return Buffer.from(arr);\n}\nasync function sha512(msg) {\n if (!browserCrypto.createHash) {\n const hash = await subtle.digest(\"SHA-512\", msg);\n const result = new Uint8Array(hash);\n return result;\n }\n const hash = browserCrypto.createHash(\"sha512\");\n const result = hash.update(msg).digest();\n return new Uint8Array(result);\n}\nfunction getAes(op) {\n return async function (iv, key, data) {\n if (subtle && subtle[op] && subtle.importKey) {\n const importAlgorithm = {\n name: \"AES-CBC\"\n };\n const cryptoKey = await subtle.importKey(\"raw\", key, importAlgorithm, false, [op]);\n const encAlgorithm = {\n name: \"AES-CBC\",\n iv\n };\n // encrypt and decrypt ops are not implemented in react-native-quick-crypto yet.\n const result = await subtle[op](encAlgorithm, cryptoKey, data);\n return Buffer.from(new Uint8Array(result));\n } else if (op === \"encrypt\" && browserCrypto.createCipheriv) {\n // This is available if crypto is polyfilled in react native environment\n const cipher = browserCrypto.createCipheriv(\"aes-256-cbc\", key, iv);\n const firstChunk = cipher.update(data);\n const secondChunk = cipher.final();\n return Buffer.concat([firstChunk, secondChunk]);\n } else if (op === \"decrypt\" && browserCrypto.createDecipheriv) {\n const decipher = browserCrypto.createDecipheriv(\"aes-256-cbc\", key, iv);\n const firstChunk = decipher.update(data);\n const secondChunk = decipher.final();\n return Buffer.concat([firstChunk, secondChunk]);\n }\n throw new Error(`Unsupported operation: ${op}`);\n };\n}\nconst aesCbcEncrypt = getAes(\"encrypt\");\nconst aesCbcDecrypt = getAes(\"decrypt\");\nasync function hmacSha256Sign(key, msg) {\n if (!browserCrypto.createHmac) {\n const importAlgorithm = {\n name: \"HMAC\",\n hash: {\n name: \"SHA-256\"\n }\n };\n const cryptoKey = await subtle.importKey(\"raw\", new Uint8Array(key), importAlgorithm, false, [\"sign\", \"verify\"]);\n const sig = await subtle.sign(\"HMAC\", cryptoKey, msg);\n const result = Buffer.from(new Uint8Array(sig));\n return result;\n }\n const hmac = browserCrypto.createHmac(\"sha256\", Buffer.from(key));\n hmac.update(msg);\n const result = hmac.digest();\n return result;\n}\nasync function hmacSha256Verify(key, msg, sig) {\n const expectedSig = await hmacSha256Sign(key, msg);\n return equalConstTime(expectedSig, sig);\n}\n\n/**\n * Generate a new valid private key. Will use the window.crypto or window.msCrypto as source\n * depending on your browser.\n */\nconst generatePrivate = function () {\n let privateKey = randomBytes(32);\n while (!isValidPrivateKey(privateKey)) {\n privateKey = randomBytes(32);\n }\n return privateKey;\n};\nconst getPublic = function (privateKey) {\n // This function has sync API so we throw an error immediately.\n assert(privateKey.length === 32, \"Bad private key\");\n assert(isValidPrivateKey(privateKey), \"Bad private key\");\n // XXX(Kagami): `elliptic.utils.encode` returns array for every\n // encoding except `hex`.\n return Buffer.from(ec.keyFromPrivate(privateKey).getPublic(\"array\"));\n};\n\n/**\n * Get compressed version of public key.\n */\nconst getPublicCompressed = function (privateKey) {\n // jshint ignore:line\n assert(privateKey.length === 32, \"Bad private key\");\n assert(isValidPrivateKey(privateKey), \"Bad private key\");\n // See https://github.com/wanderer/secp256k1-node/issues/46\n const compressed = true;\n return Buffer.from(ec.keyFromPrivate(privateKey).getPublic(compressed, \"array\"));\n};\n\n// NOTE(Kagami): We don't use promise shim in Browser implementation\n// because it's supported natively in new browsers (see\n// ) and we can use only new browsers\n// because of the WebCryptoAPI (see\n// ).\nconst sign = async function (privateKey, msg) {\n assert(privateKey.length === 32, \"Bad private key\");\n assert(isValidPrivateKey(privateKey), \"Bad private key\");\n assert(msg.length > 0, \"Message should not be empty\");\n assert(msg.length <= 32, \"Message is too long\");\n return Buffer.from(ec.sign(msg, privateKey, {\n canonical: true\n }).toDER());\n};\nconst verify = async function (publicKey, msg, sig) {\n assert(publicKey.length === 65 || publicKey.length === 33, \"Bad public key\");\n if (publicKey.length === 65) {\n assert(publicKey[0] === 4, \"Bad public key\");\n }\n if (publicKey.length === 33) {\n assert(publicKey[0] === 2 || publicKey[0] === 3, \"Bad public key\");\n }\n assert(msg.length > 0, \"Message should not be empty\");\n assert(msg.length <= 32, \"Message is too long\");\n if (ec.verify(msg, sig, publicKey)) {\n return null;\n }\n throw new Error(\"Bad signature\");\n};\nconst derive = async function (privateKeyA, publicKeyB) {\n assert(Buffer.isBuffer(privateKeyA), \"Bad private key\");\n assert(Buffer.isBuffer(publicKeyB), \"Bad public key\");\n assert(privateKeyA.length === 32, \"Bad private key\");\n assert(isValidPrivateKey(privateKeyA), \"Bad private key\");\n assert(publicKeyB.length === 65 || publicKeyB.length === 33, \"Bad public key\");\n if (publicKeyB.length === 65) {\n assert(publicKeyB[0] === 4, \"Bad public key\");\n }\n if (publicKeyB.length === 33) {\n assert(publicKeyB[0] === 2 || publicKeyB[0] === 3, \"Bad public key\");\n }\n const keyA = ec.keyFromPrivate(privateKeyA);\n const keyB = ec.keyFromPublic(publicKeyB);\n const Px = keyA.derive(keyB.getPublic()); // BN instance\n return Buffer.from(Px.toArray());\n};\nconst deriveUnpadded = derive;\nconst derivePadded = async function (privateKeyA, publicKeyB) {\n assert(Buffer.isBuffer(privateKeyA), \"Bad private key\");\n assert(Buffer.isBuffer(publicKeyB), \"Bad public key\");\n assert(privateKeyA.length === 32, \"Bad private key\");\n assert(isValidPrivateKey(privateKeyA), \"Bad private key\");\n assert(publicKeyB.length === 65 || publicKeyB.length === 33, \"Bad public key\");\n if (publicKeyB.length === 65) {\n assert(publicKeyB[0] === 4, \"Bad public key\");\n }\n if (publicKeyB.length === 33) {\n assert(publicKeyB[0] === 2 || publicKeyB[0] === 3, \"Bad public key\");\n }\n const keyA = ec.keyFromPrivate(privateKeyA);\n const keyB = ec.keyFromPublic(publicKeyB);\n const Px = keyA.derive(keyB.getPublic()); // BN instance\n return Buffer.from(Px.toString(16, 64), \"hex\");\n};\nconst encrypt = async function (publicKeyTo, msg, opts) {\n opts = opts || {};\n let ephemPrivateKey = opts.ephemPrivateKey || randomBytes(32);\n // There is a very unlikely possibility that it is not a valid key\n while (!isValidPrivateKey(ephemPrivateKey)) {\n ephemPrivateKey = opts.ephemPrivateKey || randomBytes(32);\n }\n const ephemPublicKey = getPublic(ephemPrivateKey);\n const Px = await deriveUnpadded(ephemPrivateKey, publicKeyTo);\n const hash = await sha512(Px);\n const iv = opts.iv || randomBytes(16);\n const encryptionKey = hash.slice(0, 32);\n const macKey = hash.slice(32);\n const data = await aesCbcEncrypt(iv, Buffer.from(encryptionKey), msg);\n const ciphertext = data;\n const dataToMac = Buffer.concat([iv, ephemPublicKey, ciphertext]);\n const mac = await hmacSha256Sign(Buffer.from(macKey), dataToMac);\n return {\n iv,\n ephemPublicKey,\n ciphertext,\n mac\n };\n};\nconst decrypt = async function (privateKey, opts, _padding) {\n const padding = _padding !== null && _padding !== void 0 ? _padding : false;\n const deriveLocal = padding ? derivePadded : deriveUnpadded;\n const Px = await deriveLocal(privateKey, opts.ephemPublicKey);\n const hash = await sha512(Px);\n const encryptionKey = hash.slice(0, 32);\n const macKey = hash.slice(32);\n const dataToMac = Buffer.concat([opts.iv, opts.ephemPublicKey, opts.ciphertext]);\n const macGood = await hmacSha256Verify(Buffer.from(macKey), dataToMac, opts.mac);\n if (!macGood && padding === false) {\n return decrypt(privateKey, opts, true);\n } else if (!macGood && padding === true) {\n throw new Error(\"bad MAC after trying padded\");\n }\n const msg = await aesCbcDecrypt(opts.iv, Buffer.from(encryptionKey), opts.ciphertext);\n return Buffer.from(new Uint8Array(msg));\n};\n\nexport { decrypt, derive, derivePadded, deriveUnpadded, encrypt, generatePrivate, getPublic, getPublicCompressed, sign, verify };\n","import { ref, set } from \"firebase/database\";\nimport { database } from \"./config\";\n\nexport type ReferralStatus =\n | \"PENDING\"\n | \"APPROVED\"\n | \"REJECTED\"\n | \"TRANSFERRED\"\n | \"EXPIRED\";\n\ninterface ReferralMetadata {\n referralId: string;\n fromEmail: string; // 송신자 이메일\n toEmail: string; // 수신자 이메일\n doctorName: string;\n hospitalName: string;\n department: string;\n patientName: string;\n patientPhone: string;\n status: ReferralStatus;\n createdAt: string;\n updatedAt: string;\n}\n\nexport const saveReferralMetadata = async (metadata: ReferralMetadata) => {\n try {\n const referralRef = ref(database, `referrals/${metadata.referralId}`);\n await set(referralRef, {\n ...metadata,\n status: \"PENDING\" as ReferralStatus,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n });\n\n return { success: true };\n } catch (error) {\n console.error(\"Error saving referral metadata:\", error);\n return { success: false, error };\n }\n};\n","import { Actor, HttpAgent } from \"@dfinity/agent\";\nimport { idlFactory } from \"../../../declarations/mutual-link-backend/mutual-link-backend.did.js\";\nimport type { _SERVICE } from \"../../../declarations/mutual-link-backend/mutual-link-backend.did\";\n\ninterface ErrorWithDetails extends Error {\n stack?: string;\n name: string;\n}\n\nexport const createActor = async () => {\n try {\n console.log(\"=== Actor 생성 시작 ===\");\n console.log(\"현재 시간:\", new Date().toISOString());\n\n // 환경 변수 접근 시도 (여러 방법)\n console.log(\"=== 환경 변수 접근 시도 ===\");\n const envVars = {\n BASE_URL: import.meta.env.BASE_URL,\n MODE: import.meta.env.MODE,\n DEV: import.meta.env.DEV,\n PROD: import.meta.env.PROD,\n SSR: import.meta.env.SSR,\n DFX_NETWORK: import.meta.env.DFX_NETWORK,\n CANISTER_ID_MUTUAL_LINK_BACKEND: import.meta.env\n .CANISTER_ID_MUTUAL_LINK_BACKEND,\n };\n\n console.log(\"환경 변수:\", envVars);\n console.log(\"window.__DFX_NETWORK__:\", (window as any).__DFX_NETWORK__);\n console.log(\n \"window.__CANISTER_ID_MUTUAL_LINK_BACKEND__:\",\n (window as any).__CANISTER_ID_MUTUAL_LINK_BACKEND__\n );\n\n const currentHost = window.location.hostname;\n const currentProtocol = window.location.protocol;\n const currentPort = window.location.port;\n const currentPathname = window.location.pathname;\n const currentSearch = window.location.search;\n const currentHash = window.location.hash;\n\n // IC 메인넷 도메인 체크 (canister ID를 포함한 도메인)\n const isIcMainnet =\n /[a-z0-9-]+\\.icp0\\.io/.test(currentHost) ||\n /[a-z0-9-]+\\.ic0\\.app/.test(currentHost);\n\n // 네트워크 설정\n const network = isIcMainnet ? \"ic\" : envVars.DFX_NETWORK || \"local\";\n const isLocal = network === \"local\";\n\n console.log(\"=== 도메인 체크 정보 ===\");\n console.log(\n \"도메인 정규식 테스트 (icp0.io):\",\n /[a-z0-9-]+\\.icp0\\.io/.test(currentHost)\n );\n console.log(\n \"도메인 정규식 테스트 (ic0.app):\",\n /[a-z0-9-]+\\.ic0\\.app/.test(currentHost)\n );\n console.log(\"전체 도메인:\", currentHost);\n console.log(\"도메인 파트:\", currentHost.split(\".\"));\n\n console.log(\"=== 환경 정보 ===\");\n console.log(\"현재 네트워크:\", network);\n console.log(\"로컬 환경?:\", isLocal);\n console.log(\"IC 메인넷?:\", isIcMainnet);\n console.log(\"현재 호스트:\", currentHost);\n console.log(\"현재 프로토콜:\", currentProtocol);\n console.log(\"현재 포트:\", currentPort || \"(없음)\");\n console.log(\"현재 경로:\", currentPathname);\n console.log(\"현재 쿼리스트링:\", currentSearch);\n console.log(\"현재 해시:\", currentHash);\n console.log(\"전체 URL:\", window.location.href);\n\n // 프론트엔드 canister를 통해 접근하는지 확인\n const isFrontendCanister =\n isIcMainnet ||\n currentHost.includes(\".localhost\") ||\n currentHost.includes(\"127.0.0.1\");\n\n console.log(\"=== Canister 접근 정보 ===\");\n console.log(\"프론트엔드 canister 접근?:\", isFrontendCanister);\n console.log(\n \"Canister ID 쿼리 파라미터 존재?:\",\n currentSearch.includes(\"canisterId\")\n );\n console.log(\n \"URL에서 canister ID 추출:\",\n new URLSearchParams(currentSearch).get(\"canisterId\")\n );\n\n let host;\n if (isIcMainnet) {\n host = \"https://icp0.io\";\n console.log(\"IC 메인넷 호스트 설정:\", host);\n } else {\n host = \"http://127.0.0.1:4943\";\n console.log(\"로컬 개발 서버 호스트 설정:\", host);\n }\n\n console.log(\"=== Agent 설정 정보 ===\");\n console.log(\"설정된 호스트:\", host);\n console.log(\"현재 location:\", window.location.toString());\n console.log(\"Agent 설정 옵션:\", { host });\n\n console.log(\"Agent 생성 시작\");\n try {\n const agent = new HttpAgent({ host });\n console.log(\"Agent 생성 완료\");\n\n // 로컬 환경에서만 root key를 가져옴\n if (isLocal && !isIcMainnet) {\n console.log(\"=== Root Key 가져오기 ===\");\n console.log(\"로컬 환경 - root key 가져오기 시도\");\n try {\n await agent.fetchRootKey();\n console.log(\"root key 가져오기 성공\");\n } catch (error) {\n const err = error as ErrorWithDetails;\n console.error(\"root key 가져오기 실패:\", err);\n console.error(\"에러 상세 정보:\", {\n name: err.name,\n message: err.message,\n stack: err.stack,\n });\n throw err;\n }\n }\n\n const canisterId =\n import.meta.env.CANISTER_ID_MUTUAL_LINK_BACKEND ||\n (window as any).__CANISTER_ID_MUTUAL_LINK_BACKEND__;\n\n console.log(\"=== Canister 정보 ===\");\n console.log(\"최종 선택된 network:\", network);\n console.log(\"최종 선택된 Canister ID:\", canisterId);\n console.log(\"IDL Factory 존재 여부:\", !!idlFactory);\n\n console.log(\"Actor 생성 시작\");\n try {\n const actor = Actor.createActor<_SERVICE>(idlFactory, {\n agent,\n canisterId,\n });\n console.log(\"Actor 생성 성공\");\n\n // 백엔드 연결 테스트\n try {\n console.log(\"=== 백엔드 연결 테스트 ===\");\n console.log(\"백엔드 연결 테스트 시작\");\n // 테스트용 이메일로 의사 정보 조회\n const testResult = await actor.getDoctorByEmail(\"test@example.com\");\n console.log(\"백엔드 응답:\", testResult);\n console.log(\"백엔드 연결 테스트 성공\");\n } catch (error) {\n const err = error as ErrorWithDetails;\n console.error(\"백엔드 연결 테스트 실패:\", err);\n console.error(\"에러 상세 정보:\", {\n name: err.name,\n message: err.message,\n stack: err.stack,\n });\n throw err;\n }\n\n console.log(\"=== Actor 생성 완료 ===\");\n return actor;\n } catch (error) {\n const err = error as ErrorWithDetails;\n console.error(\"Actor 생성 실패:\", err);\n console.error(\"에러 상세 정보:\", {\n name: err.name,\n message: err.message,\n stack: err.stack,\n });\n throw err;\n }\n } catch (error) {\n const err = error as ErrorWithDetails;\n console.error(\"Agent 생성 실패:\", err);\n console.error(\"에러 상세 정보:\", {\n name: err.name,\n message: err.message,\n stack: err.stack,\n });\n throw err;\n }\n } catch (error) {\n const err = error as ErrorWithDetails;\n console.error(\"=== Actor 생성 중 에러 발생 ===\");\n console.error(\"에러 타입:\", err.constructor.name);\n console.error(\"에러 메시지:\", err.message);\n console.error(\"에러 스택:\", err.stack);\n console.error(\"전체 에러 객체:\", err);\n throw new Error(\"시스템에 연결할 수 없습니다. 잠시 후 다시 시도해주세요.\");\n }\n};\n","import {\n Table,\n Button,\n message,\n Modal,\n Form,\n Input,\n Upload,\n Input as AntInput,\n Card,\n Row,\n Col,\n Statistic,\n Select,\n} from \"antd\";\nimport { useState, useEffect } from \"react\";\nimport type { ColumnsType } from \"antd/es/table\";\nimport { Actor, HttpAgent } from \"@dfinity/agent\";\nimport { idlFactory } from \"../../../../declarations/mutual-link-backend/mutual-link-backend.did.js\";\nimport { UploadOutlined, CopyOutlined, SendOutlined } from \"@ant-design/icons\";\nimport CryptoJS from \"crypto-js\";\nimport { useAuth } from \"@/contexts/AuthContext\";\nimport * as eccrypto from \"@toruslabs/eccrypto\";\nimport { saveReferralMetadata } from \"../../firebase/referral\";\nimport { useNavigate } from \"react-router-dom\";\nimport { createActor } from \"../../utils/actor\";\n\nconst { Search } = AntInput;\n\ninterface BackendDoctor {\n id: bigint;\n name: string;\n email: string;\n phone: string;\n hospital: string;\n department: string;\n role: string;\n publicKey: string[];\n}\n\ninterface Doctor {\n id: number;\n name: string;\n email: string;\n phone: string;\n hospital: string;\n department: string;\n role: string;\n publicKey: string | null;\n}\n\n// 청크 크기를 500KB로 수정 (메모리 사용량 최적화)\nconst CHUNK_SIZE = 500 * 1024;\n\n// 파일을 청크 단위로 암호화하여 업로드하는 함수\nconst encryptAndUploadFile = async (\n file: File,\n aesKey: string,\n onProgress?: (progress: number) => void\n): Promise => {\n try {\n const totalChunks = Math.ceil(file.size / CHUNK_SIZE);\n let processedSize = 0;\n const encryptedChunks: Uint8Array[] = [];\n\n // 파일을 청크 단위로 읽고 암호화\n for (let i = 0; i < totalChunks; i++) {\n const start = i * CHUNK_SIZE;\n const end = Math.min(start + CHUNK_SIZE, file.size);\n const chunk = file.slice(start, end);\n const arrayBuffer = await chunk.arrayBuffer();\n\n // 청크 암호화\n const wordArray = CryptoJS.lib.WordArray.create(arrayBuffer);\n const encryptedWordArray = CryptoJS.AES.encrypt(wordArray, aesKey);\n\n // 암호화된 데이터를 Uint8Array로 변환\n const encryptedBase64 = encryptedWordArray.toString();\n const binaryString = atob(encryptedBase64);\n const encryptedBytes = new Uint8Array(binaryString.length);\n for (let j = 0; j < binaryString.length; j++) {\n encryptedBytes[j] = binaryString.charCodeAt(j);\n }\n\n encryptedChunks.push(encryptedBytes);\n processedSize += arrayBuffer.byteLength;\n\n // 진행률 업데이트 (80%까지는 암호화 작업)\n if (onProgress) {\n onProgress((processedSize / file.size) * 80);\n }\n\n // 메모리 해제를 위해 잠시 대기\n await new Promise((resolve) => setTimeout(resolve, 0));\n }\n\n if (onProgress) {\n onProgress(90); // 암호화 완료\n }\n\n // 모든 청크를 하나의 파일로 합치기\n const totalSize = encryptedChunks.reduce(\n (acc, chunk) => acc + chunk.length,\n 0\n );\n const combinedArray = new Uint8Array(totalSize + totalChunks * 4); // 각 청크의 크기 정보를 저장하기 위해 4바이트씩 추가\n\n let offset = 0;\n for (const chunk of encryptedChunks) {\n // 청크 크기 저장 (4바이트)\n const chunkSize = chunk.length;\n combinedArray[offset++] = (chunkSize >> 24) & 0xff;\n combinedArray[offset++] = (chunkSize >> 16) & 0xff;\n combinedArray[offset++] = (chunkSize >> 8) & 0xff;\n combinedArray[offset++] = chunkSize & 0xff;\n\n // 청크 데이터 저장\n combinedArray.set(chunk, offset);\n offset += chunk.length;\n }\n\n // IPFS에 업로드\n const blob = new Blob([combinedArray], {\n type: \"application/octet-stream\",\n });\n const encryptedFile = new File([blob], \"encrypted_file.bin\", {\n type: \"application/octet-stream\",\n });\n\n const formData = new FormData();\n formData.append(\"file\", encryptedFile);\n\n const response = await fetch(\"https://ipfs.infura.io:5001/api/v0/add\", {\n method: \"POST\",\n body: formData,\n headers: {\n Authorization:\n \"Basic \" +\n btoa(\n \"52f7d11b90ec45f1ac9912d0fb864695:248a2ce514834460a25058bf8068e740\"\n ),\n },\n });\n\n if (onProgress) {\n onProgress(100); // 업로드 완료\n }\n\n const data = await response.json();\n return data?.Hash ?? null;\n } catch (error) {\n throw error;\n }\n};\n\n// 공개키를 PEM 형식으로 변환하는 함수\nconst convertToPEM = (publicKey: string): string => {\n const pemHeader = \"-----BEGIN PUBLIC KEY-----\\n\";\n const pemFooter = \"\\n-----END PUBLIC KEY-----\";\n const keyBuffer = Buffer.from(publicKey.replace(\"0x\", \"\"), \"hex\");\n const base64Key = keyBuffer.toString(\"base64\");\n return `${pemHeader}${base64Key}${pemFooter}`;\n};\n\n// 안전한 랜덤 키 생성 함수\nconst generateRandomKey = async (): Promise => {\n const array = new Uint8Array(32);\n crypto.getRandomValues(array);\n return Array.from(array)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n};\n\n// ZIP 파일 검증 함수\nconst validateZipFile = async (file: File): Promise => {\n // ZIP 파일 시그니처 검사\n const fileHeader = await file.slice(0, 4).arrayBuffer();\n const header = new Uint8Array(fileHeader);\n\n // ZIP 파일 시그니처: 50 4B 03 04\n const isValidZip =\n header[0] === 0x50 &&\n header[1] === 0x4b &&\n header[2] === 0x03 &&\n header[3] === 0x04;\n\n return isValidZip;\n};\n\n// 파일을 청크로 나누기 전에 압축 해제 테스트\nconst testZipExtraction = async (file: File): Promise => {\n try {\n // ZIP 파일 검증\n const isValid = await validateZipFile(file);\n if (!isValid) {\n message.error(\"올바른 ZIP 파일 형식이 아닙니다.\");\n return false;\n }\n return true;\n } catch (error) {\n throw error;\n }\n};\n\nconst DoctorList = () => {\n const { userInfo } = useAuth();\n const [doctors, setDoctors] = useState([]);\n const [loading, setLoading] = useState(false);\n const [backendActor, setBackendActor] = useState(null);\n const [pagination, setPagination] = useState({\n current: 1,\n pageSize: 10,\n total: 0,\n });\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [selectedDoctor, setSelectedDoctor] = useState(null);\n const [form] = Form.useForm();\n const [searchType, setSearchType] = useState(\"name\");\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [tempSearchQuery, setTempSearchQuery] = useState(\"\");\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [isCancellable, setIsCancellable] = useState(true);\n\n useEffect(() => {\n const initActor = async () => {\n try {\n const actor = await createActor();\n setBackendActor(actor);\n return actor;\n } catch (error) {\n throw error;\n }\n };\n\n initActor();\n }, []);\n\n useEffect(() => {\n const fetchDoctors = async () => {\n if (!backendActor) return;\n\n setLoading(true);\n try {\n const offset = (pagination.current - 1) * pagination.pageSize;\n let result: { items: BackendDoctor[]; total: bigint };\n\n if (searchQuery && searchQuery.length >= 2) {\n result = (await backendActor.searchDoctors(\n searchType,\n searchQuery,\n offset,\n pagination.pageSize\n )) as { items: BackendDoctor[]; total: bigint };\n } else {\n result = (await backendActor.getPagedDoctors(\n offset,\n pagination.pageSize\n )) as { items: BackendDoctor[]; total: bigint };\n }\n\n const formattedDoctors = result.items.map((doctor: BackendDoctor) => ({\n id: Number(doctor.id.toString()),\n name: doctor.name,\n email: doctor.email,\n phone: doctor.phone,\n hospital: doctor.hospital,\n department: doctor.department,\n role: doctor.role,\n publicKey:\n Array.isArray(doctor.publicKey) && doctor.publicKey.length > 0\n ? doctor.publicKey[0]\n : null,\n }));\n\n setDoctors(formattedDoctors);\n setPagination((prev) => ({\n ...prev,\n total: Number(result.total.toString()),\n }));\n } catch (error) {\n message.error(\"의사 목록을 불러오는데 실패했습니다.\");\n } finally {\n setLoading(false);\n }\n };\n\n // 검색어가 없고 첫 페이지인 경우 API 호출 방지\n if (!searchQuery && pagination.current === 1) {\n fetchDoctors();\n } else {\n const debounceTimer = setTimeout(() => {\n fetchDoctors();\n }, 300); // 300ms 디바운스 적용\n\n return () => clearTimeout(debounceTimer);\n }\n }, [pagination.current, pagination.pageSize, searchQuery, backendActor]);\n\n // 검색어 입력 시 자동 검색 (디바운스 적용)\n useEffect(() => {\n const timer = setTimeout(() => {\n if (tempSearchQuery !== searchQuery) {\n handleSearch(tempSearchQuery);\n }\n }, 500);\n\n return () => clearTimeout(timer);\n }, [tempSearchQuery]);\n\n const handleUploadClick = () => {\n setIsModalOpen(true);\n };\n\n const handleDoctorUpload = (doctor: Doctor) => {\n setSelectedDoctor(doctor);\n setIsModalOpen(true);\n };\n\n const handleModalCancel = () => {\n if (!isCancellable) return;\n setIsModalOpen(false);\n form.resetFields();\n setIsCancellable(true);\n setIsSubmitting(false);\n };\n\n const handleModalSubmit = async (values: any) => {\n if (isSubmitting) return;\n\n setIsSubmitting(true);\n setIsCancellable(true); // 초기에는 취소 가능\n\n try {\n if (!backendActor) {\n message.error(\"백엔드가 초기화되지 않았습니다.\");\n return;\n }\n\n if (!userInfo?.publicKey || !selectedDoctor?.publicKey) {\n message.error(\"송신자 또는 수신자의 공개키가 없습니다.\");\n return;\n }\n\n // 1. AES key 생성 (32바이트 = 256비트)\n const aesKey = await generateRandomKey();\n\n // 2. 파일 처리\n const uploadedFile = values.files?.fileList[0]?.originFileObj;\n if (!uploadedFile) {\n message.error(\"파일을 선택해주세요.\");\n return;\n }\n\n // ZIP 파일 검증\n const isValidZip = await testZipExtraction(uploadedFile);\n if (!isValidZip) {\n return;\n }\n\n // 파일 암호화 및 업로드가 시작되면 취소 불가능\n setIsCancellable(false);\n\n // 파일 암호화 및 업로드 진행률 표시를 위한 메시지\n const key = \"uploadProgress\";\n message.loading({ content: \"파일 처리 중...\", key });\n\n // 파일 암호화 및 업로드\n const cid = await encryptAndUploadFile(\n uploadedFile,\n aesKey,\n (progress) => {\n message.loading({\n content: `파일 처리 중... ${Math.round(progress)}%`,\n key,\n });\n }\n );\n\n if (!cid) {\n message.error({ content: \"파일 업로드 실패\", key });\n return;\n }\n\n message.success({ content: \"파일 업로드 완료\", key });\n\n // 공개키 유효성 검사 추가\n if (!selectedDoctor.publicKey) {\n message.error(\"수신자의 공개키가 없습니다.\");\n return;\n }\n\n // 3. 송신자의 공개키로 AES 키 암호화\n if (!userInfo.publicKey) {\n message.error(\"송신자의 공개키가 없습니다.\");\n return;\n }\n\n // 공개키 로그 추가\n console.log(\"송신자 공개키:\", userInfo.publicKey);\n console.log(\"수신자 공개키:\", selectedDoctor.publicKey);\n\n const encryptedAesKeyForSender = await encryptAesKey(\n aesKey,\n userInfo.publicKey\n );\n\n const encryptedAesKeyForReceiver = await encryptAesKey(\n aesKey,\n selectedDoctor.publicKey\n );\n\n // 5. ApprovalManager에 데이터 저장\n console.log(\"createMedicalRecord 호출 전 파라미터:\", {\n patientName: values.patientName,\n phone: values.phone,\n title: values.title,\n description: values.description,\n senderEmail: userInfo?.email || \"\",\n receiverEmail: selectedDoctor?.email || \"\",\n cid,\n encryptedAesKeyForSender,\n encryptedAesKeyForReceiver,\n });\n\n const result = await backendActor.createMedicalRecord(\n values.patientName,\n values.phone,\n values.title,\n values.description || \"\",\n userInfo?.email || \"\",\n selectedDoctor?.email || \"\",\n cid,\n encryptedAesKeyForSender,\n encryptedAesKeyForReceiver\n );\n\n console.log(\"createMedicalRecord 결과:\", result);\n\n if (\"ok\" in result) {\n // Firebase에 메타데이터 저장\n try {\n const referralId = result.ok.id\n ? result.ok.id.toString()\n : result.ok.toString();\n\n await saveReferralMetadata({\n referralId,\n fromEmail: userInfo?.email || \"\", // 송신자 이메일\n toEmail: selectedDoctor.email, // 수신자 이메일\n doctorName: selectedDoctor.name,\n hospitalName: selectedDoctor.hospital,\n department: selectedDoctor.department,\n patientName: values.patientName,\n patientPhone: values.phone,\n status: \"PENDING\",\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n });\n\n // SMS 전송 로직 추가\n const smsMessage = `${userInfo?.name}님이 전송한 [${values.patientName}]의료정보 도착\\nhttps://mutual-link-d70e6.web.app/?referralId=${referralId}`;\n\n // 전화번호에서 하이픈 제거\n const phoneNumber = values.phone.replace(/-/g, \"\");\n console.log(\"SMS 전송 시도:\", { phoneNumber, message: smsMessage });\n\n const response = await fetch(\n \"https://8oxqti6xl1.execute-api.ap-northeast-2.amazonaws.com/default/sms\",\n {\n method: \"POST\",\n mode: \"no-cors\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n message: smsMessage,\n phoneNumber: phoneNumber,\n }),\n }\n );\n console.log(\"SMS 전송 응답:\", response);\n\n message.success(\"진료 기록이 성공적으로 생성되었습니다.\");\n setIsModalOpen(false);\n form.resetFields();\n } catch (error) {\n throw error;\n }\n } else if (\"err\" in result) {\n message.error(result.err);\n }\n } catch (error) {\n message.error(\"진료 기록 전송에 실패했습니다.\");\n setLoading(false);\n } finally {\n setIsSubmitting(false);\n setIsCancellable(true);\n }\n };\n\n const encryptAesKey = async (aesKey: string, publicKey: string) => {\n try {\n if (!publicKey) {\n throw new Error(\"Public key is required\");\n }\n\n // 공개키에서 0x prefix 제거\n const cleanPublicKey = publicKey.replace(\"0x\", \"\");\n\n const aesKeyBuffer = Buffer.from(aesKey, \"hex\");\n const publicKeyBuffer = Buffer.from(cleanPublicKey, \"hex\");\n\n const encryptedData = (await eccrypto.encrypt(\n publicKeyBuffer,\n aesKeyBuffer\n )) as {\n iv: Buffer;\n ephemPublicKey: Buffer;\n ciphertext: Buffer;\n mac: Buffer;\n };\n\n return JSON.stringify({\n iv: encryptedData.iv.toString(\"hex\"),\n ephemPublicKey: encryptedData.ephemPublicKey.toString(\"hex\"),\n ciphertext: encryptedData.ciphertext.toString(\"hex\"),\n mac: encryptedData.mac.toString(\"hex\"),\n });\n } catch (error) {\n throw error;\n }\n };\n\n const formatPhoneNumber = (phone: string) => {\n const cleaned = phone.replace(/\\D/g, \"\");\n if (cleaned.length === 11) {\n return `${cleaned.slice(0, 3)}-${cleaned.slice(3, 7)}-${cleaned.slice(\n 7\n )}`;\n }\n if (cleaned.length === 10) {\n return `${cleaned.slice(0, 3)}-${cleaned.slice(3, 6)}-${cleaned.slice(\n 6\n )}`;\n }\n return phone;\n };\n\n const columns: ColumnsType = [\n { title: \"No\", dataIndex: \"id\", key: \"id\" },\n { title: \"담당의사\", dataIndex: \"name\", key: \"name\" },\n { title: \"이메일\", dataIndex: \"email\", key: \"email\" },\n {\n title: \"휴대폰\",\n dataIndex: \"phone\",\n key: \"phone\",\n render: (phone: string) => formatPhoneNumber(phone),\n },\n { title: \"병원\", dataIndex: \"hospital\", key: \"hospital\" },\n { title: \"부서\", dataIndex: \"department\", key: \"department\" },\n {\n title: \"작업\",\n key: \"action\",\n render: (_, record) => {\n // 현재 로그인한 사용자와 동일한 의사인 경우\n if (record.name === userInfo?.name) {\n return 본인;\n }\n // public key가 없는 경우\n if (!record.publicKey || record.publicKey === \"undefined\") {\n return 최초 로그인 대기;\n }\n return (\n }\n onClick={() => handleDoctorUpload(record)}\n >\n 진료의뢰\n \n );\n },\n },\n ];\n\n const handleSearch = (value: string) => {\n const trimmedValue = value.trim().replace(/\\s+/g, \" \");\n\n setSearchQuery(trimmedValue);\n setPagination((prev) => ({ ...prev, current: 1 }));\n\n if (trimmedValue === \"\") {\n return;\n }\n\n if (trimmedValue.length < 2) {\n message.warning(\"검색어는 최소 2자 이상 입력해주세요.\");\n return;\n }\n\n // 검색 조건별 유효성 검사\n if (searchType === \"phone\") {\n const cleaned = trimmedValue.replace(/[^\\d-]/g, \"\");\n if (cleaned !== trimmedValue) {\n message.warning(\"전화번호는 숫자와 하이픈만 입력 가능합니다.\");\n return;\n }\n const numbersOnly = cleaned.replace(/-/g, \"\");\n if (numbersOnly.length > 11) {\n message.warning(\"전화번호는 최대 11자리까지 입력 가능합니다.\");\n return;\n }\n setSearchQuery(numbersOnly);\n } else if (searchType === \"email\") {\n // 이메일 검색은 부분 검색 허용\n setSearchQuery(trimmedValue.toLowerCase());\n } else {\n setSearchQuery(trimmedValue);\n }\n };\n\n const handleSearchInputChange = (e: React.ChangeEvent) => {\n const value = e.target.value;\n\n if (searchType === \"phone\") {\n // 전화번호 입력 시 숫자와 하이픈만 허용\n const cleaned = value.replace(/[^\\d-]/g, \"\");\n if (cleaned !== value) {\n return;\n }\n // 숫자만 추출하여 길이 체크\n const numbersOnly = cleaned.replace(/-/g, \"\");\n if (numbersOnly.length > 11) {\n return;\n }\n // 자동 하이픈 추가\n let formatted = cleaned;\n if (numbersOnly.length > 3) {\n formatted = numbersOnly.slice(0, 3) + \"-\" + numbersOnly.slice(3);\n }\n if (numbersOnly.length > 7) {\n formatted = formatted.slice(0, 8) + \"-\" + formatted.slice(8);\n }\n setTempSearchQuery(formatted);\n } else if (searchType === \"email\") {\n // 이메일 입력 시 공백만 제거\n setTempSearchQuery(value.replace(/\\s/g, \"\").toLowerCase());\n } else {\n setTempSearchQuery(value);\n }\n };\n\n const handleSearchTypeChange = (value: string) => {\n setSearchType(value as \"name\" | \"hospital\" | \"department\");\n setTempSearchQuery(\"\");\n setSearchQuery(\"\");\n setPagination((prev) => ({ ...prev, current: 1 }));\n };\n\n return (\n
\n
\n \n handleSearch(tempSearchQuery)}\n />\n
\n {doctors.length === 0 && searchQuery ? (\n \n
\n 검색 결과가 없습니다\n
\n
\n 다른 검색어로 다시 시도해보세요\n
\n
\n ) : (\n ({\n ...column,\n align: column.key === \"action\" ? \"center\" : \"left\",\n ellipsis: true,\n }))}\n dataSource={doctors}\n rowKey=\"id\"\n loading={loading}\n pagination={{\n ...pagination,\n showSizeChanger: true,\n showTotal: (total, range) =>\n `전체 ${total}개 중 ${range[0]}-${range[1]}`,\n onChange: (page, pageSize) => {\n setPagination((prev) => ({\n ...prev,\n current: page,\n pageSize: pageSize,\n }));\n },\n }}\n scroll={{ x: \"max-content\" }}\n />\n )}\n \n \n 취소\n \n \n {isSubmitting ? \"등록 중...\" : \"등록\"}\n \n \n }\n width={520}\n style={{ top: 20 }}\n styles={{\n body: {\n padding: \"24px\",\n maxHeight: \"calc(100vh - 200px)\",\n overflow: \"auto\",\n background: \"white\",\n borderRadius: \"8px\",\n },\n }}\n maskClosable={isCancellable}\n closable={isCancellable}\n >\n \n \n \n \n\n \n \n \n\n \n {\n const value = e.target.value.replace(/[^0-9]/g, \"\");\n if (value.length <= 11) {\n let formattedValue = value;\n if (value.length > 3) {\n formattedValue = value.slice(0, 3) + \"-\" + value.slice(3);\n }\n if (value.length > 7) {\n formattedValue =\n formattedValue.slice(0, 8) +\n \"-\" +\n formattedValue.slice(8);\n }\n form.setFieldsValue({ phone: formattedValue });\n }\n }}\n placeholder=\"010-0000-0000\"\n />\n \n\n \n \n \n\n {\n if (\n !fileList ||\n !fileList.fileList ||\n fileList.fileList.length === 0\n ) {\n return Promise.reject(new Error(\"파일을 선택해주세요\"));\n }\n const file = fileList.fileList[0].originFileObj;\n if (!file)\n return Promise.reject(new Error(\"파일을 찾을 수 없습니다\"));\n\n if (file.size > 100 * 1024 * 1024) {\n return Promise.reject(\n new Error(\"파일 크기는 100MB를 초과할 수 없습니다\")\n );\n }\n\n const isZip =\n file.type === \"application/zip\" ||\n file.type === \"application/x-zip-compressed\" ||\n file.name.endsWith(\".zip\");\n if (!isZip) {\n return Promise.reject(\n new Error(\"ZIP 파일만 업로드 가능합니다\")\n );\n }\n\n return Promise.resolve();\n },\n },\n ]}\n style={{ marginBottom: 0 }}\n >\n {\n const isZip =\n file.type === \"application/zip\" ||\n file.type === \"application/x-zip-compressed\" ||\n file.name.endsWith(\".zip\");\n if (!isZip) {\n message.error(\"ZIP 파일만 업로드 가능합니다.\");\n return false;\n }\n\n const isValidZip = await validateZipFile(file);\n if (!isValidZip) {\n message.error(\"올바른 ZIP 파일 형식이 아닙니다.\");\n return false;\n }\n\n return false;\n }}\n accept=\".zip\"\n style={{\n padding: \"16px 0\",\n background: \"white\",\n border: \"1px dashed var(--border-color)\",\n borderRadius: \"8px\",\n }}\n >\n

\n \n

\n \n Click to Upload\n

\n \n 압축(zip) 파일만 업로드 가능합니다.\n
\n 압축파일 안에는 [dicom, jpg, png, gif, bmp, webp, pdf] 파일만\n 포함 가능합니다.\n
\n 최대 파일 크기: 100MB\n

\n \n \n \n \n \n );\n};\n\nexport default DoctorList;\n","/**\n * @licstart The following is the entire license notice for the\n * JavaScript code in this page\n *\n * Copyright 2023 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * JavaScript code in this page\n */\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = root.pdfjsLib = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf\", [], () => { return (root.pdfjsLib = factory()); });\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf\"] = root.pdfjsLib = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf\"] = root.pdfjsLib = factory();\n})(globalThis, () => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ([\n/* 0 */,\n/* 1 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.VerbosityLevel = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.RenderingIntentFlag = exports.PromiseCapability = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = exports.MissingPDFException = exports.MAX_IMAGE_SIZE_TO_CACHE = exports.LINE_FACTOR = exports.LINE_DESCENT_FACTOR = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FeatureTest = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.CMapCompressionType = exports.BaseException = exports.BASELINE_FACTOR = exports.AnnotationType = exports.AnnotationReplyType = exports.AnnotationPrefix = exports.AnnotationMode = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationEditorType = exports.AnnotationEditorPrefix = exports.AnnotationEditorParamsType = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0;\nexports.assert = assert;\nexports.bytesToString = bytesToString;\nexports.createValidAbsoluteUrl = createValidAbsoluteUrl;\nexports.getModificationDate = getModificationDate;\nexports.getUuid = getUuid;\nexports.getVerbosityLevel = getVerbosityLevel;\nexports.info = info;\nexports.isArrayBuffer = isArrayBuffer;\nexports.isArrayEqual = isArrayEqual;\nexports.isNodeJS = void 0;\nexports.normalizeUnicode = normalizeUnicode;\nexports.objectFromMap = objectFromMap;\nexports.objectSize = objectSize;\nexports.setVerbosityLevel = setVerbosityLevel;\nexports.shadow = shadow;\nexports.string32 = string32;\nexports.stringToBytes = stringToBytes;\nexports.stringToPDFString = stringToPDFString;\nexports.stringToUTF8String = stringToUTF8String;\nexports.unreachable = unreachable;\nexports.utf8StringToString = utf8StringToString;\nexports.warn = warn;\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nexports.isNodeJS = isNodeJS;\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nexports.IDENTITY_MATRIX = IDENTITY_MATRIX;\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nexports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX;\nconst MAX_IMAGE_SIZE_TO_CACHE = 10e6;\nexports.MAX_IMAGE_SIZE_TO_CACHE = MAX_IMAGE_SIZE_TO_CACHE;\nconst LINE_FACTOR = 1.35;\nexports.LINE_FACTOR = LINE_FACTOR;\nconst LINE_DESCENT_FACTOR = 0.35;\nexports.LINE_DESCENT_FACTOR = LINE_DESCENT_FACTOR;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\nexports.BASELINE_FACTOR = BASELINE_FACTOR;\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n SAVE: 0x08,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n OPLIST: 0x100\n};\nexports.RenderingIntentFlag = RenderingIntentFlag;\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3\n};\nexports.AnnotationMode = AnnotationMode;\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\nexports.AnnotationEditorPrefix = AnnotationEditorPrefix;\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n STAMP: 13,\n INK: 15\n};\nexports.AnnotationEditorType = AnnotationEditorType;\nconst AnnotationEditorParamsType = {\n RESIZE: 1,\n CREATE: 2,\n FREETEXT_SIZE: 11,\n FREETEXT_COLOR: 12,\n FREETEXT_OPACITY: 13,\n INK_COLOR: 21,\n INK_THICKNESS: 22,\n INK_OPACITY: 23\n};\nexports.AnnotationEditorParamsType = AnnotationEditorParamsType;\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800\n};\nexports.PermissionFlag = PermissionFlag;\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4\n};\nexports.TextRenderingMode = TextRenderingMode;\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\n};\nexports.ImageKind = ImageKind;\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26\n};\nexports.AnnotationType = AnnotationType;\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\"\n};\nexports.AnnotationReplyType = AnnotationReplyType;\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200\n};\nexports.AnnotationFlag = AnnotationFlag;\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000\n};\nexports.AnnotationFieldFlag = AnnotationFieldFlag;\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n};\nexports.AnnotationBorderStyleType = AnnotationBorderStyleType;\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\"\n};\nexports.AnnotationActionEventType = AnnotationActionEventType;\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\"\n};\nexports.DocumentActionEventType = DocumentActionEventType;\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\"\n};\nexports.PageActionEventType = PageActionEventType;\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n};\nexports.VerbosityLevel = VerbosityLevel;\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1\n};\nexports.CMapCompressionType = CMapCompressionType;\nconst OPS = {\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91\n};\nexports.OPS = OPS;\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nexports.PasswordResponses = PasswordResponses;\nlet verbosity = VerbosityLevel.WARNINGS;\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\nfunction getVerbosityLevel() {\n return verbosity;\n}\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\nfunction unreachable(msg) {\n throw new Error(msg);\n}\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\nfunction _isValidProtocol(url) {\n switch (url?.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n if (dots?.length >= 2) {\n url = `http://${url}`;\n }\n }\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch {}\n }\n }\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch {}\n return null;\n}\nfunction shadow(obj, prop, value, nonSerializable = false) {\n Object.defineProperty(obj, prop, {\n value,\n enumerable: !nonSerializable,\n configurable: true,\n writable: false\n });\n return value;\n}\nconst BaseException = function BaseExceptionClosure() {\n function BaseException(message, name) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n return BaseException;\n}();\nexports.BaseException = BaseException;\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\nexports.PasswordException = PasswordException;\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\nexports.UnknownErrorException = UnknownErrorException;\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\nexports.InvalidPDFException = InvalidPDFException;\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\nexports.MissingPDFException = MissingPDFException;\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\nexports.UnexpectedResponseException = UnexpectedResponseException;\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\nexports.FormatError = FormatError;\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\nexports.AbortException = AbortException;\nfunction bytesToString(bytes) {\n if (typeof bytes !== \"object\" || bytes?.length === undefined) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\nfunction string32(value) {\n return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\nfunction isEvalSupported() {\n try {\n new Function(\"\");\n return true;\n } catch {\n return false;\n }\n}\nclass FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n static get isOffscreenCanvasSupported() {\n return shadow(this, \"isOffscreenCanvasSupported\", typeof OffscreenCanvas !== \"undefined\");\n }\n static get platform() {\n if (typeof navigator === \"undefined\") {\n return shadow(this, \"platform\", {\n isWin: false,\n isMac: false\n });\n }\n return shadow(this, \"platform\", {\n isWin: navigator.platform.includes(\"Win\"),\n isMac: navigator.platform.includes(\"Mac\")\n });\n }\n static get isCSSRoundSupported() {\n return shadow(this, \"isCSSRoundSupported\", globalThis.CSS?.supports?.(\"width: round(1.5px, 1px)\"));\n }\n}\nexports.FeatureTest = FeatureTest;\nconst hexNumbers = [...Array(256).keys()].map(n => n.toString(16).padStart(2, \"0\"));\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n static scaleMinMax(transform, minMax) {\n let temp;\n if (transform[0]) {\n if (transform[0] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n minMax[0] *= transform[0];\n minMax[1] *= transform[0];\n if (transform[3] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n minMax[2] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n if (transform[1] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n minMax[2] *= transform[1];\n minMax[3] *= transform[1];\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n minMax[0] *= transform[2];\n minMax[1] *= transform[2];\n }\n minMax[0] += transform[4];\n minMax[1] += transform[4];\n minMax[2] += transform[5];\n minMax[3] += transform[5];\n }\n static transform(m1, m2) {\n return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n }\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = this.applyTransform(r, m);\n const p2 = this.applyTransform(r.slice(2, 4), m);\n const p3 = this.applyTransform([r[0], r[3]], m);\n const p4 = this.applyTransform([r[2], r[1]], m);\n return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];\n }\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n }\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n static normalizeRect(rect) {\n const r = rect.slice(0);\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n static intersect(rect1, rect2) {\n const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2]));\n const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2]));\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3]));\n const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3]));\n if (yLow > yHigh) {\n return null;\n }\n return [xLow, yLow, xHigh, yHigh];\n }\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n const tvalues = [],\n bounds = [[], []];\n let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n for (let i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n let j = tvalues.length,\n mt;\n const jlen = j;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] = mt * mt * mt * x0 + 3 * mt * mt * t * x1 + 3 * mt * t * t * x2 + t * t * t * x3;\n bounds[1][j] = mt * mt * mt * y0 + 3 * mt * mt * t * y1 + 3 * mt * t * t * y2 + t * t * t * y3;\n }\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n return [Math.min(...bounds[0]), Math.min(...bounds[1]), Math.max(...bounds[0]), Math.max(...bounds[1])];\n }\n}\nexports.Util = Util;\nconst PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac];\nfunction stringToPDFString(str) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(str);\n return decoder.decode(buffer);\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\nfunction isArrayBuffer(v) {\n return typeof v === \"object\" && v?.byteLength !== undefined;\n}\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\nfunction getModificationDate(date = new Date()) {\n const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, \"0\"), date.getUTCDate().toString().padStart(2, \"0\"), date.getUTCHours().toString().padStart(2, \"0\"), date.getUTCMinutes().toString().padStart(2, \"0\"), date.getUTCSeconds().toString().padStart(2, \"0\")];\n return buffer.join(\"\");\n}\nclass PromiseCapability {\n #settled = false;\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = data => {\n this.#settled = true;\n resolve(data);\n };\n this.reject = reason => {\n this.#settled = true;\n reject(reason);\n };\n });\n }\n get settled() {\n return this.#settled;\n }\n}\nexports.PromiseCapability = PromiseCapability;\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n if (!NormalizeRegex) {\n NormalizeRegex = /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc-\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa-\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n NormalizationMap = new Map([[\"ſt\", \"ſt\"]]);\n }\n return str.replaceAll(NormalizeRegex, (_, p1, p2) => {\n return p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2);\n });\n}\nfunction getUuid() {\n if (typeof crypto !== \"undefined\" && typeof crypto?.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const buf = new Uint8Array(32);\n if (typeof crypto !== \"undefined\" && typeof crypto?.getRandomValues === \"function\") {\n crypto.getRandomValues(buf);\n } else {\n for (let i = 0; i < 32; i++) {\n buf[i] = Math.floor(Math.random() * 255);\n }\n }\n return bytesToString(buf);\n}\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\nexports.AnnotationPrefix = AnnotationPrefix;\n\n/***/ }),\n/* 2 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.RenderTask = exports.PDFWorkerUtil = exports.PDFWorker = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFDocumentLoadingTask = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.DefaultStandardFontDataFactory = exports.DefaultFilterFactory = exports.DefaultCanvasFactory = exports.DefaultCMapReaderFactory = void 0;\nObject.defineProperty(exports, \"SVGGraphics\", ({\n enumerable: true,\n get: function () {\n return _displaySvg.SVGGraphics;\n }\n}));\nexports.build = void 0;\nexports.getDocument = getDocument;\nexports.version = void 0;\nvar _util = __w_pdfjs_require__(1);\nvar _annotation_storage = __w_pdfjs_require__(3);\nvar _display_utils = __w_pdfjs_require__(6);\nvar _font_loader = __w_pdfjs_require__(9);\nvar _displayNode_utils = __w_pdfjs_require__(10);\nvar _canvas = __w_pdfjs_require__(11);\nvar _worker_options = __w_pdfjs_require__(14);\nvar _message_handler = __w_pdfjs_require__(15);\nvar _metadata = __w_pdfjs_require__(16);\nvar _optional_content_config = __w_pdfjs_require__(17);\nvar _transport_stream = __w_pdfjs_require__(18);\nvar _displayFetch_stream = __w_pdfjs_require__(19);\nvar _displayNetwork = __w_pdfjs_require__(22);\nvar _displayNode_stream = __w_pdfjs_require__(23);\nvar _displaySvg = __w_pdfjs_require__(24);\nvar _xfa_text = __w_pdfjs_require__(25);\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536;\nconst RENDERING_CANCELLED_TIMEOUT = 100;\nconst DELAYED_CLEANUP_TIMEOUT = 5000;\nconst DefaultCanvasFactory = _util.isNodeJS ? _displayNode_utils.NodeCanvasFactory : _display_utils.DOMCanvasFactory;\nexports.DefaultCanvasFactory = DefaultCanvasFactory;\nconst DefaultCMapReaderFactory = _util.isNodeJS ? _displayNode_utils.NodeCMapReaderFactory : _display_utils.DOMCMapReaderFactory;\nexports.DefaultCMapReaderFactory = DefaultCMapReaderFactory;\nconst DefaultFilterFactory = _util.isNodeJS ? _displayNode_utils.NodeFilterFactory : _display_utils.DOMFilterFactory;\nexports.DefaultFilterFactory = DefaultFilterFactory;\nconst DefaultStandardFontDataFactory = _util.isNodeJS ? _displayNode_utils.NodeStandardFontDataFactory : _display_utils.DOMStandardFontDataFactory;\nexports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory;\nfunction getDocument(src) {\n if (typeof src === \"string\" || src instanceof URL) {\n src = {\n url: src\n };\n } else if ((0, _util.isArrayBuffer)(src)) {\n src = {\n data: src\n };\n }\n if (typeof src !== \"object\") {\n throw new Error(\"Invalid parameter in getDocument, need parameter object.\");\n }\n if (!src.url && !src.data && !src.range) {\n throw new Error(\"Invalid parameter object: need either .data, .range or .url\");\n }\n const task = new PDFDocumentLoadingTask();\n const {\n docId\n } = task;\n const url = src.url ? getUrlProp(src.url) : null;\n const data = src.data ? getDataProp(src.data) : null;\n const httpHeaders = src.httpHeaders || null;\n const withCredentials = src.withCredentials === true;\n const password = src.password ?? null;\n const rangeTransport = src.range instanceof PDFDataRangeTransport ? src.range : null;\n const rangeChunkSize = Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0 ? src.rangeChunkSize : DEFAULT_RANGE_CHUNK_SIZE;\n let worker = src.worker instanceof PDFWorker ? src.worker : null;\n const verbosity = src.verbosity;\n const docBaseUrl = typeof src.docBaseUrl === \"string\" && !(0, _display_utils.isDataScheme)(src.docBaseUrl) ? src.docBaseUrl : null;\n const cMapUrl = typeof src.cMapUrl === \"string\" ? src.cMapUrl : null;\n const cMapPacked = src.cMapPacked !== false;\n const CMapReaderFactory = src.CMapReaderFactory || DefaultCMapReaderFactory;\n const standardFontDataUrl = typeof src.standardFontDataUrl === \"string\" ? src.standardFontDataUrl : null;\n const StandardFontDataFactory = src.StandardFontDataFactory || DefaultStandardFontDataFactory;\n const ignoreErrors = src.stopAtErrors !== true;\n const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1;\n const isEvalSupported = src.isEvalSupported !== false;\n const isOffscreenCanvasSupported = typeof src.isOffscreenCanvasSupported === \"boolean\" ? src.isOffscreenCanvasSupported : !_util.isNodeJS;\n const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes) ? src.canvasMaxAreaInBytes : -1;\n const disableFontFace = typeof src.disableFontFace === \"boolean\" ? src.disableFontFace : _util.isNodeJS;\n const fontExtraProperties = src.fontExtraProperties === true;\n const enableXfa = src.enableXfa === true;\n const ownerDocument = src.ownerDocument || globalThis.document;\n const disableRange = src.disableRange === true;\n const disableStream = src.disableStream === true;\n const disableAutoFetch = src.disableAutoFetch === true;\n const pdfBug = src.pdfBug === true;\n const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n const useSystemFonts = typeof src.useSystemFonts === \"boolean\" ? src.useSystemFonts : !_util.isNodeJS && !disableFontFace;\n const useWorkerFetch = typeof src.useWorkerFetch === \"boolean\" ? src.useWorkerFetch : CMapReaderFactory === _display_utils.DOMCMapReaderFactory && StandardFontDataFactory === _display_utils.DOMStandardFontDataFactory && cMapUrl && standardFontDataUrl && (0, _display_utils.isValidFetchUrl)(cMapUrl, document.baseURI) && (0, _display_utils.isValidFetchUrl)(standardFontDataUrl, document.baseURI);\n const canvasFactory = src.canvasFactory || new DefaultCanvasFactory({\n ownerDocument\n });\n const filterFactory = src.filterFactory || new DefaultFilterFactory({\n docId,\n ownerDocument\n });\n const styleElement = null;\n (0, _util.setVerbosityLevel)(verbosity);\n const transportFactory = {\n canvasFactory,\n filterFactory\n };\n if (!useWorkerFetch) {\n transportFactory.cMapReaderFactory = new CMapReaderFactory({\n baseUrl: cMapUrl,\n isCompressed: cMapPacked\n });\n transportFactory.standardFontDataFactory = new StandardFontDataFactory({\n baseUrl: standardFontDataUrl\n });\n }\n if (!worker) {\n const workerParams = {\n verbosity,\n port: _worker_options.GlobalWorkerOptions.workerPort\n };\n worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams);\n task._worker = worker;\n }\n const fetchDocParams = {\n docId,\n apiVersion: '3.11.174',\n data,\n password,\n disableAutoFetch,\n rangeChunkSize,\n length,\n docBaseUrl,\n enableXfa,\n evaluatorOptions: {\n maxImageSize,\n disableFontFace,\n ignoreErrors,\n isEvalSupported,\n isOffscreenCanvasSupported,\n canvasMaxAreaInBytes,\n fontExtraProperties,\n useSystemFonts,\n cMapUrl: useWorkerFetch ? cMapUrl : null,\n standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null\n }\n };\n const transportParams = {\n ignoreErrors,\n isEvalSupported,\n disableFontFace,\n fontExtraProperties,\n enableXfa,\n ownerDocument,\n disableAutoFetch,\n pdfBug,\n styleElement\n };\n worker.promise.then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n const workerIdPromise = _fetchDocument(worker, fetchDocParams);\n const networkStreamPromise = new Promise(function (resolve) {\n let networkStream;\n if (rangeTransport) {\n networkStream = new _transport_stream.PDFDataTransportStream({\n length,\n initialData: rangeTransport.initialData,\n progressiveDone: rangeTransport.progressiveDone,\n contentDispositionFilename: rangeTransport.contentDispositionFilename,\n disableRange,\n disableStream\n }, rangeTransport);\n } else if (!data) {\n const createPDFNetworkStream = params => {\n if (_util.isNodeJS) {\n return new _displayNode_stream.PDFNodeStream(params);\n }\n return (0, _display_utils.isValidFetchUrl)(params.url) ? new _displayFetch_stream.PDFFetchStream(params) : new _displayNetwork.PDFNetworkStream(params);\n };\n networkStream = createPDFNetworkStream({\n url,\n length,\n httpHeaders,\n withCredentials,\n rangeChunkSize,\n disableRange,\n disableStream\n });\n }\n resolve(networkStream);\n });\n return Promise.all([workerIdPromise, networkStreamPromise]).then(function ([workerId, networkStream]) {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n const messageHandler = new _message_handler.MessageHandler(docId, workerId, worker.port);\n const transport = new WorkerTransport(messageHandler, task, networkStream, transportParams, transportFactory);\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n });\n }).catch(task._capability.reject);\n return task;\n}\nasync function _fetchDocument(worker, source) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const workerId = await worker.messageHandler.sendWithPromise(\"GetDocRequest\", source, source.data ? [source.data.buffer] : null);\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n return workerId;\n}\nfunction getUrlProp(val) {\n if (val instanceof URL) {\n return val.href;\n }\n try {\n return new URL(val, window.location).href;\n } catch {\n if (_util.isNodeJS && typeof val === \"string\") {\n return val;\n }\n }\n throw new Error(\"Invalid PDF url data: \" + \"either string or URL-object is expected in the url property.\");\n}\nfunction getDataProp(val) {\n if (_util.isNodeJS && typeof Buffer !== \"undefined\" && val instanceof Buffer) {\n throw new Error(\"Please provide binary data as `Uint8Array`, rather than `Buffer`.\");\n }\n if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n return val;\n }\n if (typeof val === \"string\") {\n return (0, _util.stringToBytes)(val);\n }\n if (typeof val === \"object\" && !isNaN(val?.length) || (0, _util.isArrayBuffer)(val)) {\n return new Uint8Array(val);\n }\n throw new Error(\"Invalid PDF binary data: either TypedArray, \" + \"string, or array-like object is expected in the data property.\");\n}\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n constructor() {\n this._capability = new _util.PromiseCapability();\n this._transport = null;\n this._worker = null;\n this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n this.destroyed = false;\n this.onPassword = null;\n this.onProgress = null;\n }\n get promise() {\n return this._capability.promise;\n }\n async destroy() {\n this.destroyed = true;\n try {\n if (this._worker?.port) {\n this._worker._pendingDestroy = true;\n }\n await this._transport?.destroy();\n } catch (ex) {\n if (this._worker?.port) {\n delete this._worker._pendingDestroy;\n }\n throw ex;\n }\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n }\n}\nexports.PDFDocumentLoadingTask = PDFDocumentLoadingTask;\nclass PDFDataRangeTransport {\n constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = new _util.PromiseCapability();\n }\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n onDataProgress(loaded, total) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n transportReady() {\n this._readyCapability.resolve();\n }\n requestDataRange(begin, end) {\n (0, _util.unreachable)(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n abort() {}\n}\nexports.PDFDataRangeTransport = PDFDataRangeTransport;\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n Object.defineProperty(this, \"getJavaScript\", {\n value: () => {\n (0, _display_utils.deprecated)(\"`PDFDocumentProxy.getJavaScript`, \" + \"please use `PDFDocumentProxy.getJSActions` instead.\");\n return this.getJSActions().then(js => {\n if (!js) {\n return js;\n }\n const jsArr = [];\n for (const name in js) {\n jsArr.push(...js[name]);\n }\n return jsArr;\n });\n }\n });\n }\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get numPages() {\n return this._pdfInfo.numPages;\n }\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n get isPureXfa() {\n return (0, _util.shadow)(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n getDestinations() {\n return this._transport.getDestinations();\n }\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n getPageMode() {\n return this._transport.getPageMode();\n }\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n getAttachments() {\n return this._transport.getAttachments();\n }\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n getOutline() {\n return this._transport.getOutline();\n }\n getOptionalContentConfig() {\n return this._transport.getOptionalContentConfig();\n }\n getPermissions() {\n return this._transport.getPermissions();\n }\n getMetadata() {\n return this._transport.getMetadata();\n }\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n getData() {\n return this._transport.getData();\n }\n saveDocument() {\n return this._transport.saveDocument();\n }\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n destroy() {\n return this.loadingTask.destroy();\n }\n get loadingParams() {\n return this._transport.loadingParams;\n }\n get loadingTask() {\n return this._transport.loadingTask;\n }\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\nexports.PDFDocumentProxy = PDFDocumentProxy;\nclass PDFPageProxy {\n #delayedCleanupTimeout = null;\n #pendingCleanup = false;\n constructor(pageIndex, pageInfo, transport, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._transport = transport;\n this._stats = pdfBug ? new _display_utils.StatTimer() : null;\n this._pdfBug = pdfBug;\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n this._maybeCleanupAfterRender = false;\n this._intentStates = new Map();\n this.destroyed = false;\n }\n get pageNumber() {\n return this._pageIndex + 1;\n }\n get rotate() {\n return this._pageInfo.rotate;\n }\n get ref() {\n return this._pageInfo.ref;\n }\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n get view() {\n return this._pageInfo.view;\n }\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n } = {}) {\n return new _display_utils.PageViewport({\n viewBox: this.view,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n getAnnotations({\n intent = \"display\"\n } = {}) {\n const intentArgs = this._transport.getRenderingIntent(intent);\n return this._transport.getAnnotations(this._pageIndex, intentArgs.renderingIntent);\n }\n getJSActions() {\n return this._transport.getPageJSActions(this._pageIndex);\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get isPureXfa() {\n return (0, _util.shadow)(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n annotationMode = _util.AnnotationMode.ENABLE,\n transform = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n printAnnotationStorage = null\n }) {\n this._stats?.time(\"Overall\");\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage);\n this.#pendingCleanup = false;\n this.#abortDelayedCleanup();\n if (!optionalContentConfigPromise) {\n optionalContentConfigPromise = this._transport.getOptionalContentConfig();\n }\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n const intentPrint = !!(intentArgs.renderingIntent & _util.RenderingIntentFlag.PRINT);\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = new _util.PromiseCapability();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n if (this._maybeCleanupAfterRender || intentPrint) {\n this.#pendingCleanup = true;\n }\n this.#tryCleanup(!intentPrint);\n if (error) {\n internalRenderTask.capability.reject(error);\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error)\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n this._stats?.timeEnd(\"Rendering\");\n this._stats?.timeEnd(\"Overall\");\n };\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n params: {\n canvasContext,\n viewport,\n transform,\n background\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: this._transport.canvasFactory,\n filterFactory: this._transport.filterFactory,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n pageColors\n });\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {\n if (this.destroyed) {\n complete();\n return;\n }\n this._stats?.time(\"Rendering\");\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig\n });\n internalRenderTask.operatorListChanged();\n }).catch(complete);\n return renderTask;\n }\n getOperatorList({\n intent = \"display\",\n annotationMode = _util.AnnotationMode.ENABLE,\n printAnnotationStorage = null\n } = {}) {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n intentState.renderTasks.delete(opListTask);\n }\n }\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, true);\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n let opListTask;\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = new _util.PromiseCapability();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n streamTextContent({\n includeMarkedContent = false,\n disableNormalization = false\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n return this._transport.messageHandler.sendWithStream(\"GetTextContent\", {\n pageIndex: this._pageIndex,\n includeMarkedContent: includeMarkedContent === true,\n disableNormalization: disableNormalization === true\n }, {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n }\n });\n }\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n return this.getXfa().then(xfa => {\n return _xfa_text.XfaText.textContent(xfa);\n });\n }\n const readableStream = this.streamTextContent(params);\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n resolve(textContent);\n return;\n }\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null)\n };\n pump();\n });\n }\n getStructTree() {\n return this._transport.getStructTree(this._pageIndex);\n }\n _destroy() {\n this.destroyed = true;\n const waitOn = [];\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true\n });\n if (intentState.opListReadCapability) {\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n this.#pendingCleanup = false;\n this.#abortDelayedCleanup();\n return Promise.all(waitOn);\n }\n cleanup(resetStats = false) {\n this.#pendingCleanup = true;\n const success = this.#tryCleanup(false);\n if (resetStats && success) {\n this._stats &&= new _display_utils.StatTimer();\n }\n return success;\n }\n #tryCleanup(delayed = false) {\n this.#abortDelayedCleanup();\n if (!this.#pendingCleanup || this.destroyed) {\n return false;\n }\n if (delayed) {\n this.#delayedCleanupTimeout = setTimeout(() => {\n this.#delayedCleanupTimeout = null;\n this.#tryCleanup(false);\n }, DELAYED_CLEANUP_TIMEOUT);\n return false;\n }\n for (const {\n renderTasks,\n operatorList\n } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n this._intentStates.clear();\n this.objs.clear();\n this.#pendingCleanup = false;\n return true;\n }\n #abortDelayedCleanup() {\n if (this.#delayedCleanupTimeout) {\n clearTimeout(this.#delayedCleanupTimeout);\n this.#delayedCleanupTimeout = null;\n }\n }\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return;\n }\n this._stats?.timeEnd(\"Page Request\");\n intentState.displayReadyCapability?.resolve(transparency);\n }\n _renderPageChunk(operatorListChunk, intentState) {\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n if (operatorListChunk.lastChunk) {\n this.#tryCleanup(true);\n }\n }\n _pumpOperatorList({\n renderingIntent,\n cacheKey,\n annotationStorageSerializable\n }) {\n const {\n map,\n transfers\n } = annotationStorageSerializable;\n const readableStream = this._transport.messageHandler.sendWithStream(\"GetOperatorList\", {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage: map\n }, transfers);\n const reader = readableStream.getReader();\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n const pump = () => {\n reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return;\n }\n this._renderPageChunk(value, intentState);\n pump();\n }, reason => {\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n if (intentState.operatorList) {\n intentState.operatorList.lastChunk = true;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this.#tryCleanup(true);\n }\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n });\n };\n pump();\n }\n _abortOperatorList({\n intentState,\n reason,\n force = false\n }) {\n if (!intentState.streamReader) {\n return;\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n if (!force) {\n if (intentState.renderTasks.size > 0) {\n return;\n }\n if (reason instanceof _display_utils.RenderingCancelledException) {\n let delay = RENDERING_CANCELLED_TIMEOUT;\n if (reason.extraDelay > 0 && reason.extraDelay < 1000) {\n delay += reason.extraDelay;\n }\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n intentState.streamReaderCancelTimeout = null;\n this._abortOperatorList({\n intentState,\n reason,\n force: true\n });\n }, delay);\n return;\n }\n }\n intentState.streamReader.cancel(new _util.AbortException(reason.message)).catch(() => {});\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n this.cleanup();\n }\n get stats() {\n return this._stats;\n }\n}\nexports.PDFPageProxy = PDFPageProxy;\nclass LoopbackPort {\n #listeners = new Set();\n #deferred = Promise.resolve();\n postMessage(obj, transfer) {\n const event = {\n data: structuredClone(obj, transfer ? {\n transfer\n } : null)\n };\n this.#deferred.then(() => {\n for (const listener of this.#listeners) {\n listener.call(this, event);\n }\n });\n }\n addEventListener(name, listener) {\n this.#listeners.add(listener);\n }\n removeEventListener(name, listener) {\n this.#listeners.delete(listener);\n }\n terminate() {\n this.#listeners.clear();\n }\n}\nexports.LoopbackPort = LoopbackPort;\nconst PDFWorkerUtil = {\n isWorkerDisabled: false,\n fallbackWorkerSrc: null,\n fakeWorkerId: 0\n};\nexports.PDFWorkerUtil = PDFWorkerUtil;\n{\n if (_util.isNodeJS && typeof require === \"function\") {\n PDFWorkerUtil.isWorkerDisabled = true;\n PDFWorkerUtil.fallbackWorkerSrc = \"./pdf.worker.js\";\n } else if (typeof document === \"object\") {\n const pdfjsFilePath = document?.currentScript?.src;\n if (pdfjsFilePath) {\n PDFWorkerUtil.fallbackWorkerSrc = pdfjsFilePath.replace(/(\\.(?:min\\.)?js)(\\?.*)?$/i, \".worker$1$2\");\n }\n }\n PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false;\n }\n } catch {\n return false;\n }\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n PDFWorkerUtil.createCDNWrapper = function (url) {\n const wrapper = `importScripts(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper]));\n };\n}\nclass PDFWorker {\n static #workerPorts;\n constructor({\n name = null,\n port = null,\n verbosity = (0, _util.getVerbosityLevel)()\n } = {}) {\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n this._readyCapability = new _util.PromiseCapability();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n if (port) {\n if (PDFWorker.#workerPorts?.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n (PDFWorker.#workerPorts ||= new WeakMap()).set(port, this);\n this._initializeFromPort(port);\n return;\n }\n this._initialize();\n }\n get promise() {\n return this._readyCapability.promise;\n }\n get port() {\n return this._port;\n }\n get messageHandler() {\n return this._messageHandler;\n }\n _initializeFromPort(port) {\n this._port = port;\n this._messageHandler = new _message_handler.MessageHandler(\"main\", \"worker\", port);\n this._messageHandler.on(\"ready\", function () {});\n this._readyCapability.resolve();\n this._messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n }\n _initialize() {\n if (!PDFWorkerUtil.isWorkerDisabled && !PDFWorker._mainThreadWorkerMessageHandler) {\n let {\n workerSrc\n } = PDFWorker;\n try {\n if (!PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)) {\n workerSrc = PDFWorkerUtil.createCDNWrapper(new URL(workerSrc, window.location).href);\n }\n const worker = new Worker(workerSrc);\n const messageHandler = new _message_handler.MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n worker.removeEventListener(\"error\", onWorkerError);\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n this._setupFakeWorker();\n }\n };\n const onWorkerError = () => {\n if (!this._webWorker) {\n terminateEarly();\n }\n };\n worker.addEventListener(\"error\", onWorkerError);\n messageHandler.on(\"test\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return;\n }\n if (data) {\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n this._readyCapability.resolve();\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n } else {\n this._setupFakeWorker();\n messageHandler.destroy();\n worker.terminate();\n }\n });\n messageHandler.on(\"ready\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return;\n }\n try {\n sendTest();\n } catch {\n this._setupFakeWorker();\n }\n });\n const sendTest = () => {\n const testObj = new Uint8Array();\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n sendTest();\n return;\n } catch {\n (0, _util.info)(\"The worker has been disabled.\");\n }\n }\n this._setupFakeWorker();\n }\n _setupFakeWorker() {\n if (!PDFWorkerUtil.isWorkerDisabled) {\n (0, _util.warn)(\"Setting up fake worker.\");\n PDFWorkerUtil.isWorkerDisabled = true;\n }\n PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this._port = port;\n const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;\n const workerHandler = new _message_handler.MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n const messageHandler = new _message_handler.MessageHandler(id, id + \"_worker\", port);\n this._messageHandler = messageHandler;\n this._readyCapability.resolve();\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n }).catch(reason => {\n this._readyCapability.reject(new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n });\n }\n destroy() {\n this.destroyed = true;\n if (this._webWorker) {\n this._webWorker.terminate();\n this._webWorker = null;\n }\n PDFWorker.#workerPorts?.delete(this._port);\n this._port = null;\n if (this._messageHandler) {\n this._messageHandler.destroy();\n this._messageHandler = null;\n }\n }\n static fromPort(params) {\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n const cachedPort = this.#workerPorts?.get(params.port);\n if (cachedPort) {\n if (cachedPort._pendingDestroy) {\n throw new Error(\"PDFWorker.fromPort - the worker is being destroyed.\\n\" + \"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\");\n }\n return cachedPort;\n }\n return new PDFWorker(params);\n }\n static get workerSrc() {\n if (_worker_options.GlobalWorkerOptions.workerSrc) {\n return _worker_options.GlobalWorkerOptions.workerSrc;\n }\n if (PDFWorkerUtil.fallbackWorkerSrc !== null) {\n if (!_util.isNodeJS) {\n (0, _display_utils.deprecated)('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n return PDFWorkerUtil.fallbackWorkerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n static get _mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch {\n return null;\n }\n }\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler;\n if (mainWorkerMessageHandler) {\n return mainWorkerMessageHandler;\n }\n if (_util.isNodeJS && typeof require === \"function\") {\n const worker = eval(\"require\")(this.workerSrc);\n return worker.WorkerMessageHandler;\n }\n await (0, _display_utils.loadScript)(this.workerSrc);\n return window.pdfjsWorker.WorkerMessageHandler;\n };\n return (0, _util.shadow)(this, \"_setupFakeWorkerGlobal\", loader());\n }\n}\nexports.PDFWorker = PDFWorker;\nclass WorkerTransport {\n #methodPromises = new Map();\n #pageCache = new Map();\n #pagePromises = new Map();\n #passwordCapability = null;\n constructor(messageHandler, loadingTask, networkStream, params, factory) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new _font_loader.FontLoader({\n ownerDocument: params.ownerDocument,\n styleElement: params.styleElement\n });\n this._params = params;\n this.canvasFactory = factory.canvasFactory;\n this.filterFactory = factory.filterFactory;\n this.cMapReaderFactory = factory.cMapReaderFactory;\n this.standardFontDataFactory = factory.standardFontDataFactory;\n this.destroyed = false;\n this.destroyCapability = null;\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.downloadInfoCapability = new _util.PromiseCapability();\n this.setupMessageHandler();\n }\n #cacheSimpleMethod(name, data = null) {\n const cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, data);\n this.#methodPromises.set(name, promise);\n return promise;\n }\n get annotationStorage() {\n return (0, _util.shadow)(this, \"annotationStorage\", new _annotation_storage.AnnotationStorage());\n }\n getRenderingIntent(intent, annotationMode = _util.AnnotationMode.ENABLE, printAnnotationStorage = null, isOpList = false) {\n let renderingIntent = _util.RenderingIntentFlag.DISPLAY;\n let annotationStorageSerializable = _annotation_storage.SerializableEmpty;\n switch (intent) {\n case \"any\":\n renderingIntent = _util.RenderingIntentFlag.ANY;\n break;\n case \"display\":\n break;\n case \"print\":\n renderingIntent = _util.RenderingIntentFlag.PRINT;\n break;\n default:\n (0, _util.warn)(`getRenderingIntent - invalid intent: ${intent}`);\n }\n switch (annotationMode) {\n case _util.AnnotationMode.DISABLE:\n renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_DISABLE;\n break;\n case _util.AnnotationMode.ENABLE:\n break;\n case _util.AnnotationMode.ENABLE_FORMS:\n renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_FORMS;\n break;\n case _util.AnnotationMode.ENABLE_STORAGE:\n renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_STORAGE;\n const annotationStorage = renderingIntent & _util.RenderingIntentFlag.PRINT && printAnnotationStorage instanceof _annotation_storage.PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage;\n annotationStorageSerializable = annotationStorage.serializable;\n break;\n default:\n (0, _util.warn)(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n }\n if (isOpList) {\n renderingIntent += _util.RenderingIntentFlag.OPLIST;\n }\n return {\n renderingIntent,\n cacheKey: `${renderingIntent}_${annotationStorageSerializable.hash}`,\n annotationStorageSerializable\n };\n }\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n this.destroyed = true;\n this.destroyCapability = new _util.PromiseCapability();\n this.#passwordCapability?.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n const waitOn = [];\n for (const page of this.#pageCache.values()) {\n waitOn.push(page._destroy());\n }\n this.#pageCache.clear();\n this.#pagePromises.clear();\n if (this.hasOwnProperty(\"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n Promise.all(waitOn).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n this.#methodPromises.clear();\n this.filterFactory.destroy();\n this._networkStream?.cancelAllRequests(new _util.AbortException(\"Worker was terminated.\"));\n if (this.messageHandler) {\n this.messageHandler.destroy();\n this.messageHandler = null;\n }\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n setupMessageHandler() {\n const {\n messageHandler,\n loadingTask\n } = this;\n messageHandler.on(\"GetReader\", (data, sink) => {\n (0, _util.assert)(this._networkStream, \"GetReader - no `IPDFStream` instance available.\");\n this._fullReader = this._networkStream.getFullReader();\n this._fullReader.onProgress = evt => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total\n };\n };\n sink.onPull = () => {\n this._fullReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n (0, _util.assert)(value instanceof ArrayBuffer, \"GetReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n this._fullReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"ReaderHeadersReady\", data => {\n const headersCapability = new _util.PromiseCapability();\n const fullReader = this._fullReader;\n fullReader.headersReady.then(() => {\n if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {\n if (this._lastProgress) {\n loadingTask.onProgress?.(this._lastProgress);\n }\n fullReader.onProgress = evt => {\n loadingTask.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n };\n }\n headersCapability.resolve({\n isStreamingSupported: fullReader.isStreamingSupported,\n isRangeSupported: fullReader.isRangeSupported,\n contentLength: fullReader.contentLength\n });\n }, headersCapability.reject);\n return headersCapability.promise;\n });\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n (0, _util.assert)(this._networkStream, \"GetRangeReader - no `IPDFStream` instance available.\");\n const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);\n if (!rangeReader) {\n sink.close();\n return;\n }\n sink.onPull = () => {\n rangeReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n (0, _util.assert)(value instanceof ArrayBuffer, \"GetRangeReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"GetDoc\", ({\n pdfInfo\n }) => {\n this._numPages = pdfInfo.numPages;\n this._htmlForXfa = pdfInfo.htmlForXfa;\n delete pdfInfo.htmlForXfa;\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n messageHandler.on(\"DocException\", function (ex) {\n let reason;\n switch (ex.name) {\n case \"PasswordException\":\n reason = new _util.PasswordException(ex.message, ex.code);\n break;\n case \"InvalidPDFException\":\n reason = new _util.InvalidPDFException(ex.message);\n break;\n case \"MissingPDFException\":\n reason = new _util.MissingPDFException(ex.message);\n break;\n case \"UnexpectedResponseException\":\n reason = new _util.UnexpectedResponseException(ex.message, ex.status);\n break;\n case \"UnknownErrorException\":\n reason = new _util.UnknownErrorException(ex.message, ex.details);\n break;\n default:\n (0, _util.unreachable)(\"DocException - expected a valid Error.\");\n }\n loadingTask._capability.reject(reason);\n });\n messageHandler.on(\"PasswordRequest\", exception => {\n this.#passwordCapability = new _util.PromiseCapability();\n if (loadingTask.onPassword) {\n const updatePassword = password => {\n if (password instanceof Error) {\n this.#passwordCapability.reject(password);\n } else {\n this.#passwordCapability.resolve({\n password\n });\n }\n };\n try {\n loadingTask.onPassword(updatePassword, exception.code);\n } catch (ex) {\n this.#passwordCapability.reject(ex);\n }\n } else {\n this.#passwordCapability.reject(new _util.PasswordException(exception.message, exception.code));\n }\n return this.#passwordCapability.promise;\n });\n messageHandler.on(\"DataLoaded\", data => {\n loadingTask.onProgress?.({\n loaded: data.length,\n total: data.length\n });\n this.downloadInfoCapability.resolve(data);\n });\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return;\n }\n const page = this.#pageCache.get(data.pageIndex);\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n if (this.destroyed) {\n return;\n }\n if (this.commonObjs.has(id)) {\n return;\n }\n switch (type) {\n case \"Font\":\n const params = this._params;\n if (\"error\" in exportedData) {\n const exportedError = exportedData.error;\n (0, _util.warn)(`Error during font loading: ${exportedError}`);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n const inspectFont = params.pdfBug && globalThis.FontInspector?.enabled ? (font, url) => globalThis.FontInspector.fontAdded(font, url) : null;\n const font = new _font_loader.FontFaceObject(exportedData, {\n isEvalSupported: params.isEvalSupported,\n disableFontFace: params.disableFontFace,\n ignoreErrors: params.ignoreErrors,\n inspectFont\n });\n this.fontLoader.bind(font).catch(reason => {\n return messageHandler.sendWithPromise(\"FontFallback\", {\n id\n });\n }).finally(() => {\n if (!params.fontExtraProperties && font.data) {\n font.data = null;\n }\n this.commonObjs.resolve(id, font);\n });\n break;\n case \"FontPath\":\n case \"Image\":\n case \"Pattern\":\n this.commonObjs.resolve(id, exportedData);\n break;\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n });\n messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n if (this.destroyed) {\n return;\n }\n const pageProxy = this.#pageCache.get(pageIndex);\n if (pageProxy.objs.has(id)) {\n return;\n }\n switch (type) {\n case \"Image\":\n pageProxy.objs.resolve(id, imageData);\n if (imageData) {\n let length;\n if (imageData.bitmap) {\n const {\n width,\n height\n } = imageData;\n length = width * height * 4;\n } else {\n length = imageData.data?.length || 0;\n }\n if (length > _util.MAX_IMAGE_SIZE_TO_CACHE) {\n pageProxy._maybeCleanupAfterRender = true;\n }\n }\n break;\n case \"Pattern\":\n pageProxy.objs.resolve(id, imageData);\n break;\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n });\n messageHandler.on(\"DocProgress\", data => {\n if (this.destroyed) {\n return;\n }\n loadingTask.onProgress?.({\n loaded: data.loaded,\n total: data.total\n });\n });\n messageHandler.on(\"FetchBuiltInCMap\", data => {\n if (this.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n if (!this.cMapReaderFactory) {\n return Promise.reject(new Error(\"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\"));\n }\n return this.cMapReaderFactory.fetch(data);\n });\n messageHandler.on(\"FetchStandardFontData\", data => {\n if (this.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n if (!this.standardFontDataFactory) {\n return Promise.reject(new Error(\"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\"));\n }\n return this.standardFontDataFactory.fetch(data);\n });\n }\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n saveDocument() {\n if (this.annotationStorage.size <= 0) {\n (0, _util.warn)(\"saveDocument called while `annotationStorage` is empty, \" + \"please use the getData-method instead.\");\n }\n const {\n map,\n transfers\n } = this.annotationStorage.serializable;\n return this.messageHandler.sendWithPromise(\"SaveDocument\", {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: map,\n filename: this._fullReader?.filename ?? null\n }, transfers).finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n getPage(pageNumber) {\n if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {\n return Promise.reject(new Error(\"Invalid page request.\"));\n }\n const pageIndex = pageNumber - 1,\n cachedPromise = this.#pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(\"GetPage\", {\n pageIndex\n }).then(pageInfo => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.pdfBug);\n this.#pageCache.set(pageIndex, page);\n return page;\n });\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n getPageIndex(ref) {\n if (typeof ref !== \"object\" || ref === null || !Number.isInteger(ref.num) || ref.num < 0 || !Number.isInteger(ref.gen) || ref.gen < 0) {\n return Promise.reject(new Error(\"Invalid pageIndex request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n num: ref.num,\n gen: ref.gen\n });\n }\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex,\n intent\n });\n }\n getFieldObjects() {\n return this.#cacheSimpleMethod(\"GetFieldObjects\");\n }\n hasJSActions() {\n return this.#cacheSimpleMethod(\"HasJSActions\");\n }\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n getDestination(id) {\n if (typeof id !== \"string\") {\n return Promise.reject(new Error(\"Invalid destination request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetDestination\", {\n id\n });\n }\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n getDocJSActions() {\n return this.#cacheSimpleMethod(\"GetDocJSActions\");\n }\n getPageJSActions(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex\n });\n }\n getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex\n });\n }\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n getOptionalContentConfig() {\n return this.messageHandler.sendWithPromise(\"GetOptionalContentConfig\", null).then(results => {\n return new _optional_content_config.OptionalContentConfig(results);\n });\n }\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n getMetadata() {\n const name = \"GetMetadata\",\n cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, null).then(results => {\n return {\n info: results[0],\n metadata: results[1] ? new _metadata.Metadata(results[1]) : null,\n contentDispositionFilename: this._fullReader?.filename ?? null,\n contentLength: this._fullReader?.contentLength ?? null\n };\n });\n this.#methodPromises.set(name, promise);\n return promise;\n }\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n async startCleanup(keepLoadedFonts = false) {\n if (this.destroyed) {\n return;\n }\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n for (const page of this.#pageCache.values()) {\n const cleanupSuccessful = page.cleanup();\n if (!cleanupSuccessful) {\n throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`);\n }\n }\n this.commonObjs.clear();\n if (!keepLoadedFonts) {\n this.fontLoader.clear();\n }\n this.#methodPromises.clear();\n this.filterFactory.destroy(true);\n }\n get loadingParams() {\n const {\n disableAutoFetch,\n enableXfa\n } = this._params;\n return (0, _util.shadow)(this, \"loadingParams\", {\n disableAutoFetch,\n enableXfa\n });\n }\n}\nclass PDFObjects {\n #objs = Object.create(null);\n #ensureObj(objId) {\n return this.#objs[objId] ||= {\n capability: new _util.PromiseCapability(),\n data: null\n };\n }\n get(objId, callback = null) {\n if (callback) {\n const obj = this.#ensureObj(objId);\n obj.capability.promise.then(() => callback(obj.data));\n return null;\n }\n const obj = this.#objs[objId];\n if (!obj?.capability.settled) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n return obj.data;\n }\n has(objId) {\n const obj = this.#objs[objId];\n return obj?.capability.settled || false;\n }\n resolve(objId, data = null) {\n const obj = this.#ensureObj(objId);\n obj.data = data;\n obj.capability.resolve();\n }\n clear() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n data?.bitmap?.close();\n }\n this.#objs = Object.create(null);\n }\n}\nclass RenderTask {\n #internalRenderTask = null;\n constructor(internalRenderTask) {\n this.#internalRenderTask = internalRenderTask;\n this.onContinue = null;\n }\n get promise() {\n return this.#internalRenderTask.capability.promise;\n }\n cancel(extraDelay = 0) {\n this.#internalRenderTask.cancel(null, extraDelay);\n }\n get separateAnnots() {\n const {\n separateAnnots\n } = this.#internalRenderTask.operatorList;\n if (!separateAnnots) {\n return false;\n }\n const {\n annotationCanvasMap\n } = this.#internalRenderTask;\n return separateAnnots.form || separateAnnots.canvas && annotationCanvasMap?.size > 0;\n }\n}\nexports.RenderTask = RenderTask;\nclass InternalRenderTask {\n static #canvasInUse = new WeakSet();\n constructor({\n callback,\n params,\n objs,\n commonObjs,\n annotationCanvasMap,\n operatorList,\n pageIndex,\n canvasFactory,\n filterFactory,\n useRequestAnimationFrame = false,\n pdfBug = false,\n pageColors = null\n }) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.annotationCanvasMap = annotationCanvasMap;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this._pdfBug = pdfBug;\n this.pageColors = pageColors;\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = new _util.PromiseCapability();\n this.task = new RenderTask(this);\n this._cancelBound = this.cancel.bind(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvasContext.canvas;\n }\n get completed() {\n return this.capability.promise.catch(function () {});\n }\n initializeGraphics({\n transparency = false,\n optionalContentConfig\n }) {\n if (this.cancelled) {\n return;\n }\n if (this._canvas) {\n if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n throw new Error(\"Cannot use the same canvas during multiple render() operations. \" + \"Use different canvas or ensure previous operations were \" + \"cancelled or completed.\");\n }\n InternalRenderTask.#canvasInUse.add(this._canvas);\n }\n if (this._pdfBug && globalThis.StepperManager?.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n const {\n canvasContext,\n viewport,\n transform,\n background\n } = this.params;\n this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig\n }, this.annotationCanvasMap, this.pageColors);\n this.gfx.beginDrawing({\n transform,\n viewport,\n transparency,\n background\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n this.graphicsReadyCallback?.();\n }\n cancel(error = null, extraDelay = 0) {\n this.running = false;\n this.cancelled = true;\n this.gfx?.endDrawing();\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n this.callback(error || new _display_utils.RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, extraDelay));\n }\n operatorListChanged() {\n if (!this.graphicsReady) {\n this.graphicsReadyCallback ||= this._continueBound;\n return;\n }\n this.stepper?.updateOperatorList(this.operatorList);\n if (this.running) {\n return;\n }\n this._continue();\n }\n _continue() {\n this.running = true;\n if (this.cancelled) {\n return;\n }\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n }\n _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n window.requestAnimationFrame(() => {\n this._nextBound().catch(this._cancelBound);\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n }\n async _next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n this.callback();\n }\n }\n }\n}\nconst version = '3.11.174';\nexports.version = version;\nconst build = 'ce8716743';\nexports.build = build;\n\n/***/ }),\n/* 3 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.SerializableEmpty = exports.PrintAnnotationStorage = exports.AnnotationStorage = void 0;\nvar _util = __w_pdfjs_require__(1);\nvar _editor = __w_pdfjs_require__(4);\nvar _murmurhash = __w_pdfjs_require__(8);\nconst SerializableEmpty = Object.freeze({\n map: null,\n hash: \"\",\n transfers: undefined\n});\nexports.SerializableEmpty = SerializableEmpty;\nclass AnnotationStorage {\n #modified = false;\n #storage = new Map();\n constructor() {\n this.onSetModified = null;\n this.onResetModified = null;\n this.onAnnotationEditor = null;\n }\n getValue(key, defaultValue) {\n const value = this.#storage.get(key);\n if (value === undefined) {\n return defaultValue;\n }\n return Object.assign(defaultValue, value);\n }\n getRawValue(key) {\n return this.#storage.get(key);\n }\n remove(key) {\n this.#storage.delete(key);\n if (this.#storage.size === 0) {\n this.resetModified();\n }\n if (typeof this.onAnnotationEditor === \"function\") {\n for (const value of this.#storage.values()) {\n if (value instanceof _editor.AnnotationEditor) {\n return;\n }\n }\n this.onAnnotationEditor(null);\n }\n }\n setValue(key, value) {\n const obj = this.#storage.get(key);\n let modified = false;\n if (obj !== undefined) {\n for (const [entry, val] of Object.entries(value)) {\n if (obj[entry] !== val) {\n modified = true;\n obj[entry] = val;\n }\n }\n } else {\n modified = true;\n this.#storage.set(key, value);\n }\n if (modified) {\n this.#setModified();\n }\n if (value instanceof _editor.AnnotationEditor && typeof this.onAnnotationEditor === \"function\") {\n this.onAnnotationEditor(value.constructor._type);\n }\n }\n has(key) {\n return this.#storage.has(key);\n }\n getAll() {\n return this.#storage.size > 0 ? (0, _util.objectFromMap)(this.#storage) : null;\n }\n setAll(obj) {\n for (const [key, val] of Object.entries(obj)) {\n this.setValue(key, val);\n }\n }\n get size() {\n return this.#storage.size;\n }\n #setModified() {\n if (!this.#modified) {\n this.#modified = true;\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\n }\n }\n resetModified() {\n if (this.#modified) {\n this.#modified = false;\n if (typeof this.onResetModified === \"function\") {\n this.onResetModified();\n }\n }\n }\n get print() {\n return new PrintAnnotationStorage(this);\n }\n get serializable() {\n if (this.#storage.size === 0) {\n return SerializableEmpty;\n }\n const map = new Map(),\n hash = new _murmurhash.MurmurHash3_64(),\n transfers = [];\n const context = Object.create(null);\n let hasBitmap = false;\n for (const [key, val] of this.#storage) {\n const serialized = val instanceof _editor.AnnotationEditor ? val.serialize(false, context) : val;\n if (serialized) {\n map.set(key, serialized);\n hash.update(`${key}:${JSON.stringify(serialized)}`);\n hasBitmap ||= !!serialized.bitmap;\n }\n }\n if (hasBitmap) {\n for (const value of map.values()) {\n if (value.bitmap) {\n transfers.push(value.bitmap);\n }\n }\n }\n return map.size > 0 ? {\n map,\n hash: hash.hexdigest(),\n transfers\n } : SerializableEmpty;\n }\n}\nexports.AnnotationStorage = AnnotationStorage;\nclass PrintAnnotationStorage extends AnnotationStorage {\n #serializable;\n constructor(parent) {\n super();\n const {\n map,\n hash,\n transfers\n } = parent.serializable;\n const clone = structuredClone(map, transfers ? {\n transfer: transfers\n } : null);\n this.#serializable = {\n map: clone,\n hash,\n transfers\n };\n }\n get print() {\n (0, _util.unreachable)(\"Should not call PrintAnnotationStorage.print\");\n }\n get serializable() {\n return this.#serializable;\n }\n}\nexports.PrintAnnotationStorage = PrintAnnotationStorage;\n\n/***/ }),\n/* 4 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.AnnotationEditor = void 0;\nvar _tools = __w_pdfjs_require__(5);\nvar _util = __w_pdfjs_require__(1);\nvar _display_utils = __w_pdfjs_require__(6);\nclass AnnotationEditor {\n #altText = \"\";\n #altTextDecorative = false;\n #altTextButton = null;\n #altTextTooltip = null;\n #altTextTooltipTimeout = null;\n #keepAspectRatio = false;\n #resizersDiv = null;\n #boundFocusin = this.focusin.bind(this);\n #boundFocusout = this.focusout.bind(this);\n #hasBeenClicked = false;\n #isEditing = false;\n #isInEditMode = false;\n _initialOptions = Object.create(null);\n _uiManager = null;\n _focusEventsAllowed = true;\n _l10nPromise = null;\n #isDraggable = false;\n #zIndex = AnnotationEditor._zIndex++;\n static _borderLineWidth = -1;\n static _colorManager = new _tools.ColorManager();\n static _zIndex = 1;\n static SMALL_EDITOR_SIZE = 0;\n constructor(parameters) {\n if (this.constructor === AnnotationEditor) {\n (0, _util.unreachable)(\"Cannot initialize AnnotationEditor.\");\n }\n this.parent = parameters.parent;\n this.id = parameters.id;\n this.width = this.height = null;\n this.pageIndex = parameters.parent.pageIndex;\n this.name = parameters.name;\n this.div = null;\n this._uiManager = parameters.uiManager;\n this.annotationElementId = null;\n this._willKeepAspectRatio = false;\n this._initialOptions.isCentered = parameters.isCentered;\n this._structTreeParentId = null;\n const {\n rotation,\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = this.parent.viewport;\n this.rotation = rotation;\n this.pageRotation = (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\n this.pageDimensions = [pageWidth, pageHeight];\n this.pageTranslation = [pageX, pageY];\n const [width, height] = this.parentDimensions;\n this.x = parameters.x / width;\n this.y = parameters.y / height;\n this.isAttachedToDOM = false;\n this.deleted = false;\n }\n get editorType() {\n return Object.getPrototypeOf(this).constructor._type;\n }\n static get _defaultLineColor() {\n return (0, _util.shadow)(this, \"_defaultLineColor\", this._colorManager.getHexCode(\"CanvasText\"));\n }\n static deleteAnnotationElement(editor) {\n const fakeEditor = new FakeEditor({\n id: editor.parent.getNextId(),\n parent: editor.parent,\n uiManager: editor._uiManager\n });\n fakeEditor.annotationElementId = editor.annotationElementId;\n fakeEditor.deleted = true;\n fakeEditor._uiManager.addToAnnotationStorage(fakeEditor);\n }\n static initialize(l10n, options = null) {\n AnnotationEditor._l10nPromise ||= new Map([\"editor_alt_text_button_label\", \"editor_alt_text_edit_button_label\", \"editor_alt_text_decorative_tooltip\"].map(str => [str, l10n.get(str)]));\n if (options?.strings) {\n for (const str of options.strings) {\n AnnotationEditor._l10nPromise.set(str, l10n.get(str));\n }\n }\n if (AnnotationEditor._borderLineWidth !== -1) {\n return;\n }\n const style = getComputedStyle(document.documentElement);\n AnnotationEditor._borderLineWidth = parseFloat(style.getPropertyValue(\"--outline-width\")) || 0;\n }\n static updateDefaultParams(_type, _value) {}\n static get defaultPropertiesToUpdate() {\n return [];\n }\n static isHandlingMimeForPasting(mime) {\n return false;\n }\n static paste(item, parent) {\n (0, _util.unreachable)(\"Not implemented\");\n }\n get propertiesToUpdate() {\n return [];\n }\n get _isDraggable() {\n return this.#isDraggable;\n }\n set _isDraggable(value) {\n this.#isDraggable = value;\n this.div?.classList.toggle(\"draggable\", value);\n }\n center() {\n const [pageWidth, pageHeight] = this.pageDimensions;\n switch (this.parentRotation) {\n case 90:\n this.x -= this.height * pageHeight / (pageWidth * 2);\n this.y += this.width * pageWidth / (pageHeight * 2);\n break;\n case 180:\n this.x += this.width / 2;\n this.y += this.height / 2;\n break;\n case 270:\n this.x += this.height * pageHeight / (pageWidth * 2);\n this.y -= this.width * pageWidth / (pageHeight * 2);\n break;\n default:\n this.x -= this.width / 2;\n this.y -= this.height / 2;\n break;\n }\n this.fixAndSetPosition();\n }\n addCommands(params) {\n this._uiManager.addCommands(params);\n }\n get currentLayer() {\n return this._uiManager.currentLayer;\n }\n setInBackground() {\n this.div.style.zIndex = 0;\n }\n setInForeground() {\n this.div.style.zIndex = this.#zIndex;\n }\n setParent(parent) {\n if (parent !== null) {\n this.pageIndex = parent.pageIndex;\n this.pageDimensions = parent.pageDimensions;\n }\n this.parent = parent;\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.#hasBeenClicked) {\n this.parent.setSelected(this);\n } else {\n this.#hasBeenClicked = false;\n }\n }\n focusout(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.isAttachedToDOM) {\n return;\n }\n const target = event.relatedTarget;\n if (target?.closest(`#${this.id}`)) {\n return;\n }\n event.preventDefault();\n if (!this.parent?.isMultipleSelection) {\n this.commitOrRemove();\n }\n }\n commitOrRemove() {\n if (this.isEmpty()) {\n this.remove();\n } else {\n this.commit();\n }\n }\n commit() {\n this.addToAnnotationStorage();\n }\n addToAnnotationStorage() {\n this._uiManager.addToAnnotationStorage(this);\n }\n setAt(x, y, tx, ty) {\n const [width, height] = this.parentDimensions;\n [tx, ty] = this.screenToPageTranslation(tx, ty);\n this.x = (x + tx) / width;\n this.y = (y + ty) / height;\n this.fixAndSetPosition();\n }\n #translate([width, height], x, y) {\n [x, y] = this.screenToPageTranslation(x, y);\n this.x += x / width;\n this.y += y / height;\n this.fixAndSetPosition();\n }\n translate(x, y) {\n this.#translate(this.parentDimensions, x, y);\n }\n translateInPage(x, y) {\n this.#translate(this.pageDimensions, x, y);\n this.div.scrollIntoView({\n block: \"nearest\"\n });\n }\n drag(tx, ty) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.x += tx / parentWidth;\n this.y += ty / parentHeight;\n if (this.parent && (this.x < 0 || this.x > 1 || this.y < 0 || this.y > 1)) {\n const {\n x,\n y\n } = this.div.getBoundingClientRect();\n if (this.parent.findNewParent(this, x, y)) {\n this.x -= Math.floor(this.x);\n this.y -= Math.floor(this.y);\n }\n }\n let {\n x,\n y\n } = this;\n const [bx, by] = this.#getBaseTranslation();\n x += bx;\n y += by;\n this.div.style.left = `${(100 * x).toFixed(2)}%`;\n this.div.style.top = `${(100 * y).toFixed(2)}%`;\n this.div.scrollIntoView({\n block: \"nearest\"\n });\n }\n #getBaseTranslation() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n _borderLineWidth\n } = AnnotationEditor;\n const x = _borderLineWidth / parentWidth;\n const y = _borderLineWidth / parentHeight;\n switch (this.rotation) {\n case 90:\n return [-x, y];\n case 180:\n return [x, y];\n case 270:\n return [x, -y];\n default:\n return [-x, -y];\n }\n }\n fixAndSetPosition() {\n const [pageWidth, pageHeight] = this.pageDimensions;\n let {\n x,\n y,\n width,\n height\n } = this;\n width *= pageWidth;\n height *= pageHeight;\n x *= pageWidth;\n y *= pageHeight;\n switch (this.rotation) {\n case 0:\n x = Math.max(0, Math.min(pageWidth - width, x));\n y = Math.max(0, Math.min(pageHeight - height, y));\n break;\n case 90:\n x = Math.max(0, Math.min(pageWidth - height, x));\n y = Math.min(pageHeight, Math.max(width, y));\n break;\n case 180:\n x = Math.min(pageWidth, Math.max(width, x));\n y = Math.min(pageHeight, Math.max(height, y));\n break;\n case 270:\n x = Math.min(pageWidth, Math.max(height, x));\n y = Math.max(0, Math.min(pageHeight - width, y));\n break;\n }\n this.x = x /= pageWidth;\n this.y = y /= pageHeight;\n const [bx, by] = this.#getBaseTranslation();\n x += bx;\n y += by;\n const {\n style\n } = this.div;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this.moveInDOM();\n }\n static #rotatePoint(x, y, angle) {\n switch (angle) {\n case 90:\n return [y, -x];\n case 180:\n return [-x, -y];\n case 270:\n return [-y, x];\n default:\n return [x, y];\n }\n }\n screenToPageTranslation(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);\n }\n pageTranslationToScreen(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);\n }\n #getRotationMatrix(rotation) {\n switch (rotation) {\n case 90:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, -pageWidth / pageHeight, pageHeight / pageWidth, 0];\n }\n case 180:\n return [-1, 0, 0, -1];\n case 270:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, pageWidth / pageHeight, -pageHeight / pageWidth, 0];\n }\n default:\n return [1, 0, 0, 1];\n }\n }\n get parentScale() {\n return this._uiManager.viewParameters.realScale;\n }\n get parentRotation() {\n return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n }\n get parentDimensions() {\n const {\n parentScale,\n pageDimensions: [pageWidth, pageHeight]\n } = this;\n const scaledWidth = pageWidth * parentScale;\n const scaledHeight = pageHeight * parentScale;\n return _util.FeatureTest.isCSSRoundSupported ? [Math.round(scaledWidth), Math.round(scaledHeight)] : [scaledWidth, scaledHeight];\n }\n setDims(width, height) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.div.style.width = `${(100 * width / parentWidth).toFixed(2)}%`;\n if (!this.#keepAspectRatio) {\n this.div.style.height = `${(100 * height / parentHeight).toFixed(2)}%`;\n }\n this.#altTextButton?.classList.toggle(\"small\", width < AnnotationEditor.SMALL_EDITOR_SIZE || height < AnnotationEditor.SMALL_EDITOR_SIZE);\n }\n fixDims() {\n const {\n style\n } = this.div;\n const {\n height,\n width\n } = style;\n const widthPercent = width.endsWith(\"%\");\n const heightPercent = !this.#keepAspectRatio && height.endsWith(\"%\");\n if (widthPercent && heightPercent) {\n return;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (!widthPercent) {\n style.width = `${(100 * parseFloat(width) / parentWidth).toFixed(2)}%`;\n }\n if (!this.#keepAspectRatio && !heightPercent) {\n style.height = `${(100 * parseFloat(height) / parentHeight).toFixed(2)}%`;\n }\n }\n getInitialTranslation() {\n return [0, 0];\n }\n #createResizers() {\n if (this.#resizersDiv) {\n return;\n }\n this.#resizersDiv = document.createElement(\"div\");\n this.#resizersDiv.classList.add(\"resizers\");\n const classes = [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"];\n if (!this._willKeepAspectRatio) {\n classes.push(\"topMiddle\", \"middleRight\", \"bottomMiddle\", \"middleLeft\");\n }\n for (const name of classes) {\n const div = document.createElement(\"div\");\n this.#resizersDiv.append(div);\n div.classList.add(\"resizer\", name);\n div.addEventListener(\"pointerdown\", this.#resizerPointerdown.bind(this, name));\n div.addEventListener(\"contextmenu\", _display_utils.noContextMenu);\n }\n this.div.prepend(this.#resizersDiv);\n }\n #resizerPointerdown(name, event) {\n event.preventDefault();\n const {\n isMac\n } = _util.FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n const boundResizerPointermove = this.#resizerPointermove.bind(this, name);\n const savedDraggable = this._isDraggable;\n this._isDraggable = false;\n const pointerMoveOptions = {\n passive: true,\n capture: true\n };\n window.addEventListener(\"pointermove\", boundResizerPointermove, pointerMoveOptions);\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const savedParentCursor = this.parent.div.style.cursor;\n const savedCursor = this.div.style.cursor;\n this.div.style.cursor = this.parent.div.style.cursor = window.getComputedStyle(event.target).cursor;\n const pointerUpCallback = () => {\n this._isDraggable = savedDraggable;\n window.removeEventListener(\"pointerup\", pointerUpCallback);\n window.removeEventListener(\"blur\", pointerUpCallback);\n window.removeEventListener(\"pointermove\", boundResizerPointermove, pointerMoveOptions);\n this.parent.div.style.cursor = savedParentCursor;\n this.div.style.cursor = savedCursor;\n const newX = this.x;\n const newY = this.y;\n const newWidth = this.width;\n const newHeight = this.height;\n if (newX === savedX && newY === savedY && newWidth === savedWidth && newHeight === savedHeight) {\n return;\n }\n this.addCommands({\n cmd: () => {\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n this.fixAndSetPosition();\n },\n undo: () => {\n this.width = savedWidth;\n this.height = savedHeight;\n this.x = savedX;\n this.y = savedY;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(parentWidth * savedWidth, parentHeight * savedHeight);\n this.fixAndSetPosition();\n },\n mustExec: true\n });\n };\n window.addEventListener(\"pointerup\", pointerUpCallback);\n window.addEventListener(\"blur\", pointerUpCallback);\n }\n #resizerPointermove(name, event) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n const round = x => Math.round(x * 10000) / 10000;\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\n const invTransf = (x, y) => [invRotationMatrix[0] * x + invRotationMatrix[2] * y, invRotationMatrix[1] * x + invRotationMatrix[3] * y];\n let getPoint;\n let getOpposite;\n let isDiagonal = false;\n let isHorizontal = false;\n switch (name) {\n case \"topLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, 0];\n getOpposite = (w, h) => [w, h];\n break;\n case \"topMiddle\":\n getPoint = (w, h) => [w / 2, 0];\n getOpposite = (w, h) => [w / 2, h];\n break;\n case \"topRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, 0];\n getOpposite = (w, h) => [0, h];\n break;\n case \"middleRight\":\n isHorizontal = true;\n getPoint = (w, h) => [w, h / 2];\n getOpposite = (w, h) => [0, h / 2];\n break;\n case \"bottomRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, h];\n getOpposite = (w, h) => [0, 0];\n break;\n case \"bottomMiddle\":\n getPoint = (w, h) => [w / 2, h];\n getOpposite = (w, h) => [w / 2, 0];\n break;\n case \"bottomLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, h];\n getOpposite = (w, h) => [w, 0];\n break;\n case \"middleLeft\":\n isHorizontal = true;\n getPoint = (w, h) => [0, h / 2];\n getOpposite = (w, h) => [w, h / 2];\n break;\n }\n const point = getPoint(savedWidth, savedHeight);\n const oppositePoint = getOpposite(savedWidth, savedHeight);\n let transfOppositePoint = transf(...oppositePoint);\n const oppositeX = round(savedX + transfOppositePoint[0]);\n const oppositeY = round(savedY + transfOppositePoint[1]);\n let ratioX = 1;\n let ratioY = 1;\n let [deltaX, deltaY] = this.screenToPageTranslation(event.movementX, event.movementY);\n [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight);\n if (isDiagonal) {\n const oldDiag = Math.hypot(savedWidth, savedHeight);\n ratioX = ratioY = Math.max(Math.min(Math.hypot(oppositePoint[0] - point[0] - deltaX, oppositePoint[1] - point[1] - deltaY) / oldDiag, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n } else if (isHorizontal) {\n ratioX = Math.max(minWidth, Math.min(1, Math.abs(oppositePoint[0] - point[0] - deltaX))) / savedWidth;\n } else {\n ratioY = Math.max(minHeight, Math.min(1, Math.abs(oppositePoint[1] - point[1] - deltaY))) / savedHeight;\n }\n const newWidth = round(savedWidth * ratioX);\n const newHeight = round(savedHeight * ratioY);\n transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n const newX = oppositeX - transfOppositePoint[0];\n const newY = oppositeY - transfOppositePoint[1];\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n this.fixAndSetPosition();\n }\n async addAltTextButton() {\n if (this.#altTextButton) {\n return;\n }\n const altText = this.#altTextButton = document.createElement(\"button\");\n altText.className = \"altText\";\n const msg = await AnnotationEditor._l10nPromise.get(\"editor_alt_text_button_label\");\n altText.textContent = msg;\n altText.setAttribute(\"aria-label\", msg);\n altText.tabIndex = \"0\";\n altText.addEventListener(\"contextmenu\", _display_utils.noContextMenu);\n altText.addEventListener(\"pointerdown\", event => event.stopPropagation());\n altText.addEventListener(\"click\", event => {\n event.preventDefault();\n this._uiManager.editAltText(this);\n }, {\n capture: true\n });\n altText.addEventListener(\"keydown\", event => {\n if (event.target === altText && event.key === \"Enter\") {\n event.preventDefault();\n this._uiManager.editAltText(this);\n }\n });\n this.#setAltTextButtonState();\n this.div.append(altText);\n if (!AnnotationEditor.SMALL_EDITOR_SIZE) {\n const PERCENT = 40;\n AnnotationEditor.SMALL_EDITOR_SIZE = Math.min(128, Math.round(altText.getBoundingClientRect().width * (1 + PERCENT / 100)));\n }\n }\n async #setAltTextButtonState() {\n const button = this.#altTextButton;\n if (!button) {\n return;\n }\n if (!this.#altText && !this.#altTextDecorative) {\n button.classList.remove(\"done\");\n this.#altTextTooltip?.remove();\n return;\n }\n AnnotationEditor._l10nPromise.get(\"editor_alt_text_edit_button_label\").then(msg => {\n button.setAttribute(\"aria-label\", msg);\n });\n let tooltip = this.#altTextTooltip;\n if (!tooltip) {\n this.#altTextTooltip = tooltip = document.createElement(\"span\");\n tooltip.className = \"tooltip\";\n tooltip.setAttribute(\"role\", \"tooltip\");\n const id = tooltip.id = `alt-text-tooltip-${this.id}`;\n button.setAttribute(\"aria-describedby\", id);\n const DELAY_TO_SHOW_TOOLTIP = 100;\n button.addEventListener(\"mouseenter\", () => {\n this.#altTextTooltipTimeout = setTimeout(() => {\n this.#altTextTooltipTimeout = null;\n this.#altTextTooltip.classList.add(\"show\");\n this._uiManager._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n subtype: this.editorType,\n data: {\n action: \"alt_text_tooltip\"\n }\n }\n });\n }, DELAY_TO_SHOW_TOOLTIP);\n });\n button.addEventListener(\"mouseleave\", () => {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n this.#altTextTooltip?.classList.remove(\"show\");\n });\n }\n button.classList.add(\"done\");\n tooltip.innerText = this.#altTextDecorative ? await AnnotationEditor._l10nPromise.get(\"editor_alt_text_decorative_tooltip\") : this.#altText;\n if (!tooltip.parentNode) {\n button.append(tooltip);\n }\n }\n getClientDimensions() {\n return this.div.getBoundingClientRect();\n }\n get altTextData() {\n return {\n altText: this.#altText,\n decorative: this.#altTextDecorative\n };\n }\n set altTextData({\n altText,\n decorative\n }) {\n if (this.#altText === altText && this.#altTextDecorative === decorative) {\n return;\n }\n this.#altText = altText;\n this.#altTextDecorative = decorative;\n this.#setAltTextButtonState();\n }\n render() {\n this.div = document.createElement(\"div\");\n this.div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n this.div.className = this.name;\n this.div.setAttribute(\"id\", this.id);\n this.div.setAttribute(\"tabIndex\", 0);\n this.setInForeground();\n this.div.addEventListener(\"focusin\", this.#boundFocusin);\n this.div.addEventListener(\"focusout\", this.#boundFocusout);\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.parentRotation % 180 !== 0) {\n this.div.style.maxWidth = `${(100 * parentHeight / parentWidth).toFixed(2)}%`;\n this.div.style.maxHeight = `${(100 * parentWidth / parentHeight).toFixed(2)}%`;\n }\n const [tx, ty] = this.getInitialTranslation();\n this.translate(tx, ty);\n (0, _tools.bindEvents)(this, this.div, [\"pointerdown\"]);\n return this.div;\n }\n pointerdown(event) {\n const {\n isMac\n } = _util.FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n event.preventDefault();\n return;\n }\n this.#hasBeenClicked = true;\n this.#setUpDragSession(event);\n }\n #setUpDragSession(event) {\n if (!this._isDraggable) {\n return;\n }\n const isSelected = this._uiManager.isSelected(this);\n this._uiManager.setUpDragSession();\n let pointerMoveOptions, pointerMoveCallback;\n if (isSelected) {\n pointerMoveOptions = {\n passive: true,\n capture: true\n };\n pointerMoveCallback = e => {\n const [tx, ty] = this.screenToPageTranslation(e.movementX, e.movementY);\n this._uiManager.dragSelectedEditors(tx, ty);\n };\n window.addEventListener(\"pointermove\", pointerMoveCallback, pointerMoveOptions);\n }\n const pointerUpCallback = () => {\n window.removeEventListener(\"pointerup\", pointerUpCallback);\n window.removeEventListener(\"blur\", pointerUpCallback);\n if (isSelected) {\n window.removeEventListener(\"pointermove\", pointerMoveCallback, pointerMoveOptions);\n }\n this.#hasBeenClicked = false;\n if (!this._uiManager.endDragSession()) {\n const {\n isMac\n } = _util.FeatureTest.platform;\n if (event.ctrlKey && !isMac || event.shiftKey || event.metaKey && isMac) {\n this.parent.toggleSelected(this);\n } else {\n this.parent.setSelected(this);\n }\n }\n };\n window.addEventListener(\"pointerup\", pointerUpCallback);\n window.addEventListener(\"blur\", pointerUpCallback);\n }\n moveInDOM() {\n this.parent?.moveEditorInDOM(this);\n }\n _setParentAndPosition(parent, x, y) {\n parent.changeParent(this);\n this.x = x;\n this.y = y;\n this.fixAndSetPosition();\n }\n getRect(tx, ty) {\n const scale = this.parentScale;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const shiftX = tx / scale;\n const shiftY = ty / scale;\n const x = this.x * pageWidth;\n const y = this.y * pageHeight;\n const width = this.width * pageWidth;\n const height = this.height * pageHeight;\n switch (this.rotation) {\n case 0:\n return [x + shiftX + pageX, pageHeight - y - shiftY - height + pageY, x + shiftX + width + pageX, pageHeight - y - shiftY + pageY];\n case 90:\n return [x + shiftY + pageX, pageHeight - y + shiftX + pageY, x + shiftY + height + pageX, pageHeight - y + shiftX + width + pageY];\n case 180:\n return [x - shiftX - width + pageX, pageHeight - y + shiftY + pageY, x - shiftX + pageX, pageHeight - y + shiftY + height + pageY];\n case 270:\n return [x - shiftY - height + pageX, pageHeight - y - shiftX - width + pageY, x - shiftY + pageX, pageHeight - y - shiftX + pageY];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n getRectInCurrentCoords(rect, pageHeight) {\n const [x1, y1, x2, y2] = rect;\n const width = x2 - x1;\n const height = y2 - y1;\n switch (this.rotation) {\n case 0:\n return [x1, pageHeight - y2, width, height];\n case 90:\n return [x1, pageHeight - y1, height, width];\n case 180:\n return [x2, pageHeight - y1, width, height];\n case 270:\n return [x2, pageHeight - y2, height, width];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n onceAdded() {}\n isEmpty() {\n return false;\n }\n enableEditMode() {\n this.#isInEditMode = true;\n }\n disableEditMode() {\n this.#isInEditMode = false;\n }\n isInEditMode() {\n return this.#isInEditMode;\n }\n shouldGetKeyboardEvents() {\n return false;\n }\n needsToBeRebuilt() {\n return this.div && !this.isAttachedToDOM;\n }\n rebuild() {\n this.div?.addEventListener(\"focusin\", this.#boundFocusin);\n this.div?.addEventListener(\"focusout\", this.#boundFocusout);\n }\n serialize(isForCopying = false, context = null) {\n (0, _util.unreachable)(\"An editor must be serializable\");\n }\n static deserialize(data, parent, uiManager) {\n const editor = new this.prototype.constructor({\n parent,\n id: parent.getNextId(),\n uiManager\n });\n editor.rotation = data.rotation;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight);\n editor.x = x / pageWidth;\n editor.y = y / pageHeight;\n editor.width = width / pageWidth;\n editor.height = height / pageHeight;\n return editor;\n }\n remove() {\n this.div.removeEventListener(\"focusin\", this.#boundFocusin);\n this.div.removeEventListener(\"focusout\", this.#boundFocusout);\n if (!this.isEmpty()) {\n this.commit();\n }\n if (this.parent) {\n this.parent.remove(this);\n } else {\n this._uiManager.removeEditor(this);\n }\n this.#altTextButton?.remove();\n this.#altTextButton = null;\n this.#altTextTooltip = null;\n }\n get isResizable() {\n return false;\n }\n makeResizable() {\n if (this.isResizable) {\n this.#createResizers();\n this.#resizersDiv.classList.remove(\"hidden\");\n }\n }\n select() {\n this.makeResizable();\n this.div?.classList.add(\"selectedEditor\");\n }\n unselect() {\n this.#resizersDiv?.classList.add(\"hidden\");\n this.div?.classList.remove(\"selectedEditor\");\n if (this.div?.contains(document.activeElement)) {\n this._uiManager.currentLayer.div.focus();\n }\n }\n updateParams(type, value) {}\n disableEditing() {\n if (this.#altTextButton) {\n this.#altTextButton.hidden = true;\n }\n }\n enableEditing() {\n if (this.#altTextButton) {\n this.#altTextButton.hidden = false;\n }\n }\n enterInEditMode() {}\n get contentDiv() {\n return this.div;\n }\n get isEditing() {\n return this.#isEditing;\n }\n set isEditing(value) {\n this.#isEditing = value;\n if (!this.parent) {\n return;\n }\n if (value) {\n this.parent.setSelected(this);\n this.parent.setActiveEditor(this);\n } else {\n this.parent.setActiveEditor(null);\n }\n }\n setAspectRatio(width, height) {\n this.#keepAspectRatio = true;\n const aspectRatio = width / height;\n const {\n style\n } = this.div;\n style.aspectRatio = aspectRatio;\n style.height = \"auto\";\n }\n static get MIN_SIZE() {\n return 16;\n }\n}\nexports.AnnotationEditor = AnnotationEditor;\nclass FakeEditor extends AnnotationEditor {\n constructor(params) {\n super(params);\n this.annotationElementId = params.annotationElementId;\n this.deleted = true;\n }\n serialize() {\n return {\n id: this.annotationElementId,\n deleted: true,\n pageIndex: this.pageIndex\n };\n }\n}\n\n/***/ }),\n/* 5 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.KeyboardManager = exports.CommandManager = exports.ColorManager = exports.AnnotationEditorUIManager = void 0;\nexports.bindEvents = bindEvents;\nexports.opacityToHex = opacityToHex;\nvar _util = __w_pdfjs_require__(1);\nvar _display_utils = __w_pdfjs_require__(6);\nfunction bindEvents(obj, element, names) {\n for (const name of names) {\n element.addEventListener(name, obj[name].bind(obj));\n }\n}\nfunction opacityToHex(opacity) {\n return Math.round(Math.min(255, Math.max(1, 255 * opacity))).toString(16).padStart(2, \"0\");\n}\nclass IdManager {\n #id = 0;\n getId() {\n return `${_util.AnnotationEditorPrefix}${this.#id++}`;\n }\n}\nclass ImageManager {\n #baseId = (0, _util.getUuid)();\n #id = 0;\n #cache = null;\n static get _isSVGFittingCanvas() {\n const svg = `data:image/svg+xml;charset=UTF-8,`;\n const canvas = new OffscreenCanvas(1, 3);\n const ctx = canvas.getContext(\"2d\");\n const image = new Image();\n image.src = svg;\n const promise = image.decode().then(() => {\n ctx.drawImage(image, 0, 0, 1, 1, 0, 0, 1, 3);\n return new Uint32Array(ctx.getImageData(0, 0, 1, 1).data.buffer)[0] === 0;\n });\n return (0, _util.shadow)(this, \"_isSVGFittingCanvas\", promise);\n }\n async #get(key, rawData) {\n this.#cache ||= new Map();\n let data = this.#cache.get(key);\n if (data === null) {\n return null;\n }\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n try {\n data ||= {\n bitmap: null,\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 0,\n isSvg: false\n };\n let image;\n if (typeof rawData === \"string\") {\n data.url = rawData;\n const response = await fetch(rawData);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n image = await response.blob();\n } else {\n image = data.file = rawData;\n }\n if (image.type === \"image/svg+xml\") {\n const mustRemoveAspectRatioPromise = ImageManager._isSVGFittingCanvas;\n const fileReader = new FileReader();\n const imageElement = new Image();\n const imagePromise = new Promise((resolve, reject) => {\n imageElement.onload = () => {\n data.bitmap = imageElement;\n data.isSvg = true;\n resolve();\n };\n fileReader.onload = async () => {\n const url = data.svgUrl = fileReader.result;\n imageElement.src = (await mustRemoveAspectRatioPromise) ? `${url}#svgView(preserveAspectRatio(none))` : url;\n };\n imageElement.onerror = fileReader.onerror = reject;\n });\n fileReader.readAsDataURL(image);\n await imagePromise;\n } else {\n data.bitmap = await createImageBitmap(image);\n }\n data.refCounter = 1;\n } catch (e) {\n console.error(e);\n data = null;\n }\n this.#cache.set(key, data);\n if (data) {\n this.#cache.set(data.id, data);\n }\n return data;\n }\n async getFromFile(file) {\n const {\n lastModified,\n name,\n size,\n type\n } = file;\n return this.#get(`${lastModified}_${name}_${size}_${type}`, file);\n }\n async getFromUrl(url) {\n return this.#get(url, url);\n }\n async getFromId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return null;\n }\n if (data.bitmap) {\n data.refCounter += 1;\n return data;\n }\n if (data.file) {\n return this.getFromFile(data.file);\n }\n return this.getFromUrl(data.url);\n }\n getSvgUrl(id) {\n const data = this.#cache.get(id);\n if (!data?.isSvg) {\n return null;\n }\n return data.svgUrl;\n }\n deleteId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return;\n }\n data.refCounter -= 1;\n if (data.refCounter !== 0) {\n return;\n }\n data.bitmap = null;\n }\n isValidId(id) {\n return id.startsWith(`image_${this.#baseId}_`);\n }\n}\nclass CommandManager {\n #commands = [];\n #locked = false;\n #maxSize;\n #position = -1;\n constructor(maxSize = 128) {\n this.#maxSize = maxSize;\n }\n add({\n cmd,\n undo,\n mustExec,\n type = NaN,\n overwriteIfSameType = false,\n keepUndo = false\n }) {\n if (mustExec) {\n cmd();\n }\n if (this.#locked) {\n return;\n }\n const save = {\n cmd,\n undo,\n type\n };\n if (this.#position === -1) {\n if (this.#commands.length > 0) {\n this.#commands.length = 0;\n }\n this.#position = 0;\n this.#commands.push(save);\n return;\n }\n if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n if (keepUndo) {\n save.undo = this.#commands[this.#position].undo;\n }\n this.#commands[this.#position] = save;\n return;\n }\n const next = this.#position + 1;\n if (next === this.#maxSize) {\n this.#commands.splice(0, 1);\n } else {\n this.#position = next;\n if (next < this.#commands.length) {\n this.#commands.splice(next);\n }\n }\n this.#commands.push(save);\n }\n undo() {\n if (this.#position === -1) {\n return;\n }\n this.#locked = true;\n this.#commands[this.#position].undo();\n this.#locked = false;\n this.#position -= 1;\n }\n redo() {\n if (this.#position < this.#commands.length - 1) {\n this.#position += 1;\n this.#locked = true;\n this.#commands[this.#position].cmd();\n this.#locked = false;\n }\n }\n hasSomethingToUndo() {\n return this.#position !== -1;\n }\n hasSomethingToRedo() {\n return this.#position < this.#commands.length - 1;\n }\n destroy() {\n this.#commands = null;\n }\n}\nexports.CommandManager = CommandManager;\nclass KeyboardManager {\n constructor(callbacks) {\n this.buffer = [];\n this.callbacks = new Map();\n this.allKeys = new Set();\n const {\n isMac\n } = _util.FeatureTest.platform;\n for (const [keys, callback, options = {}] of callbacks) {\n for (const key of keys) {\n const isMacKey = key.startsWith(\"mac+\");\n if (isMac && isMacKey) {\n this.callbacks.set(key.slice(4), {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n } else if (!isMac && !isMacKey) {\n this.callbacks.set(key, {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n }\n }\n }\n }\n #serialize(event) {\n if (event.altKey) {\n this.buffer.push(\"alt\");\n }\n if (event.ctrlKey) {\n this.buffer.push(\"ctrl\");\n }\n if (event.metaKey) {\n this.buffer.push(\"meta\");\n }\n if (event.shiftKey) {\n this.buffer.push(\"shift\");\n }\n this.buffer.push(event.key);\n const str = this.buffer.join(\"+\");\n this.buffer.length = 0;\n return str;\n }\n exec(self, event) {\n if (!this.allKeys.has(event.key)) {\n return;\n }\n const info = this.callbacks.get(this.#serialize(event));\n if (!info) {\n return;\n }\n const {\n callback,\n options: {\n bubbles = false,\n args = [],\n checker = null\n }\n } = info;\n if (checker && !checker(self, event)) {\n return;\n }\n callback.bind(self, ...args)();\n if (!bubbles) {\n event.stopPropagation();\n event.preventDefault();\n }\n }\n}\nexports.KeyboardManager = KeyboardManager;\nclass ColorManager {\n static _colorsMapping = new Map([[\"CanvasText\", [0, 0, 0]], [\"Canvas\", [255, 255, 255]]]);\n get _colors() {\n const colors = new Map([[\"CanvasText\", null], [\"Canvas\", null]]);\n (0, _display_utils.getColorValues)(colors);\n return (0, _util.shadow)(this, \"_colors\", colors);\n }\n convert(color) {\n const rgb = (0, _display_utils.getRGB)(color);\n if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n return rgb;\n }\n for (const [name, RGB] of this._colors) {\n if (RGB.every((x, i) => x === rgb[i])) {\n return ColorManager._colorsMapping.get(name);\n }\n }\n return rgb;\n }\n getHexCode(name) {\n const rgb = this._colors.get(name);\n if (!rgb) {\n return name;\n }\n return _util.Util.makeHexColor(...rgb);\n }\n}\nexports.ColorManager = ColorManager;\nclass AnnotationEditorUIManager {\n #activeEditor = null;\n #allEditors = new Map();\n #allLayers = new Map();\n #altTextManager = null;\n #annotationStorage = null;\n #commandManager = new CommandManager();\n #currentPageIndex = 0;\n #deletedAnnotationsElementIds = new Set();\n #draggingEditors = null;\n #editorTypes = null;\n #editorsToRescale = new Set();\n #filterFactory = null;\n #idManager = new IdManager();\n #isEnabled = false;\n #isWaiting = false;\n #lastActiveElement = null;\n #mode = _util.AnnotationEditorType.NONE;\n #selectedEditors = new Set();\n #pageColors = null;\n #boundBlur = this.blur.bind(this);\n #boundFocus = this.focus.bind(this);\n #boundCopy = this.copy.bind(this);\n #boundCut = this.cut.bind(this);\n #boundPaste = this.paste.bind(this);\n #boundKeydown = this.keydown.bind(this);\n #boundOnEditingAction = this.onEditingAction.bind(this);\n #boundOnPageChanging = this.onPageChanging.bind(this);\n #boundOnScaleChanging = this.onScaleChanging.bind(this);\n #boundOnRotationChanging = this.onRotationChanging.bind(this);\n #previousStates = {\n isEditing: false,\n isEmpty: true,\n hasSomethingToUndo: false,\n hasSomethingToRedo: false,\n hasSelectedEditor: false\n };\n #translation = [0, 0];\n #translationTimeoutId = null;\n #container = null;\n #viewer = null;\n static TRANSLATE_SMALL = 1;\n static TRANSLATE_BIG = 10;\n static get _keyboardManager() {\n const proto = AnnotationEditorUIManager.prototype;\n const arrowChecker = self => {\n const {\n activeElement\n } = document;\n return activeElement && self.#container.contains(activeElement) && self.hasSomethingToControl();\n };\n const small = this.TRANSLATE_SMALL;\n const big = this.TRANSLATE_BIG;\n return (0, _util.shadow)(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+a\", \"mac+meta+a\"], proto.selectAll], [[\"ctrl+z\", \"mac+meta+z\"], proto.undo], [[\"ctrl+y\", \"ctrl+shift+z\", \"mac+meta+shift+z\", \"ctrl+shift+Z\", \"mac+meta+shift+Z\"], proto.redo], [[\"Backspace\", \"alt+Backspace\", \"ctrl+Backspace\", \"shift+Backspace\", \"mac+Backspace\", \"mac+alt+Backspace\", \"mac+ctrl+Backspace\", \"Delete\", \"ctrl+Delete\", \"shift+Delete\", \"mac+Delete\"], proto.delete], [[\"Escape\", \"mac+Escape\"], proto.unselectAll], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto.translateSelectedEditors, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto.translateSelectedEditors, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n constructor(container, viewer, altTextManager, eventBus, pdfDocument, pageColors) {\n this.#container = container;\n this.#viewer = viewer;\n this.#altTextManager = altTextManager;\n this._eventBus = eventBus;\n this._eventBus._on(\"editingaction\", this.#boundOnEditingAction);\n this._eventBus._on(\"pagechanging\", this.#boundOnPageChanging);\n this._eventBus._on(\"scalechanging\", this.#boundOnScaleChanging);\n this._eventBus._on(\"rotationchanging\", this.#boundOnRotationChanging);\n this.#annotationStorage = pdfDocument.annotationStorage;\n this.#filterFactory = pdfDocument.filterFactory;\n this.#pageColors = pageColors;\n this.viewParameters = {\n realScale: _display_utils.PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: 0\n };\n }\n destroy() {\n this.#removeKeyboardManager();\n this.#removeFocusManager();\n this._eventBus._off(\"editingaction\", this.#boundOnEditingAction);\n this._eventBus._off(\"pagechanging\", this.#boundOnPageChanging);\n this._eventBus._off(\"scalechanging\", this.#boundOnScaleChanging);\n this._eventBus._off(\"rotationchanging\", this.#boundOnRotationChanging);\n for (const layer of this.#allLayers.values()) {\n layer.destroy();\n }\n this.#allLayers.clear();\n this.#allEditors.clear();\n this.#editorsToRescale.clear();\n this.#activeEditor = null;\n this.#selectedEditors.clear();\n this.#commandManager.destroy();\n this.#altTextManager.destroy();\n }\n get hcmFilter() {\n return (0, _util.shadow)(this, \"hcmFilter\", this.#pageColors ? this.#filterFactory.addHCMFilter(this.#pageColors.foreground, this.#pageColors.background) : \"none\");\n }\n get direction() {\n return (0, _util.shadow)(this, \"direction\", getComputedStyle(this.#container).direction);\n }\n editAltText(editor) {\n this.#altTextManager?.editAltText(this, editor);\n }\n onPageChanging({\n pageNumber\n }) {\n this.#currentPageIndex = pageNumber - 1;\n }\n focusMainContainer() {\n this.#container.focus();\n }\n findParent(x, y) {\n for (const layer of this.#allLayers.values()) {\n const {\n x: layerX,\n y: layerY,\n width,\n height\n } = layer.div.getBoundingClientRect();\n if (x >= layerX && x <= layerX + width && y >= layerY && y <= layerY + height) {\n return layer;\n }\n }\n return null;\n }\n disableUserSelect(value = false) {\n this.#viewer.classList.toggle(\"noUserSelect\", value);\n }\n addShouldRescale(editor) {\n this.#editorsToRescale.add(editor);\n }\n removeShouldRescale(editor) {\n this.#editorsToRescale.delete(editor);\n }\n onScaleChanging({\n scale\n }) {\n this.commitOrRemove();\n this.viewParameters.realScale = scale * _display_utils.PixelsPerInch.PDF_TO_CSS_UNITS;\n for (const editor of this.#editorsToRescale) {\n editor.onScaleChanging();\n }\n }\n onRotationChanging({\n pagesRotation\n }) {\n this.commitOrRemove();\n this.viewParameters.rotation = pagesRotation;\n }\n addToAnnotationStorage(editor) {\n if (!editor.isEmpty() && this.#annotationStorage && !this.#annotationStorage.has(editor.id)) {\n this.#annotationStorage.setValue(editor.id, editor);\n }\n }\n #addFocusManager() {\n window.addEventListener(\"focus\", this.#boundFocus);\n window.addEventListener(\"blur\", this.#boundBlur);\n }\n #removeFocusManager() {\n window.removeEventListener(\"focus\", this.#boundFocus);\n window.removeEventListener(\"blur\", this.#boundBlur);\n }\n blur() {\n if (!this.hasSelection) {\n return;\n }\n const {\n activeElement\n } = document;\n for (const editor of this.#selectedEditors) {\n if (editor.div.contains(activeElement)) {\n this.#lastActiveElement = [editor, activeElement];\n editor._focusEventsAllowed = false;\n break;\n }\n }\n }\n focus() {\n if (!this.#lastActiveElement) {\n return;\n }\n const [lastEditor, lastActiveElement] = this.#lastActiveElement;\n this.#lastActiveElement = null;\n lastActiveElement.addEventListener(\"focusin\", () => {\n lastEditor._focusEventsAllowed = true;\n }, {\n once: true\n });\n lastActiveElement.focus();\n }\n #addKeyboardManager() {\n window.addEventListener(\"keydown\", this.#boundKeydown, {\n capture: true\n });\n }\n #removeKeyboardManager() {\n window.removeEventListener(\"keydown\", this.#boundKeydown, {\n capture: true\n });\n }\n #addCopyPasteListeners() {\n document.addEventListener(\"copy\", this.#boundCopy);\n document.addEventListener(\"cut\", this.#boundCut);\n document.addEventListener(\"paste\", this.#boundPaste);\n }\n #removeCopyPasteListeners() {\n document.removeEventListener(\"copy\", this.#boundCopy);\n document.removeEventListener(\"cut\", this.#boundCut);\n document.removeEventListener(\"paste\", this.#boundPaste);\n }\n addEditListeners() {\n this.#addKeyboardManager();\n this.#addCopyPasteListeners();\n }\n removeEditListeners() {\n this.#removeKeyboardManager();\n this.#removeCopyPasteListeners();\n }\n copy(event) {\n event.preventDefault();\n this.#activeEditor?.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\n const editors = [];\n for (const editor of this.#selectedEditors) {\n const serialized = editor.serialize(true);\n if (serialized) {\n editors.push(serialized);\n }\n }\n if (editors.length === 0) {\n return;\n }\n event.clipboardData.setData(\"application/pdfjs\", JSON.stringify(editors));\n }\n cut(event) {\n this.copy(event);\n this.delete();\n }\n paste(event) {\n event.preventDefault();\n const {\n clipboardData\n } = event;\n for (const item of clipboardData.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n return;\n }\n }\n }\n let data = clipboardData.getData(\"application/pdfjs\");\n if (!data) {\n return;\n }\n try {\n data = JSON.parse(data);\n } catch (ex) {\n (0, _util.warn)(`paste: \"${ex.message}\".`);\n return;\n }\n if (!Array.isArray(data)) {\n return;\n }\n this.unselectAll();\n const layer = this.currentLayer;\n try {\n const newEditors = [];\n for (const editor of data) {\n const deserializedEditor = layer.deserialize(editor);\n if (!deserializedEditor) {\n return;\n }\n newEditors.push(deserializedEditor);\n }\n const cmd = () => {\n for (const editor of newEditors) {\n this.#addEditorToLayer(editor);\n }\n this.#selectEditors(newEditors);\n };\n const undo = () => {\n for (const editor of newEditors) {\n editor.remove();\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n } catch (ex) {\n (0, _util.warn)(`paste: \"${ex.message}\".`);\n }\n }\n keydown(event) {\n if (!this.getActive()?.shouldGetKeyboardEvents()) {\n AnnotationEditorUIManager._keyboardManager.exec(this, event);\n }\n }\n onEditingAction(details) {\n if ([\"undo\", \"redo\", \"delete\", \"selectAll\"].includes(details.name)) {\n this[details.name]();\n }\n }\n #dispatchUpdateStates(details) {\n const hasChanged = Object.entries(details).some(([key, value]) => this.#previousStates[key] !== value);\n if (hasChanged) {\n this._eventBus.dispatch(\"annotationeditorstateschanged\", {\n source: this,\n details: Object.assign(this.#previousStates, details)\n });\n }\n }\n #dispatchUpdateUI(details) {\n this._eventBus.dispatch(\"annotationeditorparamschanged\", {\n source: this,\n details\n });\n }\n setEditingState(isEditing) {\n if (isEditing) {\n this.#addFocusManager();\n this.#addKeyboardManager();\n this.#addCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: this.#mode !== _util.AnnotationEditorType.NONE,\n isEmpty: this.#isEmpty(),\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n hasSelectedEditor: false\n });\n } else {\n this.#removeFocusManager();\n this.#removeKeyboardManager();\n this.#removeCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: false\n });\n this.disableUserSelect(false);\n }\n }\n registerEditorTypes(types) {\n if (this.#editorTypes) {\n return;\n }\n this.#editorTypes = types;\n for (const editorType of this.#editorTypes) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n }\n getId() {\n return this.#idManager.getId();\n }\n get currentLayer() {\n return this.#allLayers.get(this.#currentPageIndex);\n }\n getLayer(pageIndex) {\n return this.#allLayers.get(pageIndex);\n }\n get currentPageIndex() {\n return this.#currentPageIndex;\n }\n addLayer(layer) {\n this.#allLayers.set(layer.pageIndex, layer);\n if (this.#isEnabled) {\n layer.enable();\n } else {\n layer.disable();\n }\n }\n removeLayer(layer) {\n this.#allLayers.delete(layer.pageIndex);\n }\n updateMode(mode, editId = null) {\n if (this.#mode === mode) {\n return;\n }\n this.#mode = mode;\n if (mode === _util.AnnotationEditorType.NONE) {\n this.setEditingState(false);\n this.#disableAll();\n return;\n }\n this.setEditingState(true);\n this.#enableAll();\n this.unselectAll();\n for (const layer of this.#allLayers.values()) {\n layer.updateMode(mode);\n }\n if (!editId) {\n return;\n }\n for (const editor of this.#allEditors.values()) {\n if (editor.annotationElementId === editId) {\n this.setSelected(editor);\n editor.enterInEditMode();\n break;\n }\n }\n }\n updateToolbar(mode) {\n if (mode === this.#mode) {\n return;\n }\n this._eventBus.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode\n });\n }\n updateParams(type, value) {\n if (!this.#editorTypes) {\n return;\n }\n if (type === _util.AnnotationEditorParamsType.CREATE) {\n this.currentLayer.addNewEditor(type);\n return;\n }\n for (const editor of this.#selectedEditors) {\n editor.updateParams(type, value);\n }\n for (const editorType of this.#editorTypes) {\n editorType.updateDefaultParams(type, value);\n }\n }\n enableWaiting(mustWait = false) {\n if (this.#isWaiting === mustWait) {\n return;\n }\n this.#isWaiting = mustWait;\n for (const layer of this.#allLayers.values()) {\n if (mustWait) {\n layer.disableClick();\n } else {\n layer.enableClick();\n }\n layer.div.classList.toggle(\"waiting\", mustWait);\n }\n }\n #enableAll() {\n if (!this.#isEnabled) {\n this.#isEnabled = true;\n for (const layer of this.#allLayers.values()) {\n layer.enable();\n }\n }\n }\n #disableAll() {\n this.unselectAll();\n if (this.#isEnabled) {\n this.#isEnabled = false;\n for (const layer of this.#allLayers.values()) {\n layer.disable();\n }\n }\n }\n getEditors(pageIndex) {\n const editors = [];\n for (const editor of this.#allEditors.values()) {\n if (editor.pageIndex === pageIndex) {\n editors.push(editor);\n }\n }\n return editors;\n }\n getEditor(id) {\n return this.#allEditors.get(id);\n }\n addEditor(editor) {\n this.#allEditors.set(editor.id, editor);\n }\n removeEditor(editor) {\n this.#allEditors.delete(editor.id);\n this.unselect(editor);\n if (!editor.annotationElementId || !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)) {\n this.#annotationStorage?.remove(editor.id);\n }\n }\n addDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.add(editor.annotationElementId);\n editor.deleted = true;\n }\n isDeletedAnnotationElement(annotationElementId) {\n return this.#deletedAnnotationsElementIds.has(annotationElementId);\n }\n removeDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);\n editor.deleted = false;\n }\n #addEditorToLayer(editor) {\n const layer = this.#allLayers.get(editor.pageIndex);\n if (layer) {\n layer.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n }\n }\n setActiveEditor(editor) {\n if (this.#activeEditor === editor) {\n return;\n }\n this.#activeEditor = editor;\n if (editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n toggleSelected(editor) {\n if (this.#selectedEditors.has(editor)) {\n this.#selectedEditors.delete(editor);\n editor.unselect();\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n return;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n setSelected(editor) {\n for (const ed of this.#selectedEditors) {\n if (ed !== editor) {\n ed.unselect();\n }\n }\n this.#selectedEditors.clear();\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n isSelected(editor) {\n return this.#selectedEditors.has(editor);\n }\n unselect(editor) {\n editor.unselect();\n this.#selectedEditors.delete(editor);\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n get hasSelection() {\n return this.#selectedEditors.size !== 0;\n }\n undo() {\n this.#commandManager.undo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: true,\n isEmpty: this.#isEmpty()\n });\n }\n redo() {\n this.#commandManager.redo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n isEmpty: this.#isEmpty()\n });\n }\n addCommands(params) {\n this.#commandManager.add(params);\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: false,\n isEmpty: this.#isEmpty()\n });\n }\n #isEmpty() {\n if (this.#allEditors.size === 0) {\n return true;\n }\n if (this.#allEditors.size === 1) {\n for (const editor of this.#allEditors.values()) {\n return editor.isEmpty();\n }\n }\n return false;\n }\n delete() {\n this.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\n const editors = [...this.#selectedEditors];\n const cmd = () => {\n for (const editor of editors) {\n editor.remove();\n }\n };\n const undo = () => {\n for (const editor of editors) {\n this.#addEditorToLayer(editor);\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n commitOrRemove() {\n this.#activeEditor?.commitOrRemove();\n }\n hasSomethingToControl() {\n return this.#activeEditor || this.hasSelection;\n }\n #selectEditors(editors) {\n this.#selectedEditors.clear();\n for (const editor of editors) {\n if (editor.isEmpty()) {\n continue;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n }\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n selectAll() {\n for (const editor of this.#selectedEditors) {\n editor.commit();\n }\n this.#selectEditors(this.#allEditors.values());\n }\n unselectAll() {\n if (this.#activeEditor) {\n this.#activeEditor.commitOrRemove();\n return;\n }\n if (!this.hasSelection) {\n return;\n }\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n this.#dispatchUpdateStates({\n hasSelectedEditor: false\n });\n }\n translateSelectedEditors(x, y, noCommit = false) {\n if (!noCommit) {\n this.commitOrRemove();\n }\n if (!this.hasSelection) {\n return;\n }\n this.#translation[0] += x;\n this.#translation[1] += y;\n const [totalX, totalY] = this.#translation;\n const editors = [...this.#selectedEditors];\n const TIME_TO_WAIT = 1000;\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n }\n this.#translationTimeoutId = setTimeout(() => {\n this.#translationTimeoutId = null;\n this.#translation[0] = this.#translation[1] = 0;\n this.addCommands({\n cmd: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(totalX, totalY);\n }\n }\n },\n undo: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(-totalX, -totalY);\n }\n }\n },\n mustExec: false\n });\n }, TIME_TO_WAIT);\n for (const editor of editors) {\n editor.translateInPage(x, y);\n }\n }\n setUpDragSession() {\n if (!this.hasSelection) {\n return;\n }\n this.disableUserSelect(true);\n this.#draggingEditors = new Map();\n for (const editor of this.#selectedEditors) {\n this.#draggingEditors.set(editor, {\n savedX: editor.x,\n savedY: editor.y,\n savedPageIndex: editor.pageIndex,\n newX: 0,\n newY: 0,\n newPageIndex: -1\n });\n }\n }\n endDragSession() {\n if (!this.#draggingEditors) {\n return false;\n }\n this.disableUserSelect(false);\n const map = this.#draggingEditors;\n this.#draggingEditors = null;\n let mustBeAddedInUndoStack = false;\n for (const [{\n x,\n y,\n pageIndex\n }, value] of map) {\n value.newX = x;\n value.newY = y;\n value.newPageIndex = pageIndex;\n mustBeAddedInUndoStack ||= x !== value.savedX || y !== value.savedY || pageIndex !== value.savedPageIndex;\n }\n if (!mustBeAddedInUndoStack) {\n return false;\n }\n const move = (editor, x, y, pageIndex) => {\n if (this.#allEditors.has(editor.id)) {\n const parent = this.#allLayers.get(pageIndex);\n if (parent) {\n editor._setParentAndPosition(parent, x, y);\n } else {\n editor.pageIndex = pageIndex;\n editor.x = x;\n editor.y = y;\n }\n }\n };\n this.addCommands({\n cmd: () => {\n for (const [editor, {\n newX,\n newY,\n newPageIndex\n }] of map) {\n move(editor, newX, newY, newPageIndex);\n }\n },\n undo: () => {\n for (const [editor, {\n savedX,\n savedY,\n savedPageIndex\n }] of map) {\n move(editor, savedX, savedY, savedPageIndex);\n }\n },\n mustExec: true\n });\n return true;\n }\n dragSelectedEditors(tx, ty) {\n if (!this.#draggingEditors) {\n return;\n }\n for (const editor of this.#draggingEditors.keys()) {\n editor.drag(tx, ty);\n }\n }\n rebuild(editor) {\n if (editor.parent === null) {\n const parent = this.getLayer(editor.pageIndex);\n if (parent) {\n parent.changeParent(editor);\n parent.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n editor.rebuild();\n }\n } else {\n editor.parent.addOrRebuild(editor);\n }\n }\n isActive(editor) {\n return this.#activeEditor === editor;\n }\n getActive() {\n return this.#activeEditor;\n }\n getMode() {\n return this.#mode;\n }\n get imageManager() {\n return (0, _util.shadow)(this, \"imageManager\", new ImageManager());\n }\n}\nexports.AnnotationEditorUIManager = AnnotationEditorUIManager;\n\n/***/ }),\n/* 6 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.StatTimer = exports.RenderingCancelledException = exports.PixelsPerInch = exports.PageViewport = exports.PDFDateString = exports.DOMStandardFontDataFactory = exports.DOMSVGFactory = exports.DOMFilterFactory = exports.DOMCanvasFactory = exports.DOMCMapReaderFactory = void 0;\nexports.deprecated = deprecated;\nexports.getColorValues = getColorValues;\nexports.getCurrentTransform = getCurrentTransform;\nexports.getCurrentTransformInverse = getCurrentTransformInverse;\nexports.getFilenameFromUrl = getFilenameFromUrl;\nexports.getPdfFilenameFromUrl = getPdfFilenameFromUrl;\nexports.getRGB = getRGB;\nexports.getXfaPageViewport = getXfaPageViewport;\nexports.isDataScheme = isDataScheme;\nexports.isPdfFile = isPdfFile;\nexports.isValidFetchUrl = isValidFetchUrl;\nexports.loadScript = loadScript;\nexports.noContextMenu = noContextMenu;\nexports.setLayerDimensions = setLayerDimensions;\nvar _base_factory = __w_pdfjs_require__(7);\nvar _util = __w_pdfjs_require__(1);\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nclass PixelsPerInch {\n static CSS = 96.0;\n static PDF = 72.0;\n static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\nexports.PixelsPerInch = PixelsPerInch;\nclass DOMFilterFactory extends _base_factory.BaseFilterFactory {\n #_cache;\n #_defs;\n #docId;\n #document;\n #hcmFilter;\n #hcmKey;\n #hcmUrl;\n #hcmHighlightFilter;\n #hcmHighlightKey;\n #hcmHighlightUrl;\n #id = 0;\n constructor({\n docId,\n ownerDocument = globalThis.document\n } = {}) {\n super();\n this.#docId = docId;\n this.#document = ownerDocument;\n }\n get #cache() {\n return this.#_cache ||= new Map();\n }\n get #defs() {\n if (!this.#_defs) {\n const div = this.#document.createElement(\"div\");\n const {\n style\n } = div;\n style.visibility = \"hidden\";\n style.contain = \"strict\";\n style.width = style.height = 0;\n style.position = \"absolute\";\n style.top = style.left = 0;\n style.zIndex = -1;\n const svg = this.#document.createElementNS(SVG_NS, \"svg\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n this.#_defs = this.#document.createElementNS(SVG_NS, \"defs\");\n div.append(svg);\n svg.append(this.#_defs);\n this.#document.body.append(div);\n }\n return this.#_defs;\n }\n addFilter(maps) {\n if (!maps) {\n return \"none\";\n }\n let value = this.#cache.get(maps);\n if (value) {\n return value;\n }\n let tableR, tableG, tableB, key;\n if (maps.length === 1) {\n const mapR = maps[0];\n const buffer = new Array(256);\n for (let i = 0; i < 256; i++) {\n buffer[i] = mapR[i] / 255;\n }\n key = tableR = tableG = tableB = buffer.join(\",\");\n } else {\n const [mapR, mapG, mapB] = maps;\n const bufferR = new Array(256);\n const bufferG = new Array(256);\n const bufferB = new Array(256);\n for (let i = 0; i < 256; i++) {\n bufferR[i] = mapR[i] / 255;\n bufferG[i] = mapG[i] / 255;\n bufferB[i] = mapB[i] / 255;\n }\n tableR = bufferR.join(\",\");\n tableG = bufferG.join(\",\");\n tableB = bufferB.join(\",\");\n key = `${tableR}${tableG}${tableB}`;\n }\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(maps, value);\n return value;\n }\n const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n const url = `url(#${id})`;\n this.#cache.set(maps, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n return url;\n }\n addHCMFilter(fgColor, bgColor) {\n const key = `${fgColor}-${bgColor}`;\n if (this.#hcmKey === key) {\n return this.#hcmUrl;\n }\n this.#hcmKey = key;\n this.#hcmUrl = \"none\";\n this.#hcmFilter?.remove();\n if (!fgColor || !bgColor) {\n return this.#hcmUrl;\n }\n const fgRGB = this.#getRGB(fgColor);\n fgColor = _util.Util.makeHexColor(...fgRGB);\n const bgRGB = this.#getRGB(bgColor);\n bgColor = _util.Util.makeHexColor(...bgRGB);\n this.#defs.style.color = \"\";\n if (fgColor === \"#000000\" && bgColor === \"#ffffff\" || fgColor === bgColor) {\n return this.#hcmUrl;\n }\n const map = new Array(256);\n for (let i = 0; i <= 255; i++) {\n const x = i / 255;\n map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n }\n const table = map.join(\",\");\n const id = `g_${this.#docId}_hcm_filter`;\n const filter = this.#hcmHighlightFilter = this.#createFilter(id);\n this.#addTransferMapConversion(table, table, table, filter);\n this.#addGrayConversion(filter);\n const getSteps = (c, n) => {\n const start = fgRGB[c] / 255;\n const end = bgRGB[c] / 255;\n const arr = new Array(n + 1);\n for (let i = 0; i <= n; i++) {\n arr[i] = start + i / n * (end - start);\n }\n return arr.join(\",\");\n };\n this.#addTransferMapConversion(getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), filter);\n this.#hcmUrl = `url(#${id})`;\n return this.#hcmUrl;\n }\n addHighlightHCMFilter(fgColor, bgColor, newFgColor, newBgColor) {\n const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\n if (this.#hcmHighlightKey === key) {\n return this.#hcmHighlightUrl;\n }\n this.#hcmHighlightKey = key;\n this.#hcmHighlightUrl = \"none\";\n this.#hcmHighlightFilter?.remove();\n if (!fgColor || !bgColor) {\n return this.#hcmHighlightUrl;\n }\n const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n let fgGray = Math.round(0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]);\n let bgGray = Math.round(0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]);\n let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(this.#getRGB.bind(this));\n if (bgGray < fgGray) {\n [fgGray, bgGray, newFgRGB, newBgRGB] = [bgGray, fgGray, newBgRGB, newFgRGB];\n }\n this.#defs.style.color = \"\";\n const getSteps = (fg, bg, n) => {\n const arr = new Array(256);\n const step = (bgGray - fgGray) / n;\n const newStart = fg / 255;\n const newStep = (bg - fg) / (255 * n);\n let prev = 0;\n for (let i = 0; i <= n; i++) {\n const k = Math.round(fgGray + i * step);\n const value = newStart + i * newStep;\n for (let j = prev; j <= k; j++) {\n arr[j] = value;\n }\n prev = k + 1;\n }\n for (let i = prev; i < 256; i++) {\n arr[i] = arr[prev - 1];\n }\n return arr.join(\",\");\n };\n const id = `g_${this.#docId}_hcm_highlight_filter`;\n const filter = this.#hcmHighlightFilter = this.#createFilter(id);\n this.#addGrayConversion(filter);\n this.#addTransferMapConversion(getSteps(newFgRGB[0], newBgRGB[0], 5), getSteps(newFgRGB[1], newBgRGB[1], 5), getSteps(newFgRGB[2], newBgRGB[2], 5), filter);\n this.#hcmHighlightUrl = `url(#${id})`;\n return this.#hcmHighlightUrl;\n }\n destroy(keepHCM = false) {\n if (keepHCM && (this.#hcmUrl || this.#hcmHighlightUrl)) {\n return;\n }\n if (this.#_defs) {\n this.#_defs.parentNode.parentNode.remove();\n this.#_defs = null;\n }\n if (this.#_cache) {\n this.#_cache.clear();\n this.#_cache = null;\n }\n this.#id = 0;\n }\n #addGrayConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\");\n filter.append(feColorMatrix);\n }\n #createFilter(id) {\n const filter = this.#document.createElementNS(SVG_NS, \"filter\");\n filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n filter.setAttribute(\"id\", id);\n this.#defs.append(filter);\n return filter;\n }\n #appendFeFunc(feComponentTransfer, func, table) {\n const feFunc = this.#document.createElementNS(SVG_NS, func);\n feFunc.setAttribute(\"type\", \"discrete\");\n feFunc.setAttribute(\"tableValues\", table);\n feComponentTransfer.append(feFunc);\n }\n #addTransferMapConversion(rTable, gTable, bTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n }\n #getRGB(color) {\n this.#defs.style.color = color;\n return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"color\"));\n }\n}\nexports.DOMFilterFactory = DOMFilterFactory;\nclass DOMCanvasFactory extends _base_factory.BaseCanvasFactory {\n constructor({\n ownerDocument = globalThis.document\n } = {}) {\n super();\n this._document = ownerDocument;\n }\n _createCanvas(width, height) {\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n}\nexports.DOMCanvasFactory = DOMCanvasFactory;\nasync function fetchData(url, asTypedArray = false) {\n if (isValidFetchUrl(url, document.baseURI)) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n return asTypedArray ? new Uint8Array(await response.arrayBuffer()) : (0, _util.stringToBytes)(await response.text());\n }\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n if (asTypedArray) {\n request.responseType = \"arraybuffer\";\n }\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n let data;\n if (asTypedArray && request.response) {\n data = new Uint8Array(request.response);\n } else if (!asTypedArray && request.responseText) {\n data = (0, _util.stringToBytes)(request.responseText);\n }\n if (data) {\n resolve(data);\n return;\n }\n }\n reject(new Error(request.statusText));\n };\n request.send(null);\n });\n}\nclass DOMCMapReaderFactory extends _base_factory.BaseCMapReaderFactory {\n _fetchData(url, compressionType) {\n return fetchData(url, this.isCompressed).then(data => {\n return {\n cMapData: data,\n compressionType\n };\n });\n }\n}\nexports.DOMCMapReaderFactory = DOMCMapReaderFactory;\nclass DOMStandardFontDataFactory extends _base_factory.BaseStandardFontDataFactory {\n _fetchData(url) {\n return fetchData(url, true);\n }\n}\nexports.DOMStandardFontDataFactory = DOMStandardFontDataFactory;\nclass DOMSVGFactory extends _base_factory.BaseSVGFactory {\n _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n}\nexports.DOMSVGFactory = DOMSVGFactory;\nclass PageViewport {\n constructor({\n viewBox,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n }) {\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n default:\n throw new Error(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n }\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = (viewBox[3] - viewBox[1]) * scale;\n height = (viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = (viewBox[2] - viewBox[0]) * scale;\n height = (viewBox[3] - viewBox[1]) * scale;\n }\n this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];\n this.width = width;\n this.height = height;\n }\n get rawDims() {\n const {\n viewBox\n } = this;\n return (0, _util.shadow)(this, \"rawDims\", {\n pageWidth: viewBox[2] - viewBox[0],\n pageHeight: viewBox[3] - viewBox[1],\n pageX: viewBox[0],\n pageY: viewBox[1]\n });\n }\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n convertToViewportPoint(x, y) {\n return _util.Util.applyTransform([x, y], this.transform);\n }\n convertToViewportRectangle(rect) {\n const topLeft = _util.Util.applyTransform([rect[0], rect[1]], this.transform);\n const bottomRight = _util.Util.applyTransform([rect[2], rect[3]], this.transform);\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n convertToPdfPoint(x, y) {\n return _util.Util.applyInverseTransform([x, y], this.transform);\n }\n}\nexports.PageViewport = PageViewport;\nclass RenderingCancelledException extends _util.BaseException {\n constructor(msg, extraDelay = 0) {\n super(msg, \"RenderingCancelledException\");\n this.extraDelay = extraDelay;\n }\n}\nexports.RenderingCancelledException = RenderingCancelledException;\nfunction isDataScheme(url) {\n const ii = url.length;\n let i = 0;\n while (i < ii && url[i].trim() === \"\") {\n i++;\n }\n return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\nfunction getFilenameFromUrl(url, onlyStripPath = false) {\n if (!onlyStripPath) {\n [url] = url.split(/[#?]/, 1);\n }\n return url.substring(url.lastIndexOf(\"/\") + 1);\n}\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n if (typeof url !== \"string\") {\n return defaultFilename;\n }\n if (isDataScheme(url)) {\n (0, _util.warn)('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return defaultFilename;\n }\n const reURI = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const splitURI = reURI.exec(url);\n let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]);\n if (suggestedFilename) {\n suggestedFilename = suggestedFilename[0];\n if (suggestedFilename.includes(\"%\")) {\n try {\n suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];\n } catch {}\n }\n }\n return suggestedFilename || defaultFilename;\n}\nclass StatTimer {\n started = Object.create(null);\n times = [];\n time(name) {\n if (name in this.started) {\n (0, _util.warn)(`Timer is already running for ${name}`);\n }\n this.started[name] = Date.now();\n }\n timeEnd(name) {\n if (!(name in this.started)) {\n (0, _util.warn)(`Timer has not been started for ${name}`);\n }\n this.times.push({\n name,\n start: this.started[name],\n end: Date.now()\n });\n delete this.started[name];\n }\n toString() {\n const outBuf = [];\n let longest = 0;\n for (const {\n name\n } of this.times) {\n longest = Math.max(name.length, longest);\n }\n for (const {\n name,\n start,\n end\n } of this.times) {\n outBuf.push(`${name.padEnd(longest)} ${end - start}ms\\n`);\n }\n return outBuf.join(\"\");\n }\n}\nexports.StatTimer = StatTimer;\nfunction isValidFetchUrl(url, baseUrl) {\n try {\n const {\n protocol\n } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n return protocol === \"http:\" || protocol === \"https:\";\n } catch {\n return false;\n }\n}\nfunction noContextMenu(e) {\n e.preventDefault();\n}\nfunction loadScript(src, removeScriptElement = false) {\n return new Promise((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = src;\n script.onload = function (evt) {\n if (removeScriptElement) {\n script.remove();\n }\n resolve(evt);\n };\n script.onerror = function () {\n reject(new Error(`Cannot load script at: ${script.src}`));\n };\n (document.head || document.documentElement).append(script);\n });\n}\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\nlet pdfDateStringRegex;\nclass PDFDateString {\n static toDateObject(input) {\n if (!input || typeof input !== \"string\") {\n return null;\n }\n pdfDateStringRegex ||= new RegExp(\"^D:\" + \"(\\\\d{4})\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"([Z|+|-])?\" + \"(\\\\d{2})?\" + \"'?\" + \"(\\\\d{2})?\" + \"'?\");\n const matches = pdfDateStringRegex.exec(input);\n if (!matches) {\n return null;\n }\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\nexports.PDFDateString = PDFDateString;\nfunction getXfaPageViewport(xfaPage, {\n scale = 1,\n rotation = 0\n}) {\n const {\n width,\n height\n } = xfaPage.attributes.style;\n const viewBox = [0, 0, parseInt(width), parseInt(height)];\n return new PageViewport({\n viewBox,\n scale,\n rotation\n });\n}\nfunction getRGB(color) {\n if (color.startsWith(\"#\")) {\n const colorRGB = parseInt(color.slice(1), 16);\n return [(colorRGB & 0xff0000) >> 16, (colorRGB & 0x00ff00) >> 8, colorRGB & 0x0000ff];\n }\n if (color.startsWith(\"rgb(\")) {\n return color.slice(4, -1).split(\",\").map(x => parseInt(x));\n }\n if (color.startsWith(\"rgba(\")) {\n return color.slice(5, -1).split(\",\").map(x => parseInt(x)).slice(0, 3);\n }\n (0, _util.warn)(`Not a valid color format: \"${color}\"`);\n return [0, 0, 0];\n}\nfunction getColorValues(colors) {\n const span = document.createElement(\"span\");\n span.style.visibility = \"hidden\";\n document.body.append(span);\n for (const name of colors.keys()) {\n span.style.color = name;\n const computedColor = window.getComputedStyle(span).color;\n colors.set(name, getRGB(computedColor));\n }\n span.remove();\n}\nfunction getCurrentTransform(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform();\n return [a, b, c, d, e, f];\n}\nfunction getCurrentTransformInverse(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform().invertSelf();\n return [a, b, c, d, e, f];\n}\nfunction setLayerDimensions(div, viewport, mustFlip = false, mustRotate = true) {\n if (viewport instanceof PageViewport) {\n const {\n pageWidth,\n pageHeight\n } = viewport.rawDims;\n const {\n style\n } = div;\n const useRound = _util.FeatureTest.isCSSRoundSupported;\n const w = `var(--scale-factor) * ${pageWidth}px`,\n h = `var(--scale-factor) * ${pageHeight}px`;\n const widthStr = useRound ? `round(${w}, 1px)` : `calc(${w})`,\n heightStr = useRound ? `round(${h}, 1px)` : `calc(${h})`;\n if (!mustFlip || viewport.rotation % 180 === 0) {\n style.width = widthStr;\n style.height = heightStr;\n } else {\n style.width = heightStr;\n style.height = widthStr;\n }\n }\n if (mustRotate) {\n div.setAttribute(\"data-main-rotation\", viewport.rotation);\n }\n}\n\n/***/ }),\n/* 7 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.BaseStandardFontDataFactory = exports.BaseSVGFactory = exports.BaseFilterFactory = exports.BaseCanvasFactory = exports.BaseCMapReaderFactory = void 0;\nvar _util = __w_pdfjs_require__(1);\nclass BaseFilterFactory {\n constructor() {\n if (this.constructor === BaseFilterFactory) {\n (0, _util.unreachable)(\"Cannot initialize BaseFilterFactory.\");\n }\n }\n addFilter(maps) {\n return \"none\";\n }\n addHCMFilter(fgColor, bgColor) {\n return \"none\";\n }\n addHighlightHCMFilter(fgColor, bgColor, newFgColor, newBgColor) {\n return \"none\";\n }\n destroy(keepHCM = false) {}\n}\nexports.BaseFilterFactory = BaseFilterFactory;\nclass BaseCanvasFactory {\n constructor() {\n if (this.constructor === BaseCanvasFactory) {\n (0, _util.unreachable)(\"Cannot initialize BaseCanvasFactory.\");\n }\n }\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n const canvas = this._createCanvas(width, height);\n return {\n canvas,\n context: canvas.getContext(\"2d\")\n };\n }\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n _createCanvas(width, height) {\n (0, _util.unreachable)(\"Abstract method `_createCanvas` called.\");\n }\n}\nexports.BaseCanvasFactory = BaseCanvasFactory;\nclass BaseCMapReaderFactory {\n constructor({\n baseUrl = null,\n isCompressed = true\n }) {\n if (this.constructor === BaseCMapReaderFactory) {\n (0, _util.unreachable)(\"Cannot initialize BaseCMapReaderFactory.\");\n }\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n async fetch({\n name\n }) {\n if (!this.baseUrl) {\n throw new Error('The CMap \"baseUrl\" parameter must be specified, ensure that ' + 'the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.');\n }\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n const compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE;\n return this._fetchData(url, compressionType).catch(reason => {\n throw new Error(`Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`);\n });\n }\n _fetchData(url, compressionType) {\n (0, _util.unreachable)(\"Abstract method `_fetchData` called.\");\n }\n}\nexports.BaseCMapReaderFactory = BaseCMapReaderFactory;\nclass BaseStandardFontDataFactory {\n constructor({\n baseUrl = null\n }) {\n if (this.constructor === BaseStandardFontDataFactory) {\n (0, _util.unreachable)(\"Cannot initialize BaseStandardFontDataFactory.\");\n }\n this.baseUrl = baseUrl;\n }\n async fetch({\n filename\n }) {\n if (!this.baseUrl) {\n throw new Error('The standard font \"baseUrl\" parameter must be specified, ensure that ' + 'the \"standardFontDataUrl\" API parameter is provided.');\n }\n if (!filename) {\n throw new Error(\"Font filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n return this._fetchData(url).catch(reason => {\n throw new Error(`Unable to load font data at: ${url}`);\n });\n }\n _fetchData(url) {\n (0, _util.unreachable)(\"Abstract method `_fetchData` called.\");\n }\n}\nexports.BaseStandardFontDataFactory = BaseStandardFontDataFactory;\nclass BaseSVGFactory {\n constructor() {\n if (this.constructor === BaseSVGFactory) {\n (0, _util.unreachable)(\"Cannot initialize BaseSVGFactory.\");\n }\n }\n create(width, height, skipDimensions = false) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid SVG dimensions\");\n }\n const svg = this._createSVG(\"svg:svg\");\n svg.setAttribute(\"version\", \"1.1\");\n if (!skipDimensions) {\n svg.setAttribute(\"width\", `${width}px`);\n svg.setAttribute(\"height\", `${height}px`);\n }\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n return svg;\n }\n createElement(type) {\n if (typeof type !== \"string\") {\n throw new Error(\"Invalid SVG element type\");\n }\n return this._createSVG(type);\n }\n _createSVG(type) {\n (0, _util.unreachable)(\"Abstract method `_createSVG` called.\");\n }\n}\nexports.BaseSVGFactory = BaseSVGFactory;\n\n/***/ }),\n/* 8 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.MurmurHash3_64 = void 0;\nvar _util = __w_pdfjs_require__(1);\nconst SEED = 0xc3d2e1f0;\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n update(input) {\n let data, length;\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if ((0, _util.isArrayBuffer)(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\"Wrong data format in MurmurHash3_64_update. \" + \"Input must be a string or array.\");\n }\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n h1 ^= k1;\n h1 = h1 << 13 | h1 >>> 19;\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;\n k2 = k2 << 15 | k2 >>> 17;\n k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;\n h2 ^= k2;\n h2 = h2 << 13 | h2 >>> 19;\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n k1 = 0;\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n case 1:\n k1 ^= data[blockCounts * 4];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n this.h1 = h1;\n this.h2 = h2;\n }\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n return (h1 >>> 0).toString(16).padStart(8, \"0\") + (h2 >>> 0).toString(16).padStart(8, \"0\");\n }\n}\nexports.MurmurHash3_64 = MurmurHash3_64;\n\n/***/ }),\n/* 9 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.FontLoader = exports.FontFaceObject = void 0;\nvar _util = __w_pdfjs_require__(1);\nclass FontLoader {\n #systemFonts = new Set();\n constructor({\n ownerDocument = globalThis.document,\n styleElement = null\n }) {\n this._document = ownerDocument;\n this.nativeFontFaces = new Set();\n this.styleElement = null;\n this.loadingRequests = [];\n this.loadTestFontId = 0;\n }\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.add(nativeFontFace);\n this._document.fonts.add(nativeFontFace);\n }\n removeNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.delete(nativeFontFace);\n this._document.fonts.delete(nativeFontFace);\n }\n insertRule(rule) {\n if (!this.styleElement) {\n this.styleElement = this._document.createElement(\"style\");\n this._document.documentElement.getElementsByTagName(\"head\")[0].append(this.styleElement);\n }\n const styleSheet = this.styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n clear() {\n for (const nativeFontFace of this.nativeFontFaces) {\n this._document.fonts.delete(nativeFontFace);\n }\n this.nativeFontFaces.clear();\n this.#systemFonts.clear();\n if (this.styleElement) {\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n async loadSystemFont(info) {\n if (!info || this.#systemFonts.has(info.loadedName)) {\n return;\n }\n (0, _util.assert)(!this.disableFontFace, \"loadSystemFont shouldn't be called when `disableFontFace` is set.\");\n if (this.isFontLoadingAPISupported) {\n const {\n loadedName,\n src,\n style\n } = info;\n const fontFace = new FontFace(loadedName, src, style);\n this.addNativeFontFace(fontFace);\n try {\n await fontFace.load();\n this.#systemFonts.add(loadedName);\n } catch {\n (0, _util.warn)(`Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`);\n this.removeNativeFontFace(fontFace);\n }\n return;\n }\n (0, _util.unreachable)(\"Not implemented: loadSystemFont without the Font Loading API.\");\n }\n async bind(font) {\n if (font.attached || font.missingFile && !font.systemFontInfo) {\n return;\n }\n font.attached = true;\n if (font.systemFontInfo) {\n await this.loadSystemFont(font.systemFontInfo);\n return;\n }\n if (this.isFontLoadingAPISupported) {\n const nativeFontFace = font.createNativeFontFace();\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n try {\n await nativeFontFace.loaded;\n } catch (ex) {\n (0, _util.warn)(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n font.disableFontFace = true;\n throw ex;\n }\n }\n return;\n }\n const rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n if (this.isSyncFontLoadingSupported) {\n return;\n }\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n this._prepareFontLoadEvent(font, request);\n });\n }\n }\n get isFontLoadingAPISupported() {\n const hasFonts = !!this._document?.fonts;\n return (0, _util.shadow)(this, \"isFontLoadingAPISupported\", hasFonts);\n }\n get isSyncFontLoadingSupported() {\n let supported = false;\n if (_util.isNodeJS) {\n supported = true;\n } else if (typeof navigator !== \"undefined\" && /Mozilla\\/5.0.*?rv:\\d+.*? Gecko/.test(navigator.userAgent)) {\n supported = true;\n }\n return (0, _util.shadow)(this, \"isSyncFontLoadingSupported\", supported);\n }\n _queueLoadingCallback(callback) {\n function completeRequest() {\n (0, _util.assert)(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n while (loadingRequests.length > 0 && loadingRequests[0].done) {\n const otherRequest = loadingRequests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n const {\n loadingRequests\n } = this;\n const request = {\n done: false,\n complete: completeRequest,\n callback\n };\n loadingRequests.push(request);\n return request;\n }\n get _loadTestFont() {\n const testFont = atob(\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" + \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" + \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" + \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" + \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" + \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" + \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" + \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" + \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" + \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" + \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" + \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" + \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" + \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" + \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" + \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" + \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\");\n return (0, _util.shadow)(this, \"_loadTestFont\", testFont);\n }\n _prepareFontLoadEvent(font, request) {\n function int32(data, offset) {\n return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;\n }\n function spliceString(s, offset, remove, insert) {\n const chunk1 = s.substring(0, offset);\n const chunk2 = s.substring(offset + remove);\n return chunk1 + insert + chunk2;\n }\n let i, ii;\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n let called = 0;\n function isFontReady(name, callback) {\n if (++called > 30) {\n (0, _util.warn)(\"Load test font never loaded.\");\n callback();\n return;\n }\n ctx.font = \"30px \" + name;\n ctx.fillText(\".\", 0, 20);\n const imageData = ctx.getImageData(0, 0, 1, 1);\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n setTimeout(isFontReady.bind(null, name, callback));\n }\n const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976;\n data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 0x58585858;\n let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;\n }\n if (i < loadTestFontId.length) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum));\n const url = `url(data:font/opentype;base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n this.insertRule(rule);\n const div = this._document.createElement(\"div\");\n div.style.visibility = \"hidden\";\n div.style.width = div.style.height = \"10px\";\n div.style.position = \"absolute\";\n div.style.top = div.style.left = \"0px\";\n for (const name of [font.loadedName, loadTestFontId]) {\n const span = this._document.createElement(\"span\");\n span.textContent = \"Hi\";\n span.style.fontFamily = name;\n div.append(span);\n }\n this._document.body.append(div);\n isFontReady(loadTestFontId, () => {\n div.remove();\n request.complete();\n });\n }\n}\nexports.FontLoader = FontLoader;\nclass FontFaceObject {\n constructor(translatedData, {\n isEvalSupported = true,\n disableFontFace = false,\n ignoreErrors = false,\n inspectFont = null\n }) {\n this.compiledGlyphs = Object.create(null);\n for (const i in translatedData) {\n this[i] = translatedData[i];\n }\n this.isEvalSupported = isEvalSupported !== false;\n this.disableFontFace = disableFontFace === true;\n this.ignoreErrors = ignoreErrors === true;\n this._inspectFont = inspectFont;\n }\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n let nativeFontFace;\n if (!this.cssFontInfo) {\n nativeFontFace = new FontFace(this.loadedName, this.data, {});\n } else {\n const css = {\n weight: this.cssFontInfo.fontWeight\n };\n if (this.cssFontInfo.italicAngle) {\n css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n }\n nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css);\n }\n this._inspectFont?.(this);\n return nativeFontFace;\n }\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const data = (0, _util.bytesToString)(this.data);\n const url = `url(data:${this.mimetype};base64,${btoa(data)});`;\n let rule;\n if (!this.cssFontInfo) {\n rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n } else {\n let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n if (this.cssFontInfo.italicAngle) {\n css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n }\n rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n }\n this._inspectFont?.(this, url);\n return rule;\n }\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n let cmds;\n try {\n cmds = objs.get(this.loadedName + \"_path_\" + character);\n } catch (ex) {\n if (!this.ignoreErrors) {\n throw ex;\n }\n (0, _util.warn)(`getPathGenerator - ignoring character: \"${ex}\".`);\n return this.compiledGlyphs[character] = function (c, size) {};\n }\n if (this.isEvalSupported && _util.FeatureTest.isEvalSupported) {\n const jsBuf = [];\n for (const current of cmds) {\n const args = current.args !== undefined ? current.args.join(\",\") : \"\";\n jsBuf.push(\"c.\", current.cmd, \"(\", args, \");\\n\");\n }\n return this.compiledGlyphs[character] = new Function(\"c\", \"size\", jsBuf.join(\"\"));\n }\n return this.compiledGlyphs[character] = function (c, size) {\n for (const current of cmds) {\n if (current.cmd === \"scale\") {\n current.args = [size, -size];\n }\n c[current.cmd].apply(c, current.args);\n }\n };\n }\n}\nexports.FontFaceObject = FontFaceObject;\n\n/***/ }),\n/* 10 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.NodeStandardFontDataFactory = exports.NodeFilterFactory = exports.NodeCanvasFactory = exports.NodeCMapReaderFactory = void 0;\nvar _base_factory = __w_pdfjs_require__(7);\nvar _util = __w_pdfjs_require__(1);\n;\n;\nconst fetchData = function (url) {\n return new Promise((resolve, reject) => {\n const fs = require(\"fs\");\n fs.readFile(url, (error, data) => {\n if (error || !data) {\n reject(new Error(error));\n return;\n }\n resolve(new Uint8Array(data));\n });\n });\n};\nclass NodeFilterFactory extends _base_factory.BaseFilterFactory {}\nexports.NodeFilterFactory = NodeFilterFactory;\nclass NodeCanvasFactory extends _base_factory.BaseCanvasFactory {\n _createCanvas(width, height) {\n const Canvas = require(\"canvas\");\n return Canvas.createCanvas(width, height);\n }\n}\nexports.NodeCanvasFactory = NodeCanvasFactory;\nclass NodeCMapReaderFactory extends _base_factory.BaseCMapReaderFactory {\n _fetchData(url, compressionType) {\n return fetchData(url).then(data => {\n return {\n cMapData: data,\n compressionType\n };\n });\n }\n}\nexports.NodeCMapReaderFactory = NodeCMapReaderFactory;\nclass NodeStandardFontDataFactory extends _base_factory.BaseStandardFontDataFactory {\n _fetchData(url) {\n return fetchData(url);\n }\n}\nexports.NodeStandardFontDataFactory = NodeStandardFontDataFactory;\n\n/***/ }),\n/* 11 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.CanvasGraphics = void 0;\nvar _util = __w_pdfjs_require__(1);\nvar _display_utils = __w_pdfjs_require__(6);\nvar _pattern_helper = __w_pdfjs_require__(12);\nvar _image_utils = __w_pdfjs_require__(13);\nconst MIN_FONT_SIZE = 16;\nconst MAX_FONT_SIZE = 100;\nconst MAX_GROUP_SIZE = 4096;\nconst EXECUTION_TIME = 15;\nconst EXECUTION_STEPS = 10;\nconst MAX_SIZE_TO_COMPILE = 1000;\nconst FULL_CHUNK_HEIGHT = 16;\nfunction mirrorContextOperations(ctx, destCtx) {\n if (ctx._removeMirroring) {\n throw new Error(\"Context is already forwarding operations.\");\n }\n ctx.__originalSave = ctx.save;\n ctx.__originalRestore = ctx.restore;\n ctx.__originalRotate = ctx.rotate;\n ctx.__originalScale = ctx.scale;\n ctx.__originalTranslate = ctx.translate;\n ctx.__originalTransform = ctx.transform;\n ctx.__originalSetTransform = ctx.setTransform;\n ctx.__originalResetTransform = ctx.resetTransform;\n ctx.__originalClip = ctx.clip;\n ctx.__originalMoveTo = ctx.moveTo;\n ctx.__originalLineTo = ctx.lineTo;\n ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n ctx.__originalRect = ctx.rect;\n ctx.__originalClosePath = ctx.closePath;\n ctx.__originalBeginPath = ctx.beginPath;\n ctx._removeMirroring = () => {\n ctx.save = ctx.__originalSave;\n ctx.restore = ctx.__originalRestore;\n ctx.rotate = ctx.__originalRotate;\n ctx.scale = ctx.__originalScale;\n ctx.translate = ctx.__originalTranslate;\n ctx.transform = ctx.__originalTransform;\n ctx.setTransform = ctx.__originalSetTransform;\n ctx.resetTransform = ctx.__originalResetTransform;\n ctx.clip = ctx.__originalClip;\n ctx.moveTo = ctx.__originalMoveTo;\n ctx.lineTo = ctx.__originalLineTo;\n ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\n ctx.rect = ctx.__originalRect;\n ctx.closePath = ctx.__originalClosePath;\n ctx.beginPath = ctx.__originalBeginPath;\n delete ctx._removeMirroring;\n };\n ctx.save = function ctxSave() {\n destCtx.save();\n this.__originalSave();\n };\n ctx.restore = function ctxRestore() {\n destCtx.restore();\n this.__originalRestore();\n };\n ctx.translate = function ctxTranslate(x, y) {\n destCtx.translate(x, y);\n this.__originalTranslate(x, y);\n };\n ctx.scale = function ctxScale(x, y) {\n destCtx.scale(x, y);\n this.__originalScale(x, y);\n };\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n destCtx.transform(a, b, c, d, e, f);\n this.__originalTransform(a, b, c, d, e, f);\n };\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n destCtx.setTransform(a, b, c, d, e, f);\n this.__originalSetTransform(a, b, c, d, e, f);\n };\n ctx.resetTransform = function ctxResetTransform() {\n destCtx.resetTransform();\n this.__originalResetTransform();\n };\n ctx.rotate = function ctxRotate(angle) {\n destCtx.rotate(angle);\n this.__originalRotate(angle);\n };\n ctx.clip = function ctxRotate(rule) {\n destCtx.clip(rule);\n this.__originalClip(rule);\n };\n ctx.moveTo = function (x, y) {\n destCtx.moveTo(x, y);\n this.__originalMoveTo(x, y);\n };\n ctx.lineTo = function (x, y) {\n destCtx.lineTo(x, y);\n this.__originalLineTo(x, y);\n };\n ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n };\n ctx.rect = function (x, y, width, height) {\n destCtx.rect(x, y, width, height);\n this.__originalRect(x, y, width, height);\n };\n ctx.closePath = function () {\n destCtx.closePath();\n this.__originalClosePath();\n };\n ctx.beginPath = function () {\n destCtx.beginPath();\n this.__originalBeginPath();\n };\n}\nclass CachedCanvases {\n constructor(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n getCanvas(id, width, height) {\n let canvasEntry;\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n return canvasEntry;\n }\n delete(id) {\n delete this.cache[id];\n }\n clear() {\n for (const id in this.cache) {\n const canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n }\n}\nfunction drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) {\n const [a, b, c, d, tx, ty] = (0, _display_utils.getCurrentTransform)(ctx);\n if (b === 0 && c === 0) {\n const tlX = destX * a + tx;\n const rTlX = Math.round(tlX);\n const tlY = destY * d + ty;\n const rTlY = Math.round(tlY);\n const brX = (destX + destW) * a + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destY + destH) * d + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rWidth, rHeight];\n }\n if (a === 0 && d === 0) {\n const tlX = destY * c + tx;\n const rTlX = Math.round(tlX);\n const tlY = destX * b + ty;\n const rTlY = Math.round(tlY);\n const brX = (destY + destH) * c + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destX + destW) * b + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rHeight, rWidth];\n }\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n const scaleX = Math.hypot(a, b);\n const scaleY = Math.hypot(c, d);\n return [scaleX * destW, scaleY * destH];\n}\nfunction compileType3Glyph(imgData) {\n const {\n width,\n height\n } = imgData;\n if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {\n return null;\n }\n const POINT_TO_PROCESS_LIMIT = 1000;\n const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n const width1 = width + 1;\n let points = new Uint8Array(width1 * (height + 1));\n let i, j, j0;\n const lineSize = width + 7 & ~7;\n let data = new Uint8Array(lineSize * height),\n pos = 0;\n for (const elem of imgData.data) {\n let mask = 128;\n while (mask > 0) {\n data[pos++] = elem & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n let count = 0;\n pos = 0;\n if (data[pos] !== 0) {\n points[0] = 1;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j] = data[pos] ? 2 : 1;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j] = 2;\n ++count;\n }\n for (i = 1; i < height; i++) {\n pos = i * lineSize;\n j0 = i * width1;\n if (data[pos - lineSize] !== data[pos]) {\n points[j0] = data[pos] ? 1 : 8;\n ++count;\n }\n let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n for (j = 1; j < width; j++) {\n sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);\n if (POINT_TYPES[sum]) {\n points[j0 + j] = POINT_TYPES[sum];\n ++count;\n }\n pos++;\n }\n if (data[pos - lineSize] !== data[pos]) {\n points[j0 + j] = data[pos] ? 2 : 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n }\n pos = lineSize * (height - 1);\n j0 = i * width1;\n if (data[pos] !== 0) {\n points[j0] = 8;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j0 + j] = data[pos] ? 4 : 8;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j0 + j] = 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n const path = new Path2D();\n for (i = 0; count && i <= height; i++) {\n let p = i * width1;\n const end = p + width;\n while (p < end && !points[p]) {\n p++;\n }\n if (p === end) {\n continue;\n }\n path.moveTo(p % width1, i);\n const p0 = p;\n let type = points[p];\n do {\n const step = steps[type];\n do {\n p += step;\n } while (!points[p]);\n const pp = points[p];\n if (pp !== 5 && pp !== 10) {\n type = pp;\n points[p] = 0;\n } else {\n type = pp & 0x33 * type >> 4;\n points[p] &= type >> 2 | type << 2;\n }\n path.lineTo(p % width1, p / width1 | 0);\n if (!points[p]) {\n --count;\n }\n } while (p0 !== p);\n --i;\n }\n data = null;\n points = null;\n const drawOutline = function (c) {\n c.save();\n c.scale(1 / width, -1 / height);\n c.translate(0, -height);\n c.fill(path);\n c.beginPath();\n c.restore();\n };\n return drawOutline;\n}\nclass CanvasExtraState {\n constructor(width, height) {\n this.alphaIsShape = false;\n this.fontSize = 0;\n this.fontSizeScale = 1;\n this.textMatrix = _util.IDENTITY_MATRIX;\n this.textMatrixScale = 1;\n this.fontMatrix = _util.FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.x = 0;\n this.y = 0;\n this.lineX = 0;\n this.lineY = 0;\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = _util.TextRenderingMode.FILL;\n this.textRise = 0;\n this.fillColor = \"#000000\";\n this.strokeColor = \"#000000\";\n this.patternFill = false;\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.transferMaps = \"none\";\n this.startNewPathAndClipBox([0, 0, width, height]);\n }\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n return clone;\n }\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n updatePathMinMax(transform, x, y) {\n [x, y] = _util.Util.applyTransform([x, y], transform);\n this.minX = Math.min(this.minX, x);\n this.minY = Math.min(this.minY, y);\n this.maxX = Math.max(this.maxX, x);\n this.maxY = Math.max(this.maxY, y);\n }\n updateRectMinMax(transform, rect) {\n const p1 = _util.Util.applyTransform(rect, transform);\n const p2 = _util.Util.applyTransform(rect.slice(2), transform);\n this.minX = Math.min(this.minX, p1[0], p2[0]);\n this.minY = Math.min(this.minY, p1[1], p2[1]);\n this.maxX = Math.max(this.maxX, p1[0], p2[0]);\n this.maxY = Math.max(this.maxY, p1[1], p2[1]);\n }\n updateScalingPathMinMax(transform, minMax) {\n _util.Util.scaleMinMax(transform, minMax);\n this.minX = Math.min(this.minX, minMax[0]);\n this.maxX = Math.max(this.maxX, minMax[1]);\n this.minY = Math.min(this.minY, minMax[2]);\n this.maxY = Math.max(this.maxY, minMax[3]);\n }\n updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n const box = _util.Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3);\n if (minMax) {\n minMax[0] = Math.min(minMax[0], box[0], box[2]);\n minMax[1] = Math.max(minMax[1], box[0], box[2]);\n minMax[2] = Math.min(minMax[2], box[1], box[3]);\n minMax[3] = Math.max(minMax[3], box[1], box[3]);\n return;\n }\n this.updateRectMinMax(transform, box);\n }\n getPathBoundingBox(pathType = _pattern_helper.PathType.FILL, transform = null) {\n const box = [this.minX, this.minY, this.maxX, this.maxY];\n if (pathType === _pattern_helper.PathType.STROKE) {\n if (!transform) {\n (0, _util.unreachable)(\"Stroke bounding box must include transform.\");\n }\n const scale = _util.Util.singularValueDecompose2dScale(transform);\n const xStrokePad = scale[0] * this.lineWidth / 2;\n const yStrokePad = scale[1] * this.lineWidth / 2;\n box[0] -= xStrokePad;\n box[1] -= yStrokePad;\n box[2] += xStrokePad;\n box[3] += yStrokePad;\n }\n return box;\n }\n updateClipFromPath() {\n const intersect = _util.Util.intersect(this.clipBox, this.getPathBoundingBox());\n this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n }\n isEmptyClip() {\n return this.minX === Infinity;\n }\n startNewPathAndClipBox(box) {\n this.clipBox = box;\n this.minX = Infinity;\n this.minY = Infinity;\n this.maxX = 0;\n this.maxY = 0;\n }\n getClippedPathBoundingBox(pathType = _pattern_helper.PathType.FILL, transform = null) {\n return _util.Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform));\n }\n}\nfunction putBinaryImageData(ctx, imgData) {\n if (typeof ImageData !== \"undefined\" && imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0,\n destPos;\n const src = imgData.data;\n const dest = chunkImgData.data;\n let i, j, thisChunkHeight, elemsInThisChunk;\n if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) {\n const srcLength = src.byteLength;\n const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n const dest32DataLength = dest32.length;\n const fullSrcDiff = width + 7 >> 3;\n const white = 0xffffffff;\n const black = _util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n for (j = 0; j < thisChunkHeight; j++) {\n const srcDiff = srcLength - srcPos;\n let k = 0;\n const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n const kEndUnrolled = kEnd & ~7;\n let mask = 0;\n let srcByte = 0;\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = srcByte & 128 ? white : black;\n dest32[destPos++] = srcByte & 64 ? white : black;\n dest32[destPos++] = srcByte & 32 ? white : black;\n dest32[destPos++] = srcByte & 16 ? white : black;\n dest32[destPos++] = srcByte & 8 ? white : black;\n dest32[destPos++] = srcByte & 4 ? white : black;\n dest32[destPos++] = srcByte & 2 ? white : black;\n dest32[destPos++] = srcByte & 1 ? white : black;\n }\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) {\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === _util.ImageKind.RGB_24BPP) {\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n destPos = 0;\n for (j = elemsInThisChunk; j--;) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n}\nfunction putBinaryImageMask(ctx, imgData) {\n if (imgData.bitmap) {\n ctx.drawImage(imgData.bitmap, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n for (let i = 0; i < totalChunks; i++) {\n const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n ({\n srcPos\n } = (0, _image_utils.convertBlackAndWhiteToRGBA)({\n src,\n srcPos,\n dest,\n width,\n height: thisChunkHeight,\n nonBlackColor: 0\n }));\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\nfunction copyCtxState(sourceCtx, destCtx) {\n const properties = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\", \"filter\"];\n for (const property of properties) {\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n}\nfunction resetCtxToDefault(ctx) {\n ctx.strokeStyle = ctx.fillStyle = \"#000000\";\n ctx.fillRule = \"nonzero\";\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = \"butt\";\n ctx.lineJoin = \"miter\";\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.font = \"10px sans-serif\";\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n if (!_util.isNodeJS) {\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n }\n}\nfunction composeSMaskBackdrop(bytes, r0, g0, b0) {\n const length = bytes.length;\n for (let i = 3; i < length; i += 4) {\n const alpha = bytes[i];\n if (alpha === 0) {\n bytes[i - 3] = r0;\n bytes[i - 2] = g0;\n bytes[i - 1] = b0;\n } else if (alpha < 255) {\n const alpha_ = 255 - alpha;\n bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8;\n bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8;\n bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8;\n }\n }\n}\nfunction composeSMaskAlpha(maskData, layerData, transferMap) {\n const length = maskData.length;\n const scale = 1 / 255;\n for (let i = 3; i < length; i += 4) {\n const alpha = transferMap ? transferMap[maskData[i]] : maskData[i];\n layerData[i] = layerData[i] * alpha * scale | 0;\n }\n}\nfunction composeSMaskLuminosity(maskData, layerData, transferMap) {\n const length = maskData.length;\n for (let i = 3; i < length; i += 4) {\n const y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28;\n layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16;\n }\n}\nfunction genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) {\n const hasBackdrop = !!backdrop;\n const r0 = hasBackdrop ? backdrop[0] : 0;\n const g0 = hasBackdrop ? backdrop[1] : 0;\n const b0 = hasBackdrop ? backdrop[2] : 0;\n const composeFn = subtype === \"Luminosity\" ? composeSMaskLuminosity : composeSMaskAlpha;\n const PIXELS_TO_PROCESS = 1048576;\n const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));\n for (let row = 0; row < height; row += chunkSize) {\n const chunkHeight = Math.min(chunkSize, height - row);\n const maskData = maskCtx.getImageData(layerOffsetX - maskOffsetX, row + (layerOffsetY - maskOffsetY), width, chunkHeight);\n const layerData = layerCtx.getImageData(layerOffsetX, row + layerOffsetY, width, chunkHeight);\n if (hasBackdrop) {\n composeSMaskBackdrop(maskData.data, r0, g0, b0);\n }\n composeFn(maskData.data, layerData.data, transferMap);\n layerCtx.putImageData(layerData, layerOffsetX, row + layerOffsetY);\n }\n}\nfunction composeSMask(ctx, smask, layerCtx, layerBox) {\n const layerOffsetX = layerBox[0];\n const layerOffsetY = layerBox[1];\n const layerWidth = layerBox[2] - layerOffsetX;\n const layerHeight = layerBox[3] - layerOffsetY;\n if (layerWidth === 0 || layerHeight === 0) {\n return;\n }\n genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY);\n ctx.save();\n ctx.globalAlpha = 1;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(layerCtx.canvas, 0, 0);\n ctx.restore();\n}\nfunction getImageSmoothingEnabled(transform, interpolate) {\n const scale = _util.Util.singularValueDecompose2dScale(transform);\n scale[0] = Math.fround(scale[0]);\n scale[1] = Math.fround(scale[1]);\n const actualScale = Math.fround((globalThis.devicePixelRatio || 1) * _display_utils.PixelsPerInch.PDF_TO_CSS_UNITS);\n if (interpolate !== undefined) {\n return interpolate;\n } else if (scale[0] <= actualScale || scale[1] <= actualScale) {\n return true;\n }\n return false;\n}\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\nclass CanvasGraphics {\n constructor(canvasCtx, commonObjs, objs, canvasFactory, filterFactory, {\n optionalContentConfig,\n markedContentStack = null\n }, annotationCanvasMap, pageColors) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this.groupStack = [];\n this.processingType3 = null;\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.suspendedCtx = null;\n this.contentVisible = true;\n this.markedContentStack = markedContentStack || [];\n this.optionalContentConfig = optionalContentConfig;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n this.cachedPatterns = new Map();\n this.annotationCanvasMap = annotationCanvasMap;\n this.viewportScale = 1;\n this.outputScaleX = 1;\n this.outputScaleY = 1;\n this.pageColors = pageColors;\n this._cachedScaleForStroking = [-1, 0];\n this._cachedGetSinglePixelWidth = null;\n this._cachedBitmapsMap = new Map();\n }\n getObject(data, fallback = null) {\n if (typeof data === \"string\") {\n return data.startsWith(\"g_\") ? this.commonObjs.get(data) : this.objs.get(data);\n }\n return fallback;\n }\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null\n }) {\n const width = this.ctx.canvas.width;\n const height = this.ctx.canvas.height;\n const savedFillStyle = this.ctx.fillStyle;\n this.ctx.fillStyle = background || \"#ffffff\";\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.fillStyle = savedFillStyle;\n if (transparency) {\n const transparentCanvas = this.cachedCanvases.getCanvas(\"transparent\", width, height);\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n this.ctx.transform(...(0, _display_utils.getCurrentTransform)(this.compositeCtx));\n }\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n if (transform) {\n this.ctx.transform(...transform);\n this.outputScaleX = transform[0];\n this.outputScaleY = transform[0];\n }\n this.ctx.transform(...viewport.transform);\n this.viewportScale = viewport.scale;\n this.baseTransform = (0, _display_utils.getCurrentTransform)(this.ctx);\n }\n executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n let i = executionStartIdx || 0;\n const argsArrayLen = argsArray.length;\n if (argsArrayLen === i) {\n return i;\n }\n const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === \"function\";\n const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n let steps = 0;\n const commonObjs = this.commonObjs;\n const objs = this.objs;\n let fnId;\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n fnId = fnArray[i];\n if (fnId !== _util.OPS.dependency) {\n this[fnId].apply(this, argsArray[i]);\n } else {\n for (const depObjId of argsArray[i]) {\n const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n i++;\n if (i === argsArrayLen) {\n return i;\n }\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n }\n }\n #restoreInitialState() {\n while (this.stateStack.length || this.inSMaskMode) {\n this.restore();\n }\n this.ctx.restore();\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n }\n endDrawing() {\n this.#restoreInitialState();\n this.cachedCanvases.clear();\n this.cachedPatterns.clear();\n for (const cache of this._cachedBitmapsMap.values()) {\n for (const canvas of cache.values()) {\n if (typeof HTMLCanvasElement !== \"undefined\" && canvas instanceof HTMLCanvasElement) {\n canvas.width = canvas.height = 0;\n }\n }\n cache.clear();\n }\n this._cachedBitmapsMap.clear();\n this.#drawFilter();\n }\n #drawFilter() {\n if (this.pageColors) {\n const hcmFilterId = this.filterFactory.addHCMFilter(this.pageColors.foreground, this.pageColors.background);\n if (hcmFilterId !== \"none\") {\n const savedFilter = this.ctx.filter;\n this.ctx.filter = hcmFilterId;\n this.ctx.drawImage(this.ctx.canvas, 0, 0);\n this.ctx.filter = savedFilter;\n }\n }\n }\n _scaleImage(img, inverseTransform) {\n const width = img.width;\n const height = img.height;\n let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);\n let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);\n let paintWidth = width,\n paintHeight = height;\n let tmpCanvasId = \"prescale1\";\n let tmpCanvas, tmpCtx;\n while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {\n let newWidth = paintWidth,\n newHeight = paintHeight;\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = paintWidth >= 16384 ? Math.floor(paintWidth / 2) - 1 || 1 : Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = paintHeight >= 16384 ? Math.floor(paintHeight / 2) - 1 || 1 : Math.ceil(paintHeight) / 2;\n heightScale /= paintHeight / newHeight;\n }\n tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);\n img = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n }\n return {\n img,\n paintWidth,\n paintHeight\n };\n }\n _createMaskCanvas(img) {\n const ctx = this.ctx;\n const {\n width,\n height\n } = img;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n const currentTransform = (0, _display_utils.getCurrentTransform)(ctx);\n let cache, cacheKey, scaled, maskCanvas;\n if ((img.bitmap || img.data) && img.count > 1) {\n const mainKey = img.bitmap || img.data.buffer;\n cacheKey = JSON.stringify(isPatternFill ? currentTransform : [currentTransform.slice(0, 4), fillColor]);\n cache = this._cachedBitmapsMap.get(mainKey);\n if (!cache) {\n cache = new Map();\n this._cachedBitmapsMap.set(mainKey, cache);\n }\n const cachedImage = cache.get(cacheKey);\n if (cachedImage && !isPatternFill) {\n const offsetX = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]);\n const offsetY = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]);\n return {\n canvas: cachedImage,\n offsetX,\n offsetY\n };\n }\n scaled = cachedImage;\n }\n if (!scaled) {\n maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n putBinaryImageMask(maskCanvas.context, img);\n }\n let maskToCanvas = _util.Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]);\n maskToCanvas = _util.Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n const cord1 = _util.Util.applyTransform([0, 0], maskToCanvas);\n const cord2 = _util.Util.applyTransform([width, height], maskToCanvas);\n const rect = _util.Util.normalizeRect([cord1[0], cord1[1], cord2[0], cord2[1]]);\n const drawnWidth = Math.round(rect[2] - rect[0]) || 1;\n const drawnHeight = Math.round(rect[3] - rect[1]) || 1;\n const fillCanvas = this.cachedCanvases.getCanvas(\"fillCanvas\", drawnWidth, drawnHeight);\n const fillCtx = fillCanvas.context;\n const offsetX = Math.min(cord1[0], cord2[0]);\n const offsetY = Math.min(cord1[1], cord2[1]);\n fillCtx.translate(-offsetX, -offsetY);\n fillCtx.transform(...maskToCanvas);\n if (!scaled) {\n scaled = this._scaleImage(maskCanvas.canvas, (0, _display_utils.getCurrentTransformInverse)(fillCtx));\n scaled = scaled.img;\n if (cache && isPatternFill) {\n cache.set(cacheKey, scaled);\n }\n }\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled((0, _display_utils.getCurrentTransform)(fillCtx), img.interpolate);\n drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height);\n fillCtx.globalCompositeOperation = \"source-in\";\n const inverse = _util.Util.transform((0, _display_utils.getCurrentTransformInverse)(fillCtx), [1, 0, 0, 1, -offsetX, -offsetY]);\n fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, _pattern_helper.PathType.FILL) : fillColor;\n fillCtx.fillRect(0, 0, width, height);\n if (cache && !isPatternFill) {\n this.cachedCanvases.delete(\"fillCanvas\");\n cache.set(cacheKey, fillCanvas.canvas);\n }\n return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY)\n };\n }\n setLineWidth(width) {\n if (width !== this.current.lineWidth) {\n this._cachedScaleForStroking[0] = -1;\n }\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n }\n setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n }\n setDash(dashArray, dashPhase) {\n const ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n setRenderingIntent(intent) {}\n setFlatness(flatness) {}\n setGState(states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n case \"LC\":\n this.setLineCap(value);\n break;\n case \"LJ\":\n this.setLineJoin(value);\n break;\n case \"ML\":\n this.setMiterLimit(value);\n break;\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n case \"FL\":\n this.setFlatness(value);\n break;\n case \"Font\":\n this.setFont(value[0], value[1]);\n break;\n case \"CA\":\n this.current.strokeAlpha = value;\n break;\n case \"ca\":\n this.current.fillAlpha = value;\n this.ctx.globalAlpha = value;\n break;\n case \"BM\":\n this.ctx.globalCompositeOperation = value;\n break;\n case \"SMask\":\n this.current.activeSMask = value ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n case \"TR\":\n this.ctx.filter = this.current.transferMaps = this.filterFactory.addFilter(value);\n break;\n }\n }\n }\n get inSMaskMode() {\n return !!this.suspendedCtx;\n }\n checkSMaskState() {\n const inSMaskMode = this.inSMaskMode;\n if (this.current.activeSMask && !inSMaskMode) {\n this.beginSMaskMode();\n } else if (!this.current.activeSMask && inSMaskMode) {\n this.endSMaskMode();\n }\n }\n beginSMaskMode() {\n if (this.inSMaskMode) {\n throw new Error(\"beginSMaskMode called while already in smask mode\");\n }\n const drawnWidth = this.ctx.canvas.width;\n const drawnHeight = this.ctx.canvas.height;\n const cacheId = \"smaskGroupAt\" + this.groupLevel;\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n this.suspendedCtx = this.ctx;\n this.ctx = scratchCanvas.context;\n const ctx = this.ctx;\n ctx.setTransform(...(0, _display_utils.getCurrentTransform)(this.suspendedCtx));\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n }\n endSMaskMode() {\n if (!this.inSMaskMode) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n this.ctx._removeMirroring();\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n this.suspendedCtx = null;\n }\n compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\n }\n if (!dirtyBox) {\n dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n } else {\n dirtyBox[0] = Math.floor(dirtyBox[0]);\n dirtyBox[1] = Math.floor(dirtyBox[1]);\n dirtyBox[2] = Math.ceil(dirtyBox[2]);\n dirtyBox[3] = Math.ceil(dirtyBox[3]);\n }\n const smask = this.current.activeSMask;\n const suspendedCtx = this.suspendedCtx;\n composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n this.ctx.restore();\n }\n save() {\n if (this.inSMaskMode) {\n copyCtxState(this.ctx, this.suspendedCtx);\n this.suspendedCtx.save();\n } else {\n this.ctx.save();\n }\n const old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n }\n restore() {\n if (this.stateStack.length === 0 && this.inSMaskMode) {\n this.endSMaskMode();\n }\n if (this.stateStack.length !== 0) {\n this.current = this.stateStack.pop();\n if (this.inSMaskMode) {\n this.suspendedCtx.restore();\n copyCtxState(this.suspendedCtx, this.ctx);\n } else {\n this.ctx.restore();\n }\n this.checkSMaskState();\n this.pendingClip = null;\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n }\n transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n constructPath(ops, args, minMax) {\n const ctx = this.ctx;\n const current = this.current;\n let x = current.x,\n y = current.y;\n let startX, startY;\n const currentTransform = (0, _display_utils.getCurrentTransform)(ctx);\n const isScalingMatrix = currentTransform[0] === 0 && currentTransform[3] === 0 || currentTransform[1] === 0 && currentTransform[2] === 0;\n const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null;\n for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {\n switch (ops[i] | 0) {\n case _util.OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n const xw = x + width;\n const yh = y + height;\n ctx.moveTo(x, y);\n if (width === 0 || height === 0) {\n ctx.lineTo(xw, yh);\n } else {\n ctx.lineTo(xw, y);\n ctx.lineTo(xw, yh);\n ctx.lineTo(x, yh);\n }\n if (!isScalingMatrix) {\n current.updateRectMinMax(currentTransform, [x, y, xw, yh]);\n }\n ctx.closePath();\n break;\n case _util.OPS.moveTo:\n x = args[j++];\n y = args[j++];\n ctx.moveTo(x, y);\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n break;\n case _util.OPS.lineTo:\n x = args[j++];\n y = args[j++];\n ctx.lineTo(x, y);\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n break;\n case _util.OPS.curveTo:\n startX = x;\n startY = y;\n x = args[j + 4];\n y = args[j + 5];\n ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);\n current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], args[j + 2], args[j + 3], x, y, minMaxForBezier);\n j += 6;\n break;\n case _util.OPS.curveTo2:\n startX = x;\n startY = y;\n ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);\n current.updateCurvePathMinMax(currentTransform, startX, startY, x, y, args[j], args[j + 1], args[j + 2], args[j + 3], minMaxForBezier);\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case _util.OPS.curveTo3:\n startX = x;\n startY = y;\n x = args[j + 2];\n y = args[j + 3];\n ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], x, y, x, y, minMaxForBezier);\n j += 4;\n break;\n case _util.OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n if (isScalingMatrix) {\n current.updateScalingPathMinMax(currentTransform, minMaxForBezier);\n }\n current.setCurrentPoint(x, y);\n }\n closePath() {\n this.ctx.closePath();\n }\n stroke(consumePath = true) {\n const ctx = this.ctx;\n const strokeColor = this.current.strokeColor;\n ctx.globalAlpha = this.current.strokeAlpha;\n if (this.contentVisible) {\n if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(ctx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.STROKE);\n this.rescaleAndStroke(false);\n ctx.restore();\n } else {\n this.rescaleAndStroke(true);\n }\n }\n if (consumePath) {\n this.consumePath(this.current.getClippedPathBoundingBox());\n }\n ctx.globalAlpha = this.current.fillAlpha;\n }\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n fill(consumePath = true) {\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n let needRestore = false;\n if (isPatternFill) {\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(ctx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.FILL);\n needRestore = true;\n }\n const intersect = this.current.getClippedPathBoundingBox();\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(\"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill();\n }\n }\n if (needRestore) {\n ctx.restore();\n }\n if (consumePath) {\n this.consumePath(intersect);\n }\n }\n eoFill() {\n this.pendingEOFill = true;\n this.fill();\n }\n fillStroke() {\n this.fill(false);\n this.stroke(false);\n this.consumePath();\n }\n eoFillStroke() {\n this.pendingEOFill = true;\n this.fillStroke();\n }\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n closeEOFillStroke() {\n this.pendingEOFill = true;\n this.closePath();\n this.fillStroke();\n }\n endPath() {\n this.consumePath();\n }\n clip() {\n this.pendingClip = NORMAL_CLIP;\n }\n eoClip() {\n this.pendingClip = EO_CLIP;\n }\n beginText() {\n this.current.textMatrix = _util.IDENTITY_MATRIX;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n endText() {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n if (paths === undefined) {\n ctx.beginPath();\n return;\n }\n ctx.save();\n ctx.beginPath();\n for (const path of paths) {\n ctx.setTransform(...path.transform);\n ctx.translate(path.x, path.y);\n path.addToPath(ctx, path.fontSize);\n }\n ctx.restore();\n ctx.clip();\n ctx.beginPath();\n delete this.pendingTextPaths;\n }\n setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n }\n setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n }\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n setLeading(leading) {\n this.current.leading = -leading;\n }\n setFont(fontRefName, size) {\n const fontObj = this.commonObjs.get(fontRefName);\n const current = this.current;\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX;\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n (0, _util.warn)(\"Invalid font matrix for font \" + fontRefName);\n }\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n this.current.font = fontObj;\n this.current.fontSize = size;\n if (fontObj.isType3Font) {\n return;\n }\n const name = fontObj.loadedName || \"sans-serif\";\n const typeface = fontObj.systemFontInfo?.css || `\"${name}\", ${fontObj.fallbackName}`;\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n let browserFontSize = size;\n if (size < MIN_FONT_SIZE) {\n browserFontSize = MIN_FONT_SIZE;\n } else if (size > MAX_FONT_SIZE) {\n browserFontSize = MAX_FONT_SIZE;\n }\n this.current.fontSizeScale = size / browserFontSize;\n this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n }\n setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n }\n setTextRise(rise) {\n this.current.textRise = rise;\n }\n moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n setTextMatrix(a, b, c, d, e, f) {\n this.current.textMatrix = [a, b, c, d, e, f];\n this.current.textMatrixScale = Math.hypot(a, b);\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n paintChar(character, x, y, patternTransform) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const textRenderingMode = current.textRenderingMode;\n const fontSize = current.fontSize / current.fontSizeScale;\n const fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;\n const isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);\n const patternFill = current.patternFill && !font.missingFile;\n let addToPath;\n if (font.disableFontFace || isAddToPathSet || patternFill) {\n addToPath = font.getPathGenerator(this.commonObjs, character);\n }\n if (font.disableFontFace || patternFill) {\n ctx.save();\n ctx.translate(x, y);\n ctx.beginPath();\n addToPath(ctx, fontSize);\n if (patternTransform) {\n ctx.setTransform(...patternTransform);\n }\n if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n ctx.fill();\n }\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n ctx.stroke();\n }\n ctx.restore();\n } else {\n if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n ctx.fillText(character, x, y);\n }\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n ctx.strokeText(character, x, y);\n }\n }\n if (isAddToPathSet) {\n const paths = this.pendingTextPaths ||= [];\n paths.push({\n transform: (0, _display_utils.getCurrentTransform)(ctx),\n x,\n y,\n fontSize,\n addToPath\n });\n }\n }\n get isFontSubpixelAAEnabled() {\n const {\n context: ctx\n } = this.cachedCanvases.getCanvas(\"isFontSubpixelAAEnabled\", 10, 10);\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n const data = ctx.getImageData(0, 0, 10, 10).data;\n let enabled = false;\n for (let i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n return (0, _util.shadow)(this, \"isFontSubpixelAAEnabled\", enabled);\n }\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n return undefined;\n }\n const ctx = this.ctx;\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const glyphsLength = glyphs.length;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n const simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;\n ctx.save();\n ctx.transform(...current.textMatrix);\n ctx.translate(current.x, current.y + current.textRise);\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n let patternTransform;\n if (current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(ctx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.FILL);\n patternTransform = (0, _display_utils.getCurrentTransform)(ctx);\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n let lineWidth = current.lineWidth;\n const scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n lineWidth = this.getSinglePixelWidth();\n }\n } else {\n lineWidth /= scale;\n }\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n ctx.lineWidth = lineWidth;\n if (font.isInvalidPDFjsFont) {\n const chars = [];\n let width = 0;\n for (const glyph of glyphs) {\n chars.push(glyph.unicode);\n width += glyph.width;\n }\n ctx.fillText(chars.join(\"\"), 0, 0);\n current.x += width * widthAdvanceScale * textHScale;\n ctx.restore();\n this.compose();\n return undefined;\n }\n let x = 0,\n i;\n for (i = 0; i < glyphsLength; ++i) {\n const glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n let restoreNeeded = false;\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n const accent = glyph.accent;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n const vmetric = glyph.vmetric || defaultVMetrics;\n const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n if (font.remeasure && width > 0) {\n const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n const characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;\n }\n }\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n ctx.fillText(character, scaledX, scaledY);\n } else {\n this.paintChar(character, scaledX, scaledY, patternTransform);\n if (accent) {\n const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;\n const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;\n this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform);\n }\n }\n }\n const charWidth = vertical ? width * widthAdvanceScale - spacing * fontDirection : width * widthAdvanceScale + spacing * fontDirection;\n x += charWidth;\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n ctx.restore();\n this.compose();\n return undefined;\n }\n showType3Text(glyphs) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n const fontDirection = current.fontDirection;\n const spacingDir = font.vertical ? 1 : -1;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const textHScale = current.textHScale * fontDirection;\n const fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX;\n const glyphsLength = glyphs.length;\n const isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE;\n let i, glyph, width, spacingLength;\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n ctx.save();\n ctx.transform(...current.textMatrix);\n ctx.translate(current.x, current.y);\n ctx.scale(textHScale, fontDirection);\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n spacingLength = spacingDir * glyph * fontSize / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const operatorList = font.charProcOperatorList[glyph.operatorListId];\n if (!operatorList) {\n (0, _util.warn)(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n continue;\n }\n if (this.contentVisible) {\n this.processingType3 = glyph;\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform(...fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n const transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix);\n width = transformed[0] * fontSize + spacing;\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n this.processingType3 = null;\n }\n setCharWidth(xWidth, yWidth) {}\n setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n this.ctx.rect(llx, lly, urx - llx, ury - lly);\n this.ctx.clip();\n this.endPath();\n }\n getColorN_Pattern(IR) {\n let pattern;\n if (IR[0] === \"TilingPattern\") {\n const color = IR[1];\n const baseTransform = this.baseTransform || (0, _display_utils.getCurrentTransform)(this.ctx);\n const canvasGraphicsFactory = {\n createCanvasGraphics: ctx => {\n return new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig: this.optionalContentConfig,\n markedContentStack: this.markedContentStack\n });\n }\n };\n pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);\n } else {\n pattern = this._getPattern(IR[1], IR[2]);\n }\n return pattern;\n }\n setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n }\n setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n }\n setStrokeRGBColor(r, g, b) {\n const color = _util.Util.makeHexColor(r, g, b);\n this.ctx.strokeStyle = color;\n this.current.strokeColor = color;\n }\n setFillRGBColor(r, g, b) {\n const color = _util.Util.makeHexColor(r, g, b);\n this.ctx.fillStyle = color;\n this.current.fillColor = color;\n this.current.patternFill = false;\n }\n _getPattern(objId, matrix = null) {\n let pattern;\n if (this.cachedPatterns.has(objId)) {\n pattern = this.cachedPatterns.get(objId);\n } else {\n pattern = (0, _pattern_helper.getShadingPattern)(this.getObject(objId));\n this.cachedPatterns.set(objId, pattern);\n }\n if (matrix) {\n pattern.matrix = matrix;\n }\n return pattern;\n }\n shadingFill(objId) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n this.save();\n const pattern = this._getPattern(objId);\n ctx.fillStyle = pattern.getPattern(ctx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.SHADING);\n const inv = (0, _display_utils.getCurrentTransformInverse)(ctx);\n if (inv) {\n const {\n width,\n height\n } = ctx.canvas;\n const [x0, y0, x1, y1] = _util.Util.getAxialAlignedBoundingBox([0, 0, width, height], inv);\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore();\n }\n beginInlineImage() {\n (0, _util.unreachable)(\"Should not call beginInlineImage\");\n }\n beginImageData() {\n (0, _util.unreachable)(\"Should not call beginImageData\");\n }\n paintFormXObjectBegin(matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform(...matrix);\n }\n this.baseTransform = (0, _display_utils.getCurrentTransform)(this.ctx);\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n this.ctx.rect(bbox[0], bbox[1], width, height);\n this.current.updateRectMinMax((0, _display_utils.getCurrentTransform)(this.ctx), bbox);\n this.clip();\n this.endPath();\n }\n }\n paintFormXObjectEnd() {\n if (!this.contentVisible) {\n return;\n }\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n }\n beginGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n if (this.inSMaskMode) {\n this.endSMaskMode();\n this.current.activeSMask = null;\n }\n const currentCtx = this.ctx;\n if (!group.isolated) {\n (0, _util.info)(\"TODO: Support non-isolated groups.\");\n }\n if (group.knockout) {\n (0, _util.warn)(\"Knockout groups not supported.\");\n }\n const currentTransform = (0, _display_utils.getCurrentTransform)(currentCtx);\n if (group.matrix) {\n currentCtx.transform(...group.matrix);\n }\n if (!group.bbox) {\n throw new Error(\"Bounding box is required.\");\n }\n let bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, (0, _display_utils.getCurrentTransform)(currentCtx));\n const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n const offsetX = Math.floor(bounds[0]);\n const offsetY = Math.floor(bounds[1]);\n let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n let scaleX = 1,\n scaleY = 1;\n if (drawnWidth > MAX_GROUP_SIZE) {\n scaleX = drawnWidth / MAX_GROUP_SIZE;\n drawnWidth = MAX_GROUP_SIZE;\n }\n if (drawnHeight > MAX_GROUP_SIZE) {\n scaleY = drawnHeight / MAX_GROUP_SIZE;\n drawnHeight = MAX_GROUP_SIZE;\n }\n this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n let cacheId = \"groupAt\" + this.groupLevel;\n if (group.smask) {\n cacheId += \"_smask_\" + this.smaskCounter++ % 2;\n }\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n const groupCtx = scratchCanvas.context;\n groupCtx.scale(1 / scaleX, 1 / scaleY);\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform(...currentTransform);\n if (group.smask) {\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n scaleX,\n scaleY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null\n });\n } else {\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.scale(scaleX, scaleY);\n currentCtx.save();\n }\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n }\n endGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.groupLevel--;\n const groupCtx = this.ctx;\n const ctx = this.groupStack.pop();\n this.ctx = ctx;\n this.ctx.imageSmoothingEnabled = false;\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore();\n } else {\n this.ctx.restore();\n const currentMtx = (0, _display_utils.getCurrentTransform)(this.ctx);\n this.restore();\n this.ctx.save();\n this.ctx.setTransform(...currentMtx);\n const dirtyBox = _util.Util.getAxialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx);\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n this.#restoreInitialState();\n resetCtxToDefault(this.ctx);\n this.ctx.save();\n this.save();\n if (this.baseTransform) {\n this.ctx.setTransform(...this.baseTransform);\n }\n if (Array.isArray(rect) && rect.length === 4) {\n const width = rect[2] - rect[0];\n const height = rect[3] - rect[1];\n if (hasOwnCanvas && this.annotationCanvasMap) {\n transform = transform.slice();\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n rect = rect.slice();\n rect[0] = rect[1] = 0;\n rect[2] = width;\n rect[3] = height;\n const [scaleX, scaleY] = _util.Util.singularValueDecompose2dScale((0, _display_utils.getCurrentTransform)(this.ctx));\n const {\n viewportScale\n } = this;\n const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale);\n const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale);\n this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight);\n const {\n canvas,\n context\n } = this.annotationCanvas;\n this.annotationCanvasMap.set(id, canvas);\n this.annotationCanvas.savedCtx = this.ctx;\n this.ctx = context;\n this.ctx.save();\n this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY);\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n this.ctx.rect(rect[0], rect[1], width, height);\n this.ctx.clip();\n this.endPath();\n }\n }\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.transform(...transform);\n this.transform(...matrix);\n }\n endAnnotation() {\n if (this.annotationCanvas) {\n this.ctx.restore();\n this.#drawFilter();\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\n }\n paintImageMaskXObject(img) {\n if (!this.contentVisible) {\n return;\n }\n const count = img.count;\n img = this.getObject(img.data, img);\n img.count = count;\n const ctx = this.ctx;\n const glyph = this.processingType3;\n if (glyph) {\n if (glyph.compiled === undefined) {\n glyph.compiled = compileType3Glyph(img);\n }\n if (glyph.compiled) {\n glyph.compiled(ctx);\n return;\n }\n }\n const mask = this._createMaskCanvas(img);\n const maskCanvas = mask.canvas;\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectRepeat(img, scaleX, skewX = 0, skewY = 0, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n img = this.getObject(img.data, img);\n const ctx = this.ctx;\n ctx.save();\n const currentTransform = (0, _display_utils.getCurrentTransform)(ctx);\n ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n const mask = this._createMaskCanvas(img);\n ctx.setTransform(1, 0, 0, 1, mask.offsetX - currentTransform[4], mask.offsetY - currentTransform[5]);\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n const trans = _util.Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]);\n const [x, y] = _util.Util.applyTransform([0, 0], trans);\n ctx.drawImage(mask.canvas, x, y);\n }\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectGroup(images) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n for (const image of images) {\n const {\n data,\n width,\n height,\n transform\n } = image;\n const maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n const maskCtx = maskCanvas.context;\n maskCtx.save();\n const img = this.getObject(data, image);\n putBinaryImageMask(maskCtx, img);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.FILL) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n maskCtx.restore();\n ctx.save();\n ctx.transform(...transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n ctx.restore();\n }\n this.compose();\n }\n paintImageXObject(objId) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(objId);\n if (!imgData) {\n (0, _util.warn)(\"Dependent image isn't ready yet\");\n return;\n }\n this.paintInlineImageXObject(imgData);\n }\n paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(objId);\n if (!imgData) {\n (0, _util.warn)(\"Dependent image isn't ready yet\");\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const map = [];\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({\n transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n x: 0,\n y: 0,\n w: width,\n h: height\n });\n }\n this.paintInlineImageXObjectGroup(imgData, map);\n }\n applyTransferMapsToCanvas(ctx) {\n if (this.current.transferMaps !== \"none\") {\n ctx.filter = this.current.transferMaps;\n ctx.drawImage(ctx.canvas, 0, 0);\n ctx.filter = \"none\";\n }\n return ctx.canvas;\n }\n applyTransferMapsToBitmap(imgData) {\n if (this.current.transferMaps === \"none\") {\n return imgData.bitmap;\n }\n const {\n bitmap,\n width,\n height\n } = imgData;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.filter = this.current.transferMaps;\n tmpCtx.drawImage(bitmap, 0, 0);\n tmpCtx.filter = \"none\";\n return tmpCanvas.canvas;\n }\n paintInlineImageXObject(imgData) {\n if (!this.contentVisible) {\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const ctx = this.ctx;\n this.save();\n if (!_util.isNodeJS) {\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n }\n ctx.scale(1 / width, -1 / height);\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = this.applyTransferMapsToBitmap(imgData);\n } else if (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement || !imgData.data) {\n imgToPaint = imgData;\n } else {\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n const scaled = this._scaleImage(imgToPaint, (0, _display_utils.getCurrentTransformInverse)(ctx));\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled((0, _display_utils.getCurrentTransform)(ctx), imgData.interpolate);\n drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);\n this.compose();\n this.restore();\n }\n paintInlineImageXObjectGroup(imgData, map) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = imgData.bitmap;\n } else {\n const w = imgData.width;\n const h = imgData.height;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n for (const entry of map) {\n ctx.save();\n ctx.transform(...entry.transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, imgToPaint, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);\n ctx.restore();\n }\n this.compose();\n }\n paintSolidColorImageMask() {\n if (!this.contentVisible) {\n return;\n }\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n markPoint(tag) {}\n markPointProps(tag, properties) {}\n beginMarkedContent(tag) {\n this.markedContentStack.push({\n visible: true\n });\n }\n beginMarkedContentProps(tag, properties) {\n if (tag === \"OC\") {\n this.markedContentStack.push({\n visible: this.optionalContentConfig.isVisible(properties)\n });\n } else {\n this.markedContentStack.push({\n visible: true\n });\n }\n this.contentVisible = this.isContentVisible();\n }\n endMarkedContent() {\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n beginCompat() {}\n endCompat() {}\n consumePath(clipBox) {\n const isEmpty = this.current.isEmptyClip();\n if (this.pendingClip) {\n this.current.updateClipFromPath();\n }\n if (!this.pendingClip) {\n this.compose(clipBox);\n }\n const ctx = this.ctx;\n if (this.pendingClip) {\n if (!isEmpty) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(\"evenodd\");\n } else {\n ctx.clip();\n }\n }\n this.pendingClip = null;\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\n ctx.beginPath();\n }\n getSinglePixelWidth() {\n if (!this._cachedGetSinglePixelWidth) {\n const m = (0, _display_utils.getCurrentTransform)(this.ctx);\n if (m[1] === 0 && m[2] === 0) {\n this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));\n } else {\n const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n const normX = Math.hypot(m[0], m[2]);\n const normY = Math.hypot(m[1], m[3]);\n this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;\n }\n }\n return this._cachedGetSinglePixelWidth;\n }\n getScaleForStroking() {\n if (this._cachedScaleForStroking[0] === -1) {\n const {\n lineWidth\n } = this.current;\n const {\n a,\n b,\n c,\n d\n } = this.ctx.getTransform();\n let scaleX, scaleY;\n if (b === 0 && c === 0) {\n const normX = Math.abs(a);\n const normY = Math.abs(d);\n if (normX === normY) {\n if (lineWidth === 0) {\n scaleX = scaleY = 1 / normX;\n } else {\n const scaledLineWidth = normX * lineWidth;\n scaleX = scaleY = scaledLineWidth < 1 ? 1 / scaledLineWidth : 1;\n }\n } else if (lineWidth === 0) {\n scaleX = 1 / normX;\n scaleY = 1 / normY;\n } else {\n const scaledXLineWidth = normX * lineWidth;\n const scaledYLineWidth = normY * lineWidth;\n scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;\n scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;\n }\n } else {\n const absDet = Math.abs(a * d - b * c);\n const normX = Math.hypot(a, b);\n const normY = Math.hypot(c, d);\n if (lineWidth === 0) {\n scaleX = normY / absDet;\n scaleY = normX / absDet;\n } else {\n const baseArea = lineWidth * absDet;\n scaleX = normY > baseArea ? normY / baseArea : 1;\n scaleY = normX > baseArea ? normX / baseArea : 1;\n }\n }\n this._cachedScaleForStroking[0] = scaleX;\n this._cachedScaleForStroking[1] = scaleY;\n }\n return this._cachedScaleForStroking;\n }\n rescaleAndStroke(saveRestore) {\n const {\n ctx\n } = this;\n const {\n lineWidth\n } = this.current;\n const [scaleX, scaleY] = this.getScaleForStroking();\n ctx.lineWidth = lineWidth || 1;\n if (scaleX === 1 && scaleY === 1) {\n ctx.stroke();\n return;\n }\n const dashes = ctx.getLineDash();\n if (saveRestore) {\n ctx.save();\n }\n ctx.scale(scaleX, scaleY);\n if (dashes.length > 0) {\n const scale = Math.max(scaleX, scaleY);\n ctx.setLineDash(dashes.map(x => x / scale));\n ctx.lineDashOffset /= scale;\n }\n ctx.stroke();\n if (saveRestore) {\n ctx.restore();\n }\n }\n isContentVisible() {\n for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n if (!this.markedContentStack[i].visible) {\n return false;\n }\n }\n return true;\n }\n}\nexports.CanvasGraphics = CanvasGraphics;\nfor (const op in _util.OPS) {\n if (CanvasGraphics.prototype[op] !== undefined) {\n CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op];\n }\n}\n\n/***/ }),\n/* 12 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.TilingPattern = exports.PathType = void 0;\nexports.getShadingPattern = getShadingPattern;\nvar _util = __w_pdfjs_require__(1);\nvar _display_utils = __w_pdfjs_require__(6);\nconst PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\"\n};\nexports.PathType = PathType;\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox) {\n return;\n }\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const region = new Path2D();\n region.rect(bbox[0], bbox[1], width, height);\n ctx.clip(region);\n}\nclass BaseShadingPattern {\n constructor() {\n if (this.constructor === BaseShadingPattern) {\n (0, _util.unreachable)(\"Cannot initialize BaseShadingPattern.\");\n }\n }\n getPattern() {\n (0, _util.unreachable)(\"Abstract method `getPattern` called.\");\n }\n}\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._type = IR[1];\n this._bbox = IR[2];\n this._colorStops = IR[3];\n this._p0 = IR[4];\n this._p1 = IR[5];\n this._r0 = IR[6];\n this._r1 = IR[7];\n this.matrix = null;\n }\n _createGradient(ctx) {\n let grad;\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]);\n } else if (this._type === \"radial\") {\n grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1);\n }\n for (const colorStop of this._colorStops) {\n grad.addColorStop(colorStop[0], colorStop[1]);\n }\n return grad;\n }\n getPattern(ctx, owner, inverse, pathType) {\n let pattern;\n if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, (0, _display_utils.getCurrentTransform)(ctx)) || [0, 0, 0, 0];\n const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", width, height, true);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.beginPath();\n tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n inverse = _util.Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]);\n tmpCtx.transform(...owner.baseTransform);\n if (this.matrix) {\n tmpCtx.transform(...this.matrix);\n }\n applyBoundingBox(tmpCtx, this._bbox);\n tmpCtx.fillStyle = this._createGradient(tmpCtx);\n tmpCtx.fill();\n pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n const domMatrix = new DOMMatrix(inverse);\n pattern.setTransform(domMatrix);\n } else {\n applyBoundingBox(ctx, this._bbox);\n pattern = this._createGradient(ctx);\n }\n return pattern;\n }\n}\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n const coords = context.coords,\n colors = context.colors;\n const bytes = data.data,\n rowSize = data.width * 4;\n let tmp;\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2;\n p2 = p3;\n p3 = tmp;\n tmp = c2;\n c2 = c3;\n c3 = tmp;\n }\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n const x1 = (coords[p1] + context.offsetX) * context.scaleX;\n const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n const x2 = (coords[p2] + context.offsetX) * context.scaleX;\n const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n const x3 = (coords[p3] + context.offsetX) * context.scaleX;\n const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n if (y1 >= y3) {\n return;\n }\n const c1r = colors[c1],\n c1g = colors[c1 + 1],\n c1b = colors[c1 + 2];\n const c2r = colors[c2],\n c2g = colors[c2 + 1],\n c2b = colors[c2 + 2];\n const c3r = colors[c3],\n c3g = colors[c3 + 1],\n c3b = colors[c3 + 2];\n const minY = Math.round(y1),\n maxY = Math.round(y3);\n let xa, car, cag, cab;\n let xb, cbr, cbg, cbb;\n for (let y = minY; y <= maxY; y++) {\n if (y < y2) {\n const k = y < y1 ? 0 : (y1 - y) / (y1 - y2);\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n let k;\n if (y > y3) {\n k = 1;\n } else if (y2 === y3) {\n k = 0;\n } else {\n k = (y2 - y) / (y2 - y3);\n }\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n let k;\n if (y < y1) {\n k = 0;\n } else if (y > y3) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y3);\n }\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n const x1_ = Math.round(Math.min(xa, xb));\n const x2_ = Math.round(Math.max(xa, xb));\n let j = rowSize * y + x1_ * 4;\n for (let x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n if (k < 0) {\n k = 0;\n } else if (k > 1) {\n k = 1;\n }\n bytes[j++] = car - (car - cbr) * k | 0;\n bytes[j++] = cag - (cag - cbg) * k | 0;\n bytes[j++] = cab - (cab - cbb) * k | 0;\n bytes[j++] = 255;\n }\n }\n}\nfunction drawFigure(data, figure, context) {\n const ps = figure.coords;\n const cs = figure.colors;\n let i, ii;\n switch (figure.type) {\n case \"lattice\":\n const verticesPerRow = figure.verticesPerRow;\n const rows = Math.floor(ps.length / verticesPerRow) - 1;\n const cols = verticesPerRow - 1;\n for (i = 0; i < rows; i++) {\n let q = i * verticesPerRow;\n for (let j = 0; j < cols; j++, q++) {\n drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);\n drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n }\n }\n break;\n case \"triangles\":\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);\n }\n break;\n default:\n throw new Error(\"illegal figure\");\n }\n}\nclass MeshShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._coords = IR[2];\n this._colors = IR[3];\n this._figures = IR[4];\n this._bounds = IR[5];\n this._bbox = IR[7];\n this._background = IR[8];\n this.matrix = null;\n }\n _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n const EXPECTED_SCALE = 1.1;\n const MAX_PATTERN_SIZE = 3000;\n const BORDER_SIZE = 2;\n const offsetX = Math.floor(this._bounds[0]);\n const offsetY = Math.floor(this._bounds[1]);\n const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const scaleX = boundsWidth / width;\n const scaleY = boundsHeight / height;\n const context = {\n coords: this._coords,\n colors: this._colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY\n };\n const paddedWidth = width + BORDER_SIZE * 2;\n const paddedHeight = height + BORDER_SIZE * 2;\n const tmpCanvas = cachedCanvases.getCanvas(\"mesh\", paddedWidth, paddedHeight, false);\n const tmpCtx = tmpCanvas.context;\n const data = tmpCtx.createImageData(width, height);\n if (backgroundColor) {\n const bytes = data.data;\n for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n for (const figure of this._figures) {\n drawFigure(data, figure, context);\n }\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n const canvas = tmpCanvas.canvas;\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY\n };\n }\n getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n let scale;\n if (pathType === PathType.SHADING) {\n scale = _util.Util.singularValueDecompose2dScale((0, _display_utils.getCurrentTransform)(ctx));\n } else {\n scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform);\n if (this.matrix) {\n const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix);\n scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n }\n }\n const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases);\n if (pathType !== PathType.SHADING) {\n ctx.setTransform(...owner.baseTransform);\n if (this.matrix) {\n ctx.transform(...this.matrix);\n }\n }\n ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n }\n}\nclass DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\n }\n}\nfunction getShadingPattern(IR) {\n switch (IR[0]) {\n case \"RadialAxial\":\n return new RadialAxialShadingPattern(IR);\n case \"Mesh\":\n return new MeshShadingPattern(IR);\n case \"Dummy\":\n return new DummyShadingPattern();\n }\n throw new Error(`Unknown IR type: ${IR[0]}`);\n}\nconst PaintType = {\n COLORED: 1,\n UNCOLORED: 2\n};\nclass TilingPattern {\n static MAX_PATTERN_SIZE = 3000;\n constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n this.operatorList = IR[2];\n this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.color = color;\n this.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n }\n createPatternCanvas(owner) {\n const operatorList = this.operatorList;\n const bbox = this.bbox;\n const xstep = this.xstep;\n const ystep = this.ystep;\n const paintType = this.paintType;\n const tilingType = this.tilingType;\n const color = this.color;\n const canvasGraphicsFactory = this.canvasGraphicsFactory;\n (0, _util.info)(\"TilingType: \" + tilingType);\n const x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix);\n const curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform);\n const combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]];\n const dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]);\n const dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]);\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", dimx.size, dimy.size, true);\n const tmpCtx = tmpCanvas.context;\n const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n let adjustedX0 = x0;\n let adjustedY0 = y0;\n let adjustedX1 = x1;\n let adjustedY1 = y1;\n if (x0 < 0) {\n adjustedX0 = 0;\n adjustedX1 += Math.abs(x0);\n }\n if (y0 < 0) {\n adjustedY0 = 0;\n adjustedY1 += Math.abs(y0);\n }\n tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0));\n graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n tmpCtx.save();\n this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1);\n graphics.baseTransform = (0, _display_utils.getCurrentTransform)(graphics.ctx);\n graphics.executeOperatorList(operatorList);\n graphics.endDrawing();\n return {\n canvas: tmpCanvas.canvas,\n scaleX: dimx.scale,\n scaleY: dimy.scale,\n offsetX: adjustedX0,\n offsetY: adjustedY0\n };\n }\n getSizeAndScale(step, realOutputSize, scale) {\n step = Math.abs(step);\n const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n let size = Math.ceil(step * scale);\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n return {\n scale,\n size\n };\n }\n clipBbox(graphics, x0, y0, x1, y1) {\n const bboxWidth = x1 - x0;\n const bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n graphics.current.updateRectMinMax((0, _display_utils.getCurrentTransform)(graphics.ctx), [x0, y0, x1, y1]);\n graphics.clip();\n graphics.endPath();\n }\n setFillAndStrokeStyleToContext(graphics, paintType, color) {\n const context = graphics.ctx,\n current = graphics.current;\n switch (paintType) {\n case PaintType.COLORED:\n const ctx = this.ctx;\n context.fillStyle = ctx.fillStyle;\n context.strokeStyle = ctx.strokeStyle;\n current.fillColor = ctx.fillStyle;\n current.strokeColor = ctx.strokeStyle;\n break;\n case PaintType.UNCOLORED:\n const cssColor = _util.Util.makeHexColor(color[0], color[1], color[2]);\n context.fillStyle = cssColor;\n context.strokeStyle = cssColor;\n current.fillColor = cssColor;\n current.strokeColor = cssColor;\n break;\n default:\n throw new _util.FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n getPattern(ctx, owner, inverse, pathType) {\n let matrix = inverse;\n if (pathType !== PathType.SHADING) {\n matrix = _util.Util.transform(matrix, owner.baseTransform);\n if (this.matrix) {\n matrix = _util.Util.transform(matrix, this.matrix);\n }\n }\n const temporaryPatternCanvas = this.createPatternCanvas(owner);\n let domMatrix = new DOMMatrix(matrix);\n domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY);\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n pattern.setTransform(domMatrix);\n return pattern;\n }\n}\nexports.TilingPattern = TilingPattern;\n\n/***/ }),\n/* 13 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.convertBlackAndWhiteToRGBA = convertBlackAndWhiteToRGBA;\nexports.convertToRGBA = convertToRGBA;\nexports.grayToRGBA = grayToRGBA;\nvar _util = __w_pdfjs_require__(1);\nfunction convertToRGBA(params) {\n switch (params.kind) {\n case _util.ImageKind.GRAYSCALE_1BPP:\n return convertBlackAndWhiteToRGBA(params);\n case _util.ImageKind.RGB_24BPP:\n return convertRGBToRGBA(params);\n }\n return null;\n}\nfunction convertBlackAndWhiteToRGBA({\n src,\n srcPos = 0,\n dest,\n width,\n height,\n nonBlackColor = 0xffffffff,\n inverseDecode = false\n}) {\n const black = _util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n let destPos = 0;\n for (let i = 0; i < height; i++) {\n for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n const elem = srcPos < srcLength ? src[srcPos] : 255;\n dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n }\n if (widthRemainder === 0) {\n continue;\n }\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n for (let j = 0; j < widthRemainder; j++) {\n dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping;\n }\n }\n return {\n srcPos,\n destPos\n };\n}\nfunction convertRGBToRGBA({\n src,\n srcPos = 0,\n dest,\n destPos = 0,\n width,\n height\n}) {\n let i = 0;\n const len32 = src.length >> 2;\n const src32 = new Uint32Array(src.buffer, srcPos, len32);\n if (_util.FeatureTest.isLittleEndian) {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff000000;\n dest[destPos + 1] = s1 >>> 24 | s2 << 8 | 0xff000000;\n dest[destPos + 2] = s2 >>> 16 | s3 << 16 | 0xff000000;\n dest[destPos + 3] = s3 >>> 8 | 0xff000000;\n }\n for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | 0xff000000;\n }\n } else {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff;\n dest[destPos + 1] = s1 << 24 | s2 >>> 8 | 0xff;\n dest[destPos + 2] = s2 << 16 | s3 >>> 16 | 0xff;\n dest[destPos + 3] = s3 << 8 | 0xff;\n }\n for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | 0xff;\n }\n }\n return {\n srcPos,\n destPos\n };\n}\nfunction grayToRGBA(src, dest) {\n if (_util.FeatureTest.isLittleEndian) {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x10101 | 0xff000000;\n }\n } else {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x1010100 | 0x000000ff;\n }\n }\n}\n\n/***/ }),\n/* 14 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.GlobalWorkerOptions = void 0;\nconst GlobalWorkerOptions = Object.create(null);\nexports.GlobalWorkerOptions = GlobalWorkerOptions;\nGlobalWorkerOptions.workerPort = null;\nGlobalWorkerOptions.workerSrc = \"\";\n\n/***/ }),\n/* 15 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.MessageHandler = void 0;\nvar _util = __w_pdfjs_require__(1);\nconst CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2\n};\nconst StreamKind = {\n UNKNOWN: 0,\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8\n};\nfunction wrapReason(reason) {\n if (!(reason instanceof Error || typeof reason === \"object\" && reason !== null)) {\n (0, _util.unreachable)('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n }\n switch (reason.name) {\n case \"AbortException\":\n return new _util.AbortException(reason.message);\n case \"MissingPDFException\":\n return new _util.MissingPDFException(reason.message);\n case \"PasswordException\":\n return new _util.PasswordException(reason.message, reason.code);\n case \"UnexpectedResponseException\":\n return new _util.UnexpectedResponseException(reason.message, reason.status);\n case \"UnknownErrorException\":\n return new _util.UnknownErrorException(reason.message, reason.details);\n default:\n return new _util.UnknownErrorException(reason.message, reason.toString());\n }\n}\nclass MessageHandler {\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n this._onComObjOnMessage = event => {\n const data = event.data;\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this.#processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const cbSourceName = this.sourceName;\n const cbTargetName = data.sourceName;\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(function (result) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason)\n });\n });\n return;\n }\n if (data.streamId) {\n this.#createStreamSink(data);\n return;\n }\n action(data.data);\n };\n comObj.addEventListener(\"message\", this._onComObjOnMessage);\n }\n on(actionName, handler) {\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n send(actionName, data, transfers) {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data\n }, transfers);\n }\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = new _util.PromiseCapability();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data\n }, transfers);\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n return new ReadableStream({\n start: controller => {\n const startCapability = new _util.PromiseCapability();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false\n };\n comObj.postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize\n }, transfers);\n return startCapability.promise;\n },\n pull: controller => {\n const pullCapability = new _util.PromiseCapability();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize\n });\n return pullCapability.promise;\n },\n cancel: reason => {\n (0, _util.assert)(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = new _util.PromiseCapability();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason)\n });\n return cancelCapability.promise;\n }\n }, queueingStrategy);\n }\n #createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = new _util.PromiseCapability();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk\n }, transfers);\n },\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId\n });\n delete self.streamSinks[streamId];\n },\n error(reason) {\n (0, _util.assert)(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason)\n });\n },\n sinkCapability: new _util.PromiseCapability(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null\n };\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n new Promise(function (resolve) {\n resolve(action(data.data, streamSink));\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n }\n #processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n break;\n }\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n streamSink.desiredSize = data.desiredSize;\n new Promise(function (resolve) {\n resolve(streamSink.onPull?.());\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n break;\n case StreamKind.ENQUEUE:\n (0, _util.assert)(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n (0, _util.assert)(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n (0, _util.assert)(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n new Promise(function (resolve) {\n resolve(streamSink.onCancel?.(wrapReason(data.reason)));\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n streamSink.sinkCapability.reject(wrapReason(data.reason));\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n async #deleteStreamController(streamController, streamId) {\n await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]);\n delete this.streamControllers[streamId];\n }\n destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n}\nexports.MessageHandler = MessageHandler;\n\n/***/ }),\n/* 16 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.Metadata = void 0;\nvar _util = __w_pdfjs_require__(1);\nclass Metadata {\n #metadataMap;\n #data;\n constructor({\n parsedData,\n rawData\n }) {\n this.#metadataMap = parsedData;\n this.#data = rawData;\n }\n getRaw() {\n return this.#data;\n }\n get(name) {\n return this.#metadataMap.get(name) ?? null;\n }\n getAll() {\n return (0, _util.objectFromMap)(this.#metadataMap);\n }\n has(name) {\n return this.#metadataMap.has(name);\n }\n}\nexports.Metadata = Metadata;\n\n/***/ }),\n/* 17 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.OptionalContentConfig = void 0;\nvar _util = __w_pdfjs_require__(1);\nvar _murmurhash = __w_pdfjs_require__(8);\nconst INTERNAL = Symbol(\"INTERNAL\");\nclass OptionalContentGroup {\n #visible = true;\n constructor(name, intent) {\n this.name = name;\n this.intent = intent;\n }\n get visible() {\n return this.#visible;\n }\n _setVisible(internal, visible) {\n if (internal !== INTERNAL) {\n (0, _util.unreachable)(\"Internal method `_setVisible` called.\");\n }\n this.#visible = visible;\n }\n}\nclass OptionalContentConfig {\n #cachedGetHash = null;\n #groups = new Map();\n #initialHash = null;\n #order = null;\n constructor(data) {\n this.name = null;\n this.creator = null;\n if (data === null) {\n return;\n }\n this.name = data.name;\n this.creator = data.creator;\n this.#order = data.order;\n for (const group of data.groups) {\n this.#groups.set(group.id, new OptionalContentGroup(group.name, group.intent));\n }\n if (data.baseState === \"OFF\") {\n for (const group of this.#groups.values()) {\n group._setVisible(INTERNAL, false);\n }\n }\n for (const on of data.on) {\n this.#groups.get(on)._setVisible(INTERNAL, true);\n }\n for (const off of data.off) {\n this.#groups.get(off)._setVisible(INTERNAL, false);\n }\n this.#initialHash = this.getHash();\n }\n #evaluateVisibilityExpression(array) {\n const length = array.length;\n if (length < 2) {\n return true;\n }\n const operator = array[0];\n for (let i = 1; i < length; i++) {\n const element = array[i];\n let state;\n if (Array.isArray(element)) {\n state = this.#evaluateVisibilityExpression(element);\n } else if (this.#groups.has(element)) {\n state = this.#groups.get(element).visible;\n } else {\n (0, _util.warn)(`Optional content group not found: ${element}`);\n return true;\n }\n switch (operator) {\n case \"And\":\n if (!state) {\n return false;\n }\n break;\n case \"Or\":\n if (state) {\n return true;\n }\n break;\n case \"Not\":\n return !state;\n default:\n return true;\n }\n }\n return operator === \"And\";\n }\n isVisible(group) {\n if (this.#groups.size === 0) {\n return true;\n }\n if (!group) {\n (0, _util.warn)(\"Optional content group not defined.\");\n return true;\n }\n if (group.type === \"OCG\") {\n if (!this.#groups.has(group.id)) {\n (0, _util.warn)(`Optional content group not found: ${group.id}`);\n return true;\n }\n return this.#groups.get(group.id).visible;\n } else if (group.type === \"OCMD\") {\n if (group.expression) {\n return this.#evaluateVisibilityExpression(group.expression);\n }\n if (!group.policy || group.policy === \"AnyOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n (0, _util.warn)(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n (0, _util.warn)(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n } else if (group.policy === \"AnyOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n (0, _util.warn)(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n (0, _util.warn)(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n }\n (0, _util.warn)(`Unknown optional content policy ${group.policy}.`);\n return true;\n }\n (0, _util.warn)(`Unknown group type ${group.type}.`);\n return true;\n }\n setVisibility(id, visible = true) {\n if (!this.#groups.has(id)) {\n (0, _util.warn)(`Optional content group not found: ${id}`);\n return;\n }\n this.#groups.get(id)._setVisible(INTERNAL, !!visible);\n this.#cachedGetHash = null;\n }\n get hasInitialVisibility() {\n return this.#initialHash === null || this.getHash() === this.#initialHash;\n }\n getOrder() {\n if (!this.#groups.size) {\n return null;\n }\n if (this.#order) {\n return this.#order.slice();\n }\n return [...this.#groups.keys()];\n }\n getGroups() {\n return this.#groups.size > 0 ? (0, _util.objectFromMap)(this.#groups) : null;\n }\n getGroup(id) {\n return this.#groups.get(id) || null;\n }\n getHash() {\n if (this.#cachedGetHash !== null) {\n return this.#cachedGetHash;\n }\n const hash = new _murmurhash.MurmurHash3_64();\n for (const [id, group] of this.#groups) {\n hash.update(`${id}:${group.visible}`);\n }\n return this.#cachedGetHash = hash.hexdigest();\n }\n}\nexports.OptionalContentConfig = OptionalContentConfig;\n\n/***/ }),\n/* 18 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.PDFDataTransportStream = void 0;\nvar _util = __w_pdfjs_require__(1);\nvar _display_utils = __w_pdfjs_require__(6);\nclass PDFDataTransportStream {\n constructor({\n length,\n initialData,\n progressiveDone = false,\n contentDispositionFilename = null,\n disableRange = false,\n disableStream = false\n }, pdfDataRangeTransport) {\n (0, _util.assert)(pdfDataRangeTransport, 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.');\n this._queuedChunks = [];\n this._progressiveDone = progressiveDone;\n this._contentDispositionFilename = contentDispositionFilename;\n if (initialData?.length > 0) {\n const buffer = initialData instanceof Uint8Array && initialData.byteLength === initialData.buffer.byteLength ? initialData.buffer : new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !disableStream;\n this._isRangeSupported = !disableRange;\n this._contentLength = length;\n this._fullRequestReader = null;\n this._rangeReaders = [];\n this._pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({\n begin,\n chunk\n });\n });\n this._pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({\n loaded,\n total\n });\n });\n this._pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({\n chunk\n });\n });\n this._pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n this._pdfDataRangeTransport.transportReady();\n }\n _onReceiveData({\n begin,\n chunk\n }) {\n const buffer = chunk instanceof Uint8Array && chunk.byteLength === chunk.buffer.byteLength ? chunk.buffer : new Uint8Array(chunk).buffer;\n if (begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== begin) {\n return false;\n }\n rangeReader._enqueue(buffer);\n return true;\n });\n (0, _util.assert)(found, \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n }\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n _onProgress(evt) {\n if (evt.total === undefined) {\n this._rangeReaders[0]?.onProgress?.({\n loaded: evt.loaded\n });\n } else {\n this._fullRequestReader?.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n }\n }\n _onProgressiveDone() {\n this._fullRequestReader?.progressiveDone();\n this._progressiveDone = true;\n }\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFDataTransportStream.getFullReader can only be called once.\");\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename);\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n this._rangeReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeReaders.slice(0)) {\n reader.cancel(reason);\n }\n this._pdfDataRangeTransport.abort();\n }\n}\nexports.PDFDataTransportStream = PDFDataTransportStream;\nclass PDFDataTransportStreamReader {\n constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = (0, _display_utils.isPdfFile)(contentDispositionFilename) ? contentDispositionFilename : null;\n this._queuedChunks = queuedChunks || [];\n this._loaded = 0;\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunks.push(chunk);\n }\n this._loaded += chunk.byteLength;\n }\n get headersReady() {\n return this._headersReady;\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n get contentLength() {\n return this._stream._contentLength;\n }\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = new _util.PromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n progressiveDone() {\n if (this._done) {\n return;\n }\n this._done = true;\n }\n}\nclass PDFDataTransportStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n requestsCapability.resolve({\n value: chunk,\n done: false\n });\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = new _util.PromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._stream._removeRangeReader(this);\n }\n}\n\n/***/ }),\n/* 19 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.PDFFetchStream = void 0;\nvar _util = __w_pdfjs_require__(1);\nvar _network_utils = __w_pdfjs_require__(20);\n;\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: \"GET\",\n headers,\n signal: abortController.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\"\n };\n}\nfunction createHeaders(httpHeaders) {\n const headers = new Headers();\n for (const property in httpHeaders) {\n const value = httpHeaders[property];\n if (value === undefined) {\n continue;\n }\n headers.append(property, value);\n }\n return headers;\n}\nfunction getArrayBuffer(val) {\n if (val instanceof Uint8Array) {\n return val.buffer;\n }\n if (val instanceof ArrayBuffer) {\n return val;\n }\n (0, _util.warn)(`getArrayBuffer - unexpected data format: ${val}`);\n return new Uint8Array(val).buffer;\n}\nclass PDFFetchStream {\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.httpHeaders = this.isHttp && source.httpHeaders || {};\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFFetchStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFFetchStreamRangeReader(this, begin, end);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nexports.PDFFetchStream = PDFFetchStream;\nclass PDFFetchStreamReader {\n constructor(stream) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._contentLength = source.length;\n this._headersCapability = new _util.PromiseCapability();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._abortController = new AbortController();\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._headers = createHeaders(this._stream.httpHeaders);\n const url = source.url;\n fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => {\n if (!(0, _network_utils.validateResponseStatus)(response.status)) {\n throw (0, _network_utils.createResponseStatusError)(response.status, url);\n }\n this._reader = response.body.getReader();\n this._headersCapability.resolve();\n const getResponseHeader = name => {\n return response.headers.get(name);\n };\n const {\n allowRangeRequests,\n suggestedLength\n } = (0, _network_utils.validateRangeRequestCapabilities)({\n getResponseHeader,\n isHttp: this._stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new _util.AbortException(\"Streaming is disabled.\"));\n }\n }).catch(this._headersCapability.reject);\n this.onProgress = null;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._headersCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\nclass PDFFetchStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = new _util.PromiseCapability();\n this._isStreamingSupported = !source.disableStream;\n this._abortController = new AbortController();\n this._headers = createHeaders(this._stream.httpHeaders);\n this._headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n const url = source.url;\n fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => {\n if (!(0, _network_utils.validateResponseStatus)(response.status)) {\n throw (0, _network_utils.createResponseStatusError)(response.status, url);\n }\n this._readCapability.resolve();\n this._reader = response.body.getReader();\n }).catch(this._readCapability.reject);\n this.onProgress = null;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\n\n/***/ }),\n/* 20 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.createResponseStatusError = createResponseStatusError;\nexports.extractFilenameFromHeader = extractFilenameFromHeader;\nexports.validateRangeRequestCapabilities = validateRangeRequestCapabilities;\nexports.validateResponseStatus = validateResponseStatus;\nvar _util = __w_pdfjs_require__(1);\nvar _content_disposition = __w_pdfjs_require__(21);\nvar _display_utils = __w_pdfjs_require__(6);\nfunction validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp,\n rangeChunkSize,\n disableRange\n}) {\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined\n };\n const length = parseInt(getResponseHeader(\"Content-Length\"), 10);\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n returnValues.suggestedLength = length;\n if (length <= 2 * rangeChunkSize) {\n return returnValues;\n }\n if (disableRange || !isHttp) {\n return returnValues;\n }\n if (getResponseHeader(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n const contentEncoding = getResponseHeader(\"Content-Encoding\") || \"identity\";\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\nfunction extractFilenameFromHeader(getResponseHeader) {\n const contentDisposition = getResponseHeader(\"Content-Disposition\");\n if (contentDisposition) {\n let filename = (0, _content_disposition.getFilenameFromContentDispositionHeader)(contentDisposition);\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch {}\n }\n if ((0, _display_utils.isPdfFile)(filename)) {\n return filename;\n }\n }\n return null;\n}\nfunction createResponseStatusError(status, url) {\n if (status === 404 || status === 0 && url.startsWith(\"file:\")) {\n return new _util.MissingPDFException('Missing PDF \"' + url + '\".');\n }\n return new _util.UnexpectedResponseException(`Unexpected server response (${status}) while retrieving PDF \"${url}\".`, status);\n}\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\n/***/ }),\n/* 21 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader;\nvar _util = __w_pdfjs_require__(1);\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n tmp = rfc2231getparam(contentDisposition);\n if (tmp) {\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\"(?:^|;)\\\\s*\" + attributePattern + \"\\\\s*=\\\\s*\" + \"(\" + '[^\";\\\\s][^;\\\\s]*' + \"|\" + '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' + \")\", flags);\n }\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = (0, _util.stringToBytes)(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch {}\n }\n return value;\n }\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n value = textdecode(\"utf-8\", value);\n if (needsEncodingFixup) {\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n return value;\n }\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match;\n n = parseInt(n, 10);\n if (n in matches) {\n if (n === 0) {\n break;\n }\n continue;\n }\n matches[n] = [quot, part];\n }\n const parts = [];\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n break;\n }\n let [quot, part] = matches[n];\n part = rfc2616unquote(part);\n if (quot) {\n part = unescape(part);\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n parts.push(part);\n }\n return parts.join(\"\");\n }\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\n for (let i = 0; i < parts.length; ++i) {\n const quotindex = parts[i].indexOf('\"');\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1;\n }\n parts[i] = parts[i].replaceAll(/\\\\(.)/g, \"$1\");\n }\n value = parts.join('\"');\n }\n return value;\n }\n function rfc5987decode(extvalue) {\n const encodingend = extvalue.indexOf(\"'\");\n if (encodingend === -1) {\n return extvalue;\n }\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n function rfc2047decode(value) {\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n return value.replaceAll(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n text = text.replaceAll(\"_\", \" \");\n text = text.replaceAll(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n }\n try {\n text = atob(text);\n } catch {}\n return textdecode(charset, text);\n });\n }\n return \"\";\n}\n\n/***/ }),\n/* 22 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.PDFNetworkStream = void 0;\nvar _util = __w_pdfjs_require__(1);\nvar _network_utils = __w_pdfjs_require__(20);\n;\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\nfunction getArrayBuffer(xhr) {\n const data = xhr.response;\n if (typeof data !== \"string\") {\n return data;\n }\n return (0, _util.stringToBytes)(data).buffer;\n}\nclass NetworkManager {\n constructor(url, args = {}) {\n this.url = url;\n this.isHttp = /^https?:/i.test(url);\n this.httpHeaders = this.isHttp && args.httpHeaders || Object.create(null);\n this.withCredentials = args.withCredentials || false;\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n requestRange(begin, end, listeners) {\n const args = {\n begin,\n end\n };\n for (const prop in listeners) {\n args[prop] = listeners[prop];\n }\n return this.request(args);\n }\n requestFull(listeners) {\n return this.request(listeners);\n }\n request(args) {\n const xhr = new XMLHttpRequest();\n const xhrId = this.currXhrId++;\n const pendingRequest = this.pendingRequests[xhrId] = {\n xhr\n };\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n for (const property in this.httpHeaders) {\n const value = this.httpHeaders[property];\n if (value === undefined) {\n continue;\n }\n xhr.setRequestHeader(property, value);\n }\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n } else {\n pendingRequest.expectedStatus = OK_RESPONSE;\n }\n xhr.responseType = \"arraybuffer\";\n if (args.onError) {\n xhr.onerror = function (evt) {\n args.onError(xhr.status);\n };\n }\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n xhr.send(null);\n return xhrId;\n }\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n pendingRequest.onProgress?.(evt);\n }\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n const xhr = pendingRequest.xhr;\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n if (xhr.readyState !== 4) {\n return;\n }\n if (!(xhrId in this.pendingRequests)) {\n return;\n }\n delete this.pendingRequests[xhrId];\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n const xhrStatus = xhr.status || OK_RESPONSE;\n const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n const chunk = getArrayBuffer(xhr);\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk\n });\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk\n });\n } else {\n pendingRequest.onError?.(xhr.status);\n }\n }\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n}\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source.url, {\n httpHeaders: source.httpHeaders,\n withCredentials: source.withCredentials\n });\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFNetworkStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nexports.PDFNetworkStream = PDFNetworkStream;\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n const args = {\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = source.url;\n this._fullRequestId = manager.requestFull(args);\n this._headersReceivedCapability = new _util.PromiseCapability();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n this.onProgress = null;\n }\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n const getResponseHeader = name => {\n return fullRequestXhr.getResponseHeader(name);\n };\n const {\n allowRangeRequests,\n suggestedLength\n } = (0, _network_utils.validateRangeRequestCapabilities)({\n getResponseHeader,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n if (this._isRangeSupported) {\n this._manager.abortRequest(fullRequestXhrId);\n }\n this._headersReceivedCapability.resolve();\n }\n _onDone(data) {\n if (data) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: data.chunk,\n done: false\n });\n } else {\n this._cachedChunks.push(data.chunk);\n }\n }\n this._done = true;\n if (this._cachedChunks.length > 0) {\n return;\n }\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n _onError(status) {\n this._storedError = (0, _network_utils.createResponseStatusError)(status, this._url);\n this._headersReceivedCapability.reject(this._storedError);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._cachedChunks.length = 0;\n }\n _onProgress(evt) {\n this.onProgress?.({\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength\n });\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n get contentLength() {\n return this._contentLength;\n }\n get headersReady() {\n return this._headersReceivedCapability.promise;\n }\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = new _util.PromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n this._headersReceivedCapability.reject(reason);\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n this._fullRequestReader = null;\n }\n}\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n const args = {\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = manager.url;\n this._requestId = manager.requestRange(begin, end, args);\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this._storedError = undefined;\n this.onProgress = null;\n this.onClosed = null;\n }\n _close() {\n this.onClosed?.(this);\n }\n _onDone(data) {\n const chunk = data.chunk;\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._close();\n }\n _onError(status) {\n this._storedError = (0, _network_utils.createResponseStatusError)(status, this._url);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._queuedChunk = null;\n }\n _onProgress(evt) {\n if (!this.isStreamingSupported) {\n this.onProgress?.({\n loaded: evt.loaded\n });\n }\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._queuedChunk !== null) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = new _util.PromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n this._close();\n }\n}\n\n/***/ }),\n/* 23 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.PDFNodeStream = void 0;\nvar _util = __w_pdfjs_require__(1);\nvar _network_utils = __w_pdfjs_require__(20);\n;\nconst fileUriRegex = /^file:\\/\\/\\/[a-zA-Z]:\\//;\nfunction parseUrl(sourceUrl) {\n const url = require(\"url\");\n const parsedUrl = url.parse(sourceUrl);\n if (parsedUrl.protocol === \"file:\" || parsedUrl.host) {\n return parsedUrl;\n }\n if (/^[a-z]:[/\\\\]/i.test(sourceUrl)) {\n return url.parse(`file:///${sourceUrl}`);\n }\n if (!parsedUrl.host) {\n parsedUrl.protocol = \"file:\";\n }\n return parsedUrl;\n}\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrl(source.url);\n this.isHttp = this.url.protocol === \"http:\" || this.url.protocol === \"https:\";\n this.isFsUrl = this.url.protocol === \"file:\";\n this.httpHeaders = this.isHttp && source.httpHeaders || {};\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFNodeStream.getFullReader can only be called once.\");\n this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end);\n this._rangeRequestReaders.push(rangeReader);\n return rangeReader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nexports.PDFNodeStream = PDFNodeStream;\nclass BaseFullReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n const source = stream.source;\n this._contentLength = source.length;\n this._loaded = 0;\n this._filename = null;\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._readableStream = null;\n this._readCapability = new _util.PromiseCapability();\n this._headersCapability = new _util.PromiseCapability();\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = new _util.PromiseCapability();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new _util.AbortException(\"streaming is disabled\"));\n }\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\nclass BaseRangeReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = new _util.PromiseCapability();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = new _util.PromiseCapability();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\nfunction createRequestOptions(parsedUrl, headers) {\n return {\n protocol: parsedUrl.protocol,\n auth: parsedUrl.auth,\n host: parsedUrl.hostname,\n port: parsedUrl.port,\n path: parsedUrl.path,\n method: \"GET\",\n headers\n };\n}\nclass PDFNodeStreamFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new _util.MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n this._headersCapability.reject(error);\n return;\n }\n this._headersCapability.resolve();\n this._setReadableStream(response);\n const getResponseHeader = name => {\n return this._readableStream.headers[name.toLowerCase()];\n };\n const {\n allowRangeRequests,\n suggestedLength\n } = (0, _network_utils.validateRangeRequestCapabilities)({\n getResponseHeader,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n };\n this._request = null;\n if (this._url.protocol === \"http:\") {\n const http = require(\"http\");\n this._request = http.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse);\n } else {\n const https = require(\"https\");\n this._request = https.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse);\n }\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n this._headersCapability.reject(reason);\n });\n this._request.end();\n }\n}\nclass PDFNodeStreamRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n this._httpHeaders = {};\n for (const property in stream.httpHeaders) {\n const value = stream.httpHeaders[property];\n if (value === undefined) {\n continue;\n }\n this._httpHeaders[property] = value;\n }\n this._httpHeaders.Range = `bytes=${start}-${end - 1}`;\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new _util.MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n return;\n }\n this._setReadableStream(response);\n };\n this._request = null;\n if (this._url.protocol === \"http:\") {\n const http = require(\"http\");\n this._request = http.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);\n } else {\n const https = require(\"https\");\n this._request = https.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);\n }\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n });\n this._request.end();\n }\n}\nclass PDFNodeStreamFsFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n let path = decodeURIComponent(this._url.path);\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n const fs = require(\"fs\");\n fs.lstat(path, (error, stat) => {\n if (error) {\n if (error.code === \"ENOENT\") {\n error = new _util.MissingPDFException(`Missing PDF \"${path}\".`);\n }\n this._storedError = error;\n this._headersCapability.reject(error);\n return;\n }\n this._contentLength = stat.size;\n this._setReadableStream(fs.createReadStream(path));\n this._headersCapability.resolve();\n });\n }\n}\nclass PDFNodeStreamFsRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n let path = decodeURIComponent(this._url.path);\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n const fs = require(\"fs\");\n this._setReadableStream(fs.createReadStream(path, {\n start,\n end: end - 1\n }));\n }\n}\n\n/***/ }),\n/* 24 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.SVGGraphics = void 0;\nvar _display_utils = __w_pdfjs_require__(6);\nvar _util = __w_pdfjs_require__(1);\n;\nconst SVG_DEFAULTS = {\n fontStyle: \"normal\",\n fontWeight: \"normal\",\n fillColor: \"#000000\"\n};\nconst XML_NS = \"http://www.w3.org/XML/1998/namespace\";\nconst XLINK_NS = \"http://www.w3.org/1999/xlink\";\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst createObjectURL = function (data, contentType = \"\", forceDataSchema = false) {\n if (URL.createObjectURL && typeof Blob !== \"undefined\" && !forceDataSchema) {\n return URL.createObjectURL(new Blob([data], {\n type: contentType\n }));\n }\n const digits = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n let buffer = `data:${contentType};base64,`;\n for (let i = 0, ii = data.length; i < ii; i += 3) {\n const b1 = data[i] & 0xff;\n const b2 = data[i + 1] & 0xff;\n const b3 = data[i + 2] & 0xff;\n const d1 = b1 >> 2,\n d2 = (b1 & 3) << 4 | b2 >> 4;\n const d3 = i + 1 < ii ? (b2 & 0xf) << 2 | b3 >> 6 : 64;\n const d4 = i + 2 < ii ? b3 & 0x3f : 64;\n buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n }\n return buffer;\n};\nconst convertImgDataToPng = function () {\n const PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);\n const CHUNK_WRAPPER_SIZE = 12;\n const crcTable = new Int32Array(256);\n for (let i = 0; i < 256; i++) {\n let c = i;\n for (let h = 0; h < 8; h++) {\n c = c & 1 ? 0xedb88320 ^ c >> 1 & 0x7fffffff : c >> 1 & 0x7fffffff;\n }\n crcTable[i] = c;\n }\n function crc32(data, start, end) {\n let crc = -1;\n for (let i = start; i < end; i++) {\n const a = (crc ^ data[i]) & 0xff;\n const b = crcTable[a];\n crc = crc >>> 8 ^ b;\n }\n return crc ^ -1;\n }\n function writePngChunk(type, body, data, offset) {\n let p = offset;\n const len = body.length;\n data[p] = len >> 24 & 0xff;\n data[p + 1] = len >> 16 & 0xff;\n data[p + 2] = len >> 8 & 0xff;\n data[p + 3] = len & 0xff;\n p += 4;\n data[p] = type.charCodeAt(0) & 0xff;\n data[p + 1] = type.charCodeAt(1) & 0xff;\n data[p + 2] = type.charCodeAt(2) & 0xff;\n data[p + 3] = type.charCodeAt(3) & 0xff;\n p += 4;\n data.set(body, p);\n p += body.length;\n const crc = crc32(data, offset + 4, p);\n data[p] = crc >> 24 & 0xff;\n data[p + 1] = crc >> 16 & 0xff;\n data[p + 2] = crc >> 8 & 0xff;\n data[p + 3] = crc & 0xff;\n }\n function adler32(data, start, end) {\n let a = 1;\n let b = 0;\n for (let i = start; i < end; ++i) {\n a = (a + (data[i] & 0xff)) % 65521;\n b = (b + a) % 65521;\n }\n return b << 16 | a;\n }\n function deflateSync(literals) {\n if (!_util.isNodeJS) {\n return deflateSyncUncompressed(literals);\n }\n try {\n const input = parseInt(process.versions.node) >= 8 ? literals : Buffer.from(literals);\n const output = require(\"zlib\").deflateSync(input, {\n level: 9\n });\n return output instanceof Uint8Array ? output : new Uint8Array(output);\n } catch (e) {\n (0, _util.warn)(\"Not compressing PNG because zlib.deflateSync is unavailable: \" + e);\n }\n return deflateSyncUncompressed(literals);\n }\n function deflateSyncUncompressed(literals) {\n let len = literals.length;\n const maxBlockLength = 0xffff;\n const deflateBlocks = Math.ceil(len / maxBlockLength);\n const idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);\n let pi = 0;\n idat[pi++] = 0x78;\n idat[pi++] = 0x9c;\n let pos = 0;\n while (len > maxBlockLength) {\n idat[pi++] = 0x00;\n idat[pi++] = 0xff;\n idat[pi++] = 0xff;\n idat[pi++] = 0x00;\n idat[pi++] = 0x00;\n idat.set(literals.subarray(pos, pos + maxBlockLength), pi);\n pi += maxBlockLength;\n pos += maxBlockLength;\n len -= maxBlockLength;\n }\n idat[pi++] = 0x01;\n idat[pi++] = len & 0xff;\n idat[pi++] = len >> 8 & 0xff;\n idat[pi++] = ~len & 0xffff & 0xff;\n idat[pi++] = (~len & 0xffff) >> 8 & 0xff;\n idat.set(literals.subarray(pos), pi);\n pi += literals.length - pos;\n const adler = adler32(literals, 0, literals.length);\n idat[pi++] = adler >> 24 & 0xff;\n idat[pi++] = adler >> 16 & 0xff;\n idat[pi++] = adler >> 8 & 0xff;\n idat[pi++] = adler & 0xff;\n return idat;\n }\n function encode(imgData, kind, forceDataSchema, isMask) {\n const width = imgData.width;\n const height = imgData.height;\n let bitDepth, colorType, lineSize;\n const bytes = imgData.data;\n switch (kind) {\n case _util.ImageKind.GRAYSCALE_1BPP:\n colorType = 0;\n bitDepth = 1;\n lineSize = width + 7 >> 3;\n break;\n case _util.ImageKind.RGB_24BPP:\n colorType = 2;\n bitDepth = 8;\n lineSize = width * 3;\n break;\n case _util.ImageKind.RGBA_32BPP:\n colorType = 6;\n bitDepth = 8;\n lineSize = width * 4;\n break;\n default:\n throw new Error(\"invalid format\");\n }\n const literals = new Uint8Array((1 + lineSize) * height);\n let offsetLiterals = 0,\n offsetBytes = 0;\n for (let y = 0; y < height; ++y) {\n literals[offsetLiterals++] = 0;\n literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals);\n offsetBytes += lineSize;\n offsetLiterals += lineSize;\n }\n if (kind === _util.ImageKind.GRAYSCALE_1BPP && isMask) {\n offsetLiterals = 0;\n for (let y = 0; y < height; y++) {\n offsetLiterals++;\n for (let i = 0; i < lineSize; i++) {\n literals[offsetLiterals++] ^= 0xff;\n }\n }\n }\n const ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]);\n const idat = deflateSync(literals);\n const pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length;\n const data = new Uint8Array(pngLength);\n let offset = 0;\n data.set(PNG_HEADER, offset);\n offset += PNG_HEADER.length;\n writePngChunk(\"IHDR\", ihdr, data, offset);\n offset += CHUNK_WRAPPER_SIZE + ihdr.length;\n writePngChunk(\"IDATA\", idat, data, offset);\n offset += CHUNK_WRAPPER_SIZE + idat.length;\n writePngChunk(\"IEND\", new Uint8Array(0), data, offset);\n return createObjectURL(data, \"image/png\", forceDataSchema);\n }\n return function convertImgDataToPng(imgData, forceDataSchema, isMask) {\n const kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind;\n return encode(imgData, kind, forceDataSchema, isMask);\n };\n}();\nclass SVGExtraState {\n constructor() {\n this.fontSizeScale = 1;\n this.fontWeight = SVG_DEFAULTS.fontWeight;\n this.fontSize = 0;\n this.textMatrix = _util.IDENTITY_MATRIX;\n this.fontMatrix = _util.FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.textRenderingMode = _util.TextRenderingMode.FILL;\n this.textMatrixScale = 1;\n this.x = 0;\n this.y = 0;\n this.lineX = 0;\n this.lineY = 0;\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRise = 0;\n this.fillColor = SVG_DEFAULTS.fillColor;\n this.strokeColor = \"#000000\";\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.lineJoin = \"\";\n this.lineCap = \"\";\n this.miterLimit = 0;\n this.dashArray = [];\n this.dashPhase = 0;\n this.dependencies = [];\n this.activeClipUrl = null;\n this.clipGroup = null;\n this.maskId = \"\";\n }\n clone() {\n return Object.create(this);\n }\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n}\nfunction opListToTree(opList) {\n let opTree = [];\n const tmp = [];\n for (const opListElement of opList) {\n if (opListElement.fn === \"save\") {\n opTree.push({\n fnId: 92,\n fn: \"group\",\n items: []\n });\n tmp.push(opTree);\n opTree = opTree.at(-1).items;\n continue;\n }\n if (opListElement.fn === \"restore\") {\n opTree = tmp.pop();\n } else {\n opTree.push(opListElement);\n }\n }\n return opTree;\n}\nfunction pf(value) {\n if (Number.isInteger(value)) {\n return value.toString();\n }\n const s = value.toFixed(10);\n let i = s.length - 1;\n if (s[i] !== \"0\") {\n return s;\n }\n do {\n i--;\n } while (s[i] === \"0\");\n return s.substring(0, s[i] === \".\" ? i : i + 1);\n}\nfunction pm(m) {\n if (m[4] === 0 && m[5] === 0) {\n if (m[1] === 0 && m[2] === 0) {\n if (m[0] === 1 && m[3] === 1) {\n return \"\";\n }\n return `scale(${pf(m[0])} ${pf(m[3])})`;\n }\n if (m[0] === m[3] && m[1] === -m[2]) {\n const a = Math.acos(m[0]) * 180 / Math.PI;\n return `rotate(${pf(a)})`;\n }\n } else if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {\n return `translate(${pf(m[4])} ${pf(m[5])})`;\n }\n return `matrix(${pf(m[0])} ${pf(m[1])} ${pf(m[2])} ${pf(m[3])} ${pf(m[4])} ` + `${pf(m[5])})`;\n}\nlet clipCount = 0;\nlet maskCount = 0;\nlet shadingCount = 0;\nclass SVGGraphics {\n constructor(commonObjs, objs, forceDataSchema = false) {\n (0, _display_utils.deprecated)(\"The SVG back-end is no longer maintained and *may* be removed in the future.\");\n this.svgFactory = new _display_utils.DOMSVGFactory();\n this.current = new SVGExtraState();\n this.transformMatrix = _util.IDENTITY_MATRIX;\n this.transformStack = [];\n this.extraStack = [];\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.embedFonts = false;\n this.embeddedFonts = Object.create(null);\n this.cssStyle = null;\n this.forceDataSchema = !!forceDataSchema;\n this._operatorIdMapping = [];\n for (const op in _util.OPS) {\n this._operatorIdMapping[_util.OPS[op]] = op;\n }\n }\n getObject(data, fallback = null) {\n if (typeof data === \"string\") {\n return data.startsWith(\"g_\") ? this.commonObjs.get(data) : this.objs.get(data);\n }\n return fallback;\n }\n save() {\n this.transformStack.push(this.transformMatrix);\n const old = this.current;\n this.extraStack.push(old);\n this.current = old.clone();\n }\n restore() {\n this.transformMatrix = this.transformStack.pop();\n this.current = this.extraStack.pop();\n this.pendingClip = null;\n this.tgrp = null;\n }\n group(items) {\n this.save();\n this.executeOpTree(items);\n this.restore();\n }\n loadDependencies(operatorList) {\n const fnArray = operatorList.fnArray;\n const argsArray = operatorList.argsArray;\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n if (fnArray[i] !== _util.OPS.dependency) {\n continue;\n }\n for (const obj of argsArray[i]) {\n const objsPool = obj.startsWith(\"g_\") ? this.commonObjs : this.objs;\n const promise = new Promise(resolve => {\n objsPool.get(obj, resolve);\n });\n this.current.dependencies.push(promise);\n }\n }\n return Promise.all(this.current.dependencies);\n }\n transform(a, b, c, d, e, f) {\n const transformMatrix = [a, b, c, d, e, f];\n this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix);\n this.tgrp = null;\n }\n getSVG(operatorList, viewport) {\n this.viewport = viewport;\n const svgElement = this._initialize(viewport);\n return this.loadDependencies(operatorList).then(() => {\n this.transformMatrix = _util.IDENTITY_MATRIX;\n this.executeOpTree(this.convertOpList(operatorList));\n return svgElement;\n });\n }\n convertOpList(operatorList) {\n const operatorIdMapping = this._operatorIdMapping;\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n const opList = [];\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n const fnId = fnArray[i];\n opList.push({\n fnId,\n fn: operatorIdMapping[fnId],\n args: argsArray[i]\n });\n }\n return opListToTree(opList);\n }\n executeOpTree(opTree) {\n for (const opTreeElement of opTree) {\n const fn = opTreeElement.fn;\n const fnId = opTreeElement.fnId;\n const args = opTreeElement.args;\n switch (fnId | 0) {\n case _util.OPS.beginText:\n this.beginText();\n break;\n case _util.OPS.dependency:\n break;\n case _util.OPS.setLeading:\n this.setLeading(args);\n break;\n case _util.OPS.setLeadingMoveText:\n this.setLeadingMoveText(args[0], args[1]);\n break;\n case _util.OPS.setFont:\n this.setFont(args);\n break;\n case _util.OPS.showText:\n this.showText(args[0]);\n break;\n case _util.OPS.showSpacedText:\n this.showText(args[0]);\n break;\n case _util.OPS.endText:\n this.endText();\n break;\n case _util.OPS.moveText:\n this.moveText(args[0], args[1]);\n break;\n case _util.OPS.setCharSpacing:\n this.setCharSpacing(args[0]);\n break;\n case _util.OPS.setWordSpacing:\n this.setWordSpacing(args[0]);\n break;\n case _util.OPS.setHScale:\n this.setHScale(args[0]);\n break;\n case _util.OPS.setTextMatrix:\n this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);\n break;\n case _util.OPS.setTextRise:\n this.setTextRise(args[0]);\n break;\n case _util.OPS.setTextRenderingMode:\n this.setTextRenderingMode(args[0]);\n break;\n case _util.OPS.setLineWidth:\n this.setLineWidth(args[0]);\n break;\n case _util.OPS.setLineJoin:\n this.setLineJoin(args[0]);\n break;\n case _util.OPS.setLineCap:\n this.setLineCap(args[0]);\n break;\n case _util.OPS.setMiterLimit:\n this.setMiterLimit(args[0]);\n break;\n case _util.OPS.setFillRGBColor:\n this.setFillRGBColor(args[0], args[1], args[2]);\n break;\n case _util.OPS.setStrokeRGBColor:\n this.setStrokeRGBColor(args[0], args[1], args[2]);\n break;\n case _util.OPS.setStrokeColorN:\n this.setStrokeColorN(args);\n break;\n case _util.OPS.setFillColorN:\n this.setFillColorN(args);\n break;\n case _util.OPS.shadingFill:\n this.shadingFill(args[0]);\n break;\n case _util.OPS.setDash:\n this.setDash(args[0], args[1]);\n break;\n case _util.OPS.setRenderingIntent:\n this.setRenderingIntent(args[0]);\n break;\n case _util.OPS.setFlatness:\n this.setFlatness(args[0]);\n break;\n case _util.OPS.setGState:\n this.setGState(args[0]);\n break;\n case _util.OPS.fill:\n this.fill();\n break;\n case _util.OPS.eoFill:\n this.eoFill();\n break;\n case _util.OPS.stroke:\n this.stroke();\n break;\n case _util.OPS.fillStroke:\n this.fillStroke();\n break;\n case _util.OPS.eoFillStroke:\n this.eoFillStroke();\n break;\n case _util.OPS.clip:\n this.clip(\"nonzero\");\n break;\n case _util.OPS.eoClip:\n this.clip(\"evenodd\");\n break;\n case _util.OPS.paintSolidColorImageMask:\n this.paintSolidColorImageMask();\n break;\n case _util.OPS.paintImageXObject:\n this.paintImageXObject(args[0]);\n break;\n case _util.OPS.paintInlineImageXObject:\n this.paintInlineImageXObject(args[0]);\n break;\n case _util.OPS.paintImageMaskXObject:\n this.paintImageMaskXObject(args[0]);\n break;\n case _util.OPS.paintFormXObjectBegin:\n this.paintFormXObjectBegin(args[0], args[1]);\n break;\n case _util.OPS.paintFormXObjectEnd:\n this.paintFormXObjectEnd();\n break;\n case _util.OPS.closePath:\n this.closePath();\n break;\n case _util.OPS.closeStroke:\n this.closeStroke();\n break;\n case _util.OPS.closeFillStroke:\n this.closeFillStroke();\n break;\n case _util.OPS.closeEOFillStroke:\n this.closeEOFillStroke();\n break;\n case _util.OPS.nextLine:\n this.nextLine();\n break;\n case _util.OPS.transform:\n this.transform(args[0], args[1], args[2], args[3], args[4], args[5]);\n break;\n case _util.OPS.constructPath:\n this.constructPath(args[0], args[1]);\n break;\n case _util.OPS.endPath:\n this.endPath();\n break;\n case 92:\n this.group(opTreeElement.items);\n break;\n default:\n (0, _util.warn)(`Unimplemented operator ${fn}`);\n break;\n }\n }\n }\n setWordSpacing(wordSpacing) {\n this.current.wordSpacing = wordSpacing;\n }\n setCharSpacing(charSpacing) {\n this.current.charSpacing = charSpacing;\n }\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n setTextMatrix(a, b, c, d, e, f) {\n const current = this.current;\n current.textMatrix = current.lineMatrix = [a, b, c, d, e, f];\n current.textMatrixScale = Math.hypot(a, b);\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n current.xcoords = [];\n current.ycoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(null, \"font-size\", `${pf(current.fontSize)}px`);\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtElement.append(current.tspan);\n }\n beginText() {\n const current = this.current;\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n current.textMatrix = _util.IDENTITY_MATRIX;\n current.lineMatrix = _util.IDENTITY_MATRIX;\n current.textMatrixScale = 1;\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtgrp = this.svgFactory.createElement(\"svg:g\");\n current.xcoords = [];\n current.ycoords = [];\n }\n moveText(x, y) {\n const current = this.current;\n current.x = current.lineX += x;\n current.y = current.lineY += y;\n current.xcoords = [];\n current.ycoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(null, \"font-size\", `${pf(current.fontSize)}px`);\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n return;\n }\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n let x = 0;\n for (const glyph of glyphs) {\n if (glyph === null) {\n x += fontDirection * wordSpacing;\n continue;\n } else if (typeof glyph === \"number\") {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n let vx;\n const vmetric = glyph.vmetric || defaultVMetrics;\n vx = glyph.vmetric ? vmetric[1] : width * 0.5;\n vx = -vx * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n if (glyph.isInFont || font.missingFile) {\n current.xcoords.push(current.x + scaledX);\n if (vertical) {\n current.ycoords.push(-current.y + scaledY);\n }\n current.tspan.textContent += character;\n } else {}\n const charWidth = vertical ? width * widthAdvanceScale - spacing * fontDirection : width * widthAdvanceScale + spacing * fontDirection;\n x += charWidth;\n }\n current.tspan.setAttributeNS(null, \"x\", current.xcoords.map(pf).join(\" \"));\n if (vertical) {\n current.tspan.setAttributeNS(null, \"y\", current.ycoords.map(pf).join(\" \"));\n } else {\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(null, \"font-size\", `${pf(current.fontSize)}px`);\n if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {\n current.tspan.setAttributeNS(null, \"font-style\", current.fontStyle);\n }\n if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {\n current.tspan.setAttributeNS(null, \"font-weight\", current.fontWeight);\n }\n const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;\n if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n if (current.fillColor !== SVG_DEFAULTS.fillColor) {\n current.tspan.setAttributeNS(null, \"fill\", current.fillColor);\n }\n if (current.fillAlpha < 1) {\n current.tspan.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n }\n } else if (current.textRenderingMode === _util.TextRenderingMode.ADD_TO_PATH) {\n current.tspan.setAttributeNS(null, \"fill\", \"transparent\");\n } else {\n current.tspan.setAttributeNS(null, \"fill\", \"none\");\n }\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n const lineWidthScale = 1 / (current.textMatrixScale || 1);\n this._setStrokeAttributes(current.tspan, lineWidthScale);\n }\n let textMatrix = current.textMatrix;\n if (current.textRise !== 0) {\n textMatrix = textMatrix.slice();\n textMatrix[5] += current.textRise;\n }\n current.txtElement.setAttributeNS(null, \"transform\", `${pm(textMatrix)} scale(${pf(textHScale)}, -1)`);\n current.txtElement.setAttributeNS(XML_NS, \"xml:space\", \"preserve\");\n current.txtElement.append(current.tspan);\n current.txtgrp.append(current.txtElement);\n this._ensureTransformGroup().append(current.txtElement);\n }\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n addFontStyle(fontObj) {\n if (!fontObj.data) {\n throw new Error(\"addFontStyle: No font data available, \" + 'ensure that the \"fontExtraProperties\" API parameter is set.');\n }\n if (!this.cssStyle) {\n this.cssStyle = this.svgFactory.createElement(\"svg:style\");\n this.cssStyle.setAttributeNS(null, \"type\", \"text/css\");\n this.defs.append(this.cssStyle);\n }\n const url = createObjectURL(fontObj.data, fontObj.mimetype, this.forceDataSchema);\n this.cssStyle.textContent += `@font-face { font-family: \"${fontObj.loadedName}\";` + ` src: url(${url}); }\\n`;\n }\n setFont(details) {\n const current = this.current;\n const fontObj = this.commonObjs.get(details[0]);\n let size = details[1];\n current.font = fontObj;\n if (this.embedFonts && !fontObj.missingFile && !this.embeddedFonts[fontObj.loadedName]) {\n this.addFontStyle(fontObj);\n this.embeddedFonts[fontObj.loadedName] = fontObj;\n }\n current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX;\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n current.fontSize = size;\n current.fontFamily = fontObj.loadedName;\n current.fontWeight = bold;\n current.fontStyle = italic;\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n current.xcoords = [];\n current.ycoords = [];\n }\n endText() {\n const current = this.current;\n if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement?.hasChildNodes()) {\n current.element = current.txtElement;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n setLineWidth(width) {\n if (width > 0) {\n this.current.lineWidth = width;\n }\n }\n setLineCap(style) {\n this.current.lineCap = LINE_CAP_STYLES[style];\n }\n setLineJoin(style) {\n this.current.lineJoin = LINE_JOIN_STYLES[style];\n }\n setMiterLimit(limit) {\n this.current.miterLimit = limit;\n }\n setStrokeAlpha(strokeAlpha) {\n this.current.strokeAlpha = strokeAlpha;\n }\n setStrokeRGBColor(r, g, b) {\n this.current.strokeColor = _util.Util.makeHexColor(r, g, b);\n }\n setFillAlpha(fillAlpha) {\n this.current.fillAlpha = fillAlpha;\n }\n setFillRGBColor(r, g, b) {\n this.current.fillColor = _util.Util.makeHexColor(r, g, b);\n this.current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n this.current.xcoords = [];\n this.current.ycoords = [];\n }\n setStrokeColorN(args) {\n this.current.strokeColor = this._makeColorN_Pattern(args);\n }\n setFillColorN(args) {\n this.current.fillColor = this._makeColorN_Pattern(args);\n }\n shadingFill(args) {\n const {\n width,\n height\n } = this.viewport;\n const inv = _util.Util.inverseTransform(this.transformMatrix);\n const [x0, y0, x1, y1] = _util.Util.getAxialAlignedBoundingBox([0, 0, width, height], inv);\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", x0);\n rect.setAttributeNS(null, \"y\", y0);\n rect.setAttributeNS(null, \"width\", x1 - x0);\n rect.setAttributeNS(null, \"height\", y1 - y0);\n rect.setAttributeNS(null, \"fill\", this._makeShadingPattern(args));\n if (this.current.fillAlpha < 1) {\n rect.setAttributeNS(null, \"fill-opacity\", this.current.fillAlpha);\n }\n this._ensureTransformGroup().append(rect);\n }\n _makeColorN_Pattern(args) {\n if (args[0] === \"TilingPattern\") {\n return this._makeTilingPattern(args);\n }\n return this._makeShadingPattern(args);\n }\n _makeTilingPattern(args) {\n const color = args[1];\n const operatorList = args[2];\n const matrix = args[3] || _util.IDENTITY_MATRIX;\n const [x0, y0, x1, y1] = args[4];\n const xstep = args[5];\n const ystep = args[6];\n const paintType = args[7];\n const tilingId = `shading${shadingCount++}`;\n const [tx0, ty0, tx1, ty1] = _util.Util.normalizeRect([..._util.Util.applyTransform([x0, y0], matrix), ..._util.Util.applyTransform([x1, y1], matrix)]);\n const [xscale, yscale] = _util.Util.singularValueDecompose2dScale(matrix);\n const txstep = xstep * xscale;\n const tystep = ystep * yscale;\n const tiling = this.svgFactory.createElement(\"svg:pattern\");\n tiling.setAttributeNS(null, \"id\", tilingId);\n tiling.setAttributeNS(null, \"patternUnits\", \"userSpaceOnUse\");\n tiling.setAttributeNS(null, \"width\", txstep);\n tiling.setAttributeNS(null, \"height\", tystep);\n tiling.setAttributeNS(null, \"x\", `${tx0}`);\n tiling.setAttributeNS(null, \"y\", `${ty0}`);\n const svg = this.svg;\n const transformMatrix = this.transformMatrix;\n const fillColor = this.current.fillColor;\n const strokeColor = this.current.strokeColor;\n const bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0);\n this.svg = bbox;\n this.transformMatrix = matrix;\n if (paintType === 2) {\n const cssColor = _util.Util.makeHexColor(...color);\n this.current.fillColor = cssColor;\n this.current.strokeColor = cssColor;\n }\n this.executeOpTree(this.convertOpList(operatorList));\n this.svg = svg;\n this.transformMatrix = transformMatrix;\n this.current.fillColor = fillColor;\n this.current.strokeColor = strokeColor;\n tiling.append(bbox.childNodes[0]);\n this.defs.append(tiling);\n return `url(#${tilingId})`;\n }\n _makeShadingPattern(args) {\n if (typeof args === \"string\") {\n args = this.objs.get(args);\n }\n switch (args[0]) {\n case \"RadialAxial\":\n const shadingId = `shading${shadingCount++}`;\n const colorStops = args[3];\n let gradient;\n switch (args[1]) {\n case \"axial\":\n const point0 = args[4];\n const point1 = args[5];\n gradient = this.svgFactory.createElement(\"svg:linearGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"x1\", point0[0]);\n gradient.setAttributeNS(null, \"y1\", point0[1]);\n gradient.setAttributeNS(null, \"x2\", point1[0]);\n gradient.setAttributeNS(null, \"y2\", point1[1]);\n break;\n case \"radial\":\n const focalPoint = args[4];\n const circlePoint = args[5];\n const focalRadius = args[6];\n const circleRadius = args[7];\n gradient = this.svgFactory.createElement(\"svg:radialGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"cx\", circlePoint[0]);\n gradient.setAttributeNS(null, \"cy\", circlePoint[1]);\n gradient.setAttributeNS(null, \"r\", circleRadius);\n gradient.setAttributeNS(null, \"fx\", focalPoint[0]);\n gradient.setAttributeNS(null, \"fy\", focalPoint[1]);\n gradient.setAttributeNS(null, \"fr\", focalRadius);\n break;\n default:\n throw new Error(`Unknown RadialAxial type: ${args[1]}`);\n }\n for (const colorStop of colorStops) {\n const stop = this.svgFactory.createElement(\"svg:stop\");\n stop.setAttributeNS(null, \"offset\", colorStop[0]);\n stop.setAttributeNS(null, \"stop-color\", colorStop[1]);\n gradient.append(stop);\n }\n this.defs.append(gradient);\n return `url(#${shadingId})`;\n case \"Mesh\":\n (0, _util.warn)(\"Unimplemented pattern Mesh\");\n return null;\n case \"Dummy\":\n return \"hotpink\";\n default:\n throw new Error(`Unknown IR type: ${args[0]}`);\n }\n }\n setDash(dashArray, dashPhase) {\n this.current.dashArray = dashArray;\n this.current.dashPhase = dashPhase;\n }\n constructPath(ops, args) {\n const current = this.current;\n let x = current.x,\n y = current.y;\n let d = [];\n let j = 0;\n for (const op of ops) {\n switch (op | 0) {\n case _util.OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n const xw = x + width;\n const yh = y + height;\n d.push(\"M\", pf(x), pf(y), \"L\", pf(xw), pf(y), \"L\", pf(xw), pf(yh), \"L\", pf(x), pf(yh), \"Z\");\n break;\n case _util.OPS.moveTo:\n x = args[j++];\n y = args[j++];\n d.push(\"M\", pf(x), pf(y));\n break;\n case _util.OPS.lineTo:\n x = args[j++];\n y = args[j++];\n d.push(\"L\", pf(x), pf(y));\n break;\n case _util.OPS.curveTo:\n x = args[j + 4];\n y = args[j + 5];\n d.push(\"C\", pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y));\n j += 6;\n break;\n case _util.OPS.curveTo2:\n d.push(\"C\", pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]));\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case _util.OPS.curveTo3:\n x = args[j + 2];\n y = args[j + 3];\n d.push(\"C\", pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y));\n j += 4;\n break;\n case _util.OPS.closePath:\n d.push(\"Z\");\n break;\n }\n }\n d = d.join(\" \");\n if (current.path && ops.length > 0 && ops[0] !== _util.OPS.rectangle && ops[0] !== _util.OPS.moveTo) {\n d = current.path.getAttributeNS(null, \"d\") + d;\n } else {\n current.path = this.svgFactory.createElement(\"svg:path\");\n this._ensureTransformGroup().append(current.path);\n }\n current.path.setAttributeNS(null, \"d\", d);\n current.path.setAttributeNS(null, \"fill\", \"none\");\n current.element = current.path;\n current.setCurrentPoint(x, y);\n }\n endPath() {\n const current = this.current;\n current.path = null;\n if (!this.pendingClip) {\n return;\n }\n if (!current.element) {\n this.pendingClip = null;\n return;\n }\n const clipId = `clippath${clipCount++}`;\n const clipPath = this.svgFactory.createElement(\"svg:clipPath\");\n clipPath.setAttributeNS(null, \"id\", clipId);\n clipPath.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n const clipElement = current.element.cloneNode(true);\n if (this.pendingClip === \"evenodd\") {\n clipElement.setAttributeNS(null, \"clip-rule\", \"evenodd\");\n } else {\n clipElement.setAttributeNS(null, \"clip-rule\", \"nonzero\");\n }\n this.pendingClip = null;\n clipPath.append(clipElement);\n this.defs.append(clipPath);\n if (current.activeClipUrl) {\n current.clipGroup = null;\n for (const prev of this.extraStack) {\n prev.clipGroup = null;\n }\n clipPath.setAttributeNS(null, \"clip-path\", current.activeClipUrl);\n }\n current.activeClipUrl = `url(#${clipId})`;\n this.tgrp = null;\n }\n clip(type) {\n this.pendingClip = type;\n }\n closePath() {\n const current = this.current;\n if (current.path) {\n const d = `${current.path.getAttributeNS(null, \"d\")}Z`;\n current.path.setAttributeNS(null, \"d\", d);\n }\n }\n setLeading(leading) {\n this.current.leading = -leading;\n }\n setTextRise(textRise) {\n this.current.textRise = textRise;\n }\n setTextRenderingMode(textRenderingMode) {\n this.current.textRenderingMode = textRenderingMode;\n }\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n setRenderingIntent(intent) {}\n setFlatness(flatness) {}\n setGState(states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n case \"LC\":\n this.setLineCap(value);\n break;\n case \"LJ\":\n this.setLineJoin(value);\n break;\n case \"ML\":\n this.setMiterLimit(value);\n break;\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n case \"FL\":\n this.setFlatness(value);\n break;\n case \"Font\":\n this.setFont(value);\n break;\n case \"CA\":\n this.setStrokeAlpha(value);\n break;\n case \"ca\":\n this.setFillAlpha(value);\n break;\n default:\n (0, _util.warn)(`Unimplemented graphic state operator ${key}`);\n break;\n }\n }\n }\n fill() {\n const current = this.current;\n if (current.element) {\n current.element.setAttributeNS(null, \"fill\", current.fillColor);\n current.element.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n this.endPath();\n }\n }\n stroke() {\n const current = this.current;\n if (current.element) {\n this._setStrokeAttributes(current.element);\n current.element.setAttributeNS(null, \"fill\", \"none\");\n this.endPath();\n }\n }\n _setStrokeAttributes(element, lineWidthScale = 1) {\n const current = this.current;\n let dashArray = current.dashArray;\n if (lineWidthScale !== 1 && dashArray.length > 0) {\n dashArray = dashArray.map(function (value) {\n return lineWidthScale * value;\n });\n }\n element.setAttributeNS(null, \"stroke\", current.strokeColor);\n element.setAttributeNS(null, \"stroke-opacity\", current.strokeAlpha);\n element.setAttributeNS(null, \"stroke-miterlimit\", pf(current.miterLimit));\n element.setAttributeNS(null, \"stroke-linecap\", current.lineCap);\n element.setAttributeNS(null, \"stroke-linejoin\", current.lineJoin);\n element.setAttributeNS(null, \"stroke-width\", pf(lineWidthScale * current.lineWidth) + \"px\");\n element.setAttributeNS(null, \"stroke-dasharray\", dashArray.map(pf).join(\" \"));\n element.setAttributeNS(null, \"stroke-dashoffset\", pf(lineWidthScale * current.dashPhase) + \"px\");\n }\n eoFill() {\n this.current.element?.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n this.fill();\n }\n fillStroke() {\n this.stroke();\n this.fill();\n }\n eoFillStroke() {\n this.current.element?.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n this.fillStroke();\n }\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n closeEOFillStroke() {\n this.closePath();\n this.eoFillStroke();\n }\n paintSolidColorImageMask() {\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", \"1px\");\n rect.setAttributeNS(null, \"height\", \"1px\");\n rect.setAttributeNS(null, \"fill\", this.current.fillColor);\n this._ensureTransformGroup().append(rect);\n }\n paintImageXObject(objId) {\n const imgData = this.getObject(objId);\n if (!imgData) {\n (0, _util.warn)(`Dependent image with object ID ${objId} is not ready yet`);\n return;\n }\n this.paintInlineImageXObject(imgData);\n }\n paintInlineImageXObject(imgData, mask) {\n const width = imgData.width;\n const height = imgData.height;\n const imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask);\n const cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", \"0\");\n cliprect.setAttributeNS(null, \"y\", \"0\");\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n const imgEl = this.svgFactory.createElement(\"svg:image\");\n imgEl.setAttributeNS(XLINK_NS, \"xlink:href\", imgSrc);\n imgEl.setAttributeNS(null, \"x\", \"0\");\n imgEl.setAttributeNS(null, \"y\", pf(-height));\n imgEl.setAttributeNS(null, \"width\", pf(width) + \"px\");\n imgEl.setAttributeNS(null, \"height\", pf(height) + \"px\");\n imgEl.setAttributeNS(null, \"transform\", `scale(${pf(1 / width)} ${pf(-1 / height)})`);\n if (mask) {\n mask.append(imgEl);\n } else {\n this._ensureTransformGroup().append(imgEl);\n }\n }\n paintImageMaskXObject(img) {\n const imgData = this.getObject(img.data, img);\n if (imgData.bitmap) {\n (0, _util.warn)(\"paintImageMaskXObject: ImageBitmap support is not implemented, \" + \"ensure that the `isOffscreenCanvasSupported` API parameter is disabled.\");\n return;\n }\n const current = this.current;\n const width = imgData.width;\n const height = imgData.height;\n const fillColor = current.fillColor;\n current.maskId = `mask${maskCount++}`;\n const mask = this.svgFactory.createElement(\"svg:mask\");\n mask.setAttributeNS(null, \"id\", current.maskId);\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", pf(width));\n rect.setAttributeNS(null, \"height\", pf(height));\n rect.setAttributeNS(null, \"fill\", fillColor);\n rect.setAttributeNS(null, \"mask\", `url(#${current.maskId})`);\n this.defs.append(mask);\n this._ensureTransformGroup().append(rect);\n this.paintInlineImageXObject(imgData, mask);\n }\n paintFormXObjectBegin(matrix, bbox) {\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);\n }\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", bbox[0]);\n cliprect.setAttributeNS(null, \"y\", bbox[1]);\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n paintFormXObjectEnd() {}\n _initialize(viewport) {\n const svg = this.svgFactory.create(viewport.width, viewport.height);\n const definitions = this.svgFactory.createElement(\"svg:defs\");\n svg.append(definitions);\n this.defs = definitions;\n const rootGroup = this.svgFactory.createElement(\"svg:g\");\n rootGroup.setAttributeNS(null, \"transform\", pm(viewport.transform));\n svg.append(rootGroup);\n this.svg = rootGroup;\n return svg;\n }\n _ensureClipGroup() {\n if (!this.current.clipGroup) {\n const clipGroup = this.svgFactory.createElement(\"svg:g\");\n clipGroup.setAttributeNS(null, \"clip-path\", this.current.activeClipUrl);\n this.svg.append(clipGroup);\n this.current.clipGroup = clipGroup;\n }\n return this.current.clipGroup;\n }\n _ensureTransformGroup() {\n if (!this.tgrp) {\n this.tgrp = this.svgFactory.createElement(\"svg:g\");\n this.tgrp.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n if (this.current.activeClipUrl) {\n this._ensureClipGroup().append(this.tgrp);\n } else {\n this.svg.append(this.tgrp);\n }\n }\n return this.tgrp;\n }\n}\nexports.SVGGraphics = SVGGraphics;\n\n/***/ }),\n/* 25 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.XfaText = void 0;\nclass XfaText {\n static textContent(xfa) {\n const items = [];\n const output = {\n items,\n styles: Object.create(null)\n };\n function walk(node) {\n if (!node) {\n return;\n }\n let str = null;\n const name = node.name;\n if (name === \"#text\") {\n str = node.value;\n } else if (!XfaText.shouldBuildText(name)) {\n return;\n } else if (node?.attributes?.textContent) {\n str = node.attributes.textContent;\n } else if (node.value) {\n str = node.value;\n }\n if (str !== null) {\n items.push({\n str\n });\n }\n if (!node.children) {\n return;\n }\n for (const child of node.children) {\n walk(child);\n }\n }\n walk(xfa);\n return output;\n }\n static shouldBuildText(name) {\n return !(name === \"textarea\" || name === \"input\" || name === \"option\" || name === \"select\");\n }\n}\nexports.XfaText = XfaText;\n\n/***/ }),\n/* 26 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.TextLayerRenderTask = void 0;\nexports.renderTextLayer = renderTextLayer;\nexports.updateTextLayer = updateTextLayer;\nvar _util = __w_pdfjs_require__(1);\nvar _display_utils = __w_pdfjs_require__(6);\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nconst DEFAULT_FONT_ASCENT = 0.8;\nconst ascentCache = new Map();\nfunction getCtx(size, isOffscreenCanvasSupported) {\n let ctx;\n if (isOffscreenCanvasSupported && _util.FeatureTest.isOffscreenCanvasSupported) {\n ctx = new OffscreenCanvas(size, size).getContext(\"2d\", {\n alpha: false\n });\n } else {\n const canvas = document.createElement(\"canvas\");\n canvas.width = canvas.height = size;\n ctx = canvas.getContext(\"2d\", {\n alpha: false\n });\n }\n return ctx;\n}\nfunction getAscent(fontFamily, isOffscreenCanvasSupported) {\n const cachedAscent = ascentCache.get(fontFamily);\n if (cachedAscent) {\n return cachedAscent;\n }\n const ctx = getCtx(DEFAULT_FONT_SIZE, isOffscreenCanvasSupported);\n ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`;\n const metrics = ctx.measureText(\"\");\n let ascent = metrics.fontBoundingBoxAscent;\n let descent = Math.abs(metrics.fontBoundingBoxDescent);\n if (ascent) {\n const ratio = ascent / (ascent + descent);\n ascentCache.set(fontFamily, ratio);\n ctx.canvas.width = ctx.canvas.height = 0;\n return ratio;\n }\n ctx.strokeStyle = \"red\";\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"g\", 0, 0);\n let pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n descent = 0;\n for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) {\n if (pixels[i] > 0) {\n descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"A\", 0, DEFAULT_FONT_SIZE);\n pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n ascent = 0;\n for (let i = 0, ii = pixels.length; i < ii; i += 4) {\n if (pixels[i] > 0) {\n ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n ctx.canvas.width = ctx.canvas.height = 0;\n if (ascent) {\n const ratio = ascent / (ascent + descent);\n ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT);\n return DEFAULT_FONT_ASCENT;\n}\nfunction appendText(task, geom, styles) {\n const textDiv = document.createElement(\"span\");\n const textDivProperties = {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n fontSize: 0\n };\n task._textDivs.push(textDiv);\n const tx = _util.Util.transform(task._transform, geom.transform);\n let angle = Math.atan2(tx[1], tx[0]);\n const style = styles[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n const fontHeight = Math.hypot(tx[2], tx[3]);\n const fontAscent = fontHeight * getAscent(style.fontFamily, task._isOffscreenCanvasSupported);\n let left, top;\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + fontAscent * Math.sin(angle);\n top = tx[5] - fontAscent * Math.cos(angle);\n }\n const scaleFactorStr = \"calc(var(--scale-factor)*\";\n const divStyle = textDiv.style;\n if (task._container === task._rootContainer) {\n divStyle.left = `${(100 * left / task._pageWidth).toFixed(2)}%`;\n divStyle.top = `${(100 * top / task._pageHeight).toFixed(2)}%`;\n } else {\n divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`;\n divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`;\n }\n divStyle.fontSize = `${scaleFactorStr}${fontHeight.toFixed(2)}px)`;\n divStyle.fontFamily = style.fontFamily;\n textDivProperties.fontSize = fontHeight;\n textDiv.setAttribute(\"role\", \"presentation\");\n textDiv.textContent = geom.str;\n textDiv.dir = geom.dir;\n if (task._fontInspectorEnabled) {\n textDiv.dataset.fontName = geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n let shouldScaleText = false;\n if (geom.str.length > 1) {\n shouldScaleText = true;\n } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n const absScaleX = Math.abs(geom.transform[0]),\n absScaleY = Math.abs(geom.transform[3]);\n if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {\n shouldScaleText = true;\n }\n }\n if (shouldScaleText) {\n textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\n }\n task._textDivProperties.set(textDiv, textDivProperties);\n if (task._isReadableStream) {\n task._layoutText(textDiv);\n }\n}\nfunction layout(params) {\n const {\n div,\n scale,\n properties,\n ctx,\n prevFontSize,\n prevFontFamily\n } = params;\n const {\n style\n } = div;\n let transform = \"\";\n if (properties.canvasWidth !== 0 && properties.hasText) {\n const {\n fontFamily\n } = style;\n const {\n canvasWidth,\n fontSize\n } = properties;\n if (prevFontSize !== fontSize || prevFontFamily !== fontFamily) {\n ctx.font = `${fontSize * scale}px ${fontFamily}`;\n params.prevFontSize = fontSize;\n params.prevFontFamily = fontFamily;\n }\n const {\n width\n } = ctx.measureText(div.textContent);\n if (width > 0) {\n transform = `scaleX(${canvasWidth * scale / width})`;\n }\n }\n if (properties.angle !== 0) {\n transform = `rotate(${properties.angle}deg) ${transform}`;\n }\n if (transform.length > 0) {\n style.transform = transform;\n }\n}\nfunction render(task) {\n if (task._canceled) {\n return;\n }\n const textDivs = task._textDivs;\n const capability = task._capability;\n const textDivsLength = textDivs.length;\n if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {\n capability.resolve();\n return;\n }\n if (!task._isReadableStream) {\n for (const textDiv of textDivs) {\n task._layoutText(textDiv);\n }\n }\n capability.resolve();\n}\nclass TextLayerRenderTask {\n constructor({\n textContentSource,\n container,\n viewport,\n textDivs,\n textDivProperties,\n textContentItemsStr,\n isOffscreenCanvasSupported\n }) {\n this._textContentSource = textContentSource;\n this._isReadableStream = textContentSource instanceof ReadableStream;\n this._container = this._rootContainer = container;\n this._textDivs = textDivs || [];\n this._textContentItemsStr = textContentItemsStr || [];\n this._isOffscreenCanvasSupported = isOffscreenCanvasSupported;\n this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n this._reader = null;\n this._textDivProperties = textDivProperties || new WeakMap();\n this._canceled = false;\n this._capability = new _util.PromiseCapability();\n this._layoutTextParams = {\n prevFontSize: null,\n prevFontFamily: null,\n div: null,\n scale: viewport.scale * (globalThis.devicePixelRatio || 1),\n properties: null,\n ctx: getCtx(0, isOffscreenCanvasSupported)\n };\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n this._transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\n this._pageWidth = pageWidth;\n this._pageHeight = pageHeight;\n (0, _display_utils.setLayerDimensions)(container, viewport);\n this._capability.promise.finally(() => {\n this._layoutTextParams = null;\n }).catch(() => {});\n }\n get promise() {\n return this._capability.promise;\n }\n cancel() {\n this._canceled = true;\n if (this._reader) {\n this._reader.cancel(new _util.AbortException(\"TextLayer task cancelled.\")).catch(() => {});\n this._reader = null;\n }\n this._capability.reject(new _util.AbortException(\"TextLayer task cancelled.\"));\n }\n _processItems(items, styleCache) {\n for (const item of items) {\n if (item.str === undefined) {\n if (item.type === \"beginMarkedContentProps\" || item.type === \"beginMarkedContent\") {\n const parent = this._container;\n this._container = document.createElement(\"span\");\n this._container.classList.add(\"markedContent\");\n if (item.id !== null) {\n this._container.setAttribute(\"id\", `${item.id}`);\n }\n parent.append(this._container);\n } else if (item.type === \"endMarkedContent\") {\n this._container = this._container.parentNode;\n }\n continue;\n }\n this._textContentItemsStr.push(item.str);\n appendText(this, item, styleCache);\n }\n }\n _layoutText(textDiv) {\n const textDivProperties = this._layoutTextParams.properties = this._textDivProperties.get(textDiv);\n this._layoutTextParams.div = textDiv;\n layout(this._layoutTextParams);\n if (textDivProperties.hasText) {\n this._container.append(textDiv);\n }\n if (textDivProperties.hasEOL) {\n const br = document.createElement(\"br\");\n br.setAttribute(\"role\", \"presentation\");\n this._container.append(br);\n }\n }\n _render() {\n const capability = new _util.PromiseCapability();\n let styleCache = Object.create(null);\n if (this._isReadableStream) {\n const pump = () => {\n this._reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n capability.resolve();\n return;\n }\n Object.assign(styleCache, value.styles);\n this._processItems(value.items, styleCache);\n pump();\n }, capability.reject);\n };\n this._reader = this._textContentSource.getReader();\n pump();\n } else if (this._textContentSource) {\n const {\n items,\n styles\n } = this._textContentSource;\n this._processItems(items, styles);\n capability.resolve();\n } else {\n throw new Error('No \"textContentSource\" parameter specified.');\n }\n capability.promise.then(() => {\n styleCache = null;\n render(this);\n }, this._capability.reject);\n }\n}\nexports.TextLayerRenderTask = TextLayerRenderTask;\nfunction renderTextLayer(params) {\n if (!params.textContentSource && (params.textContent || params.textContentStream)) {\n (0, _display_utils.deprecated)(\"The TextLayerRender `textContent`/`textContentStream` parameters \" + \"will be removed in the future, please use `textContentSource` instead.\");\n params.textContentSource = params.textContent || params.textContentStream;\n }\n const {\n container,\n viewport\n } = params;\n const style = getComputedStyle(container);\n const visibility = style.getPropertyValue(\"visibility\");\n const scaleFactor = parseFloat(style.getPropertyValue(\"--scale-factor\"));\n if (visibility === \"visible\" && (!scaleFactor || Math.abs(scaleFactor - viewport.scale) > 1e-5)) {\n console.error(\"The `--scale-factor` CSS-variable must be set, \" + \"to the same value as `viewport.scale`, \" + \"either on the `container`-element itself or higher up in the DOM.\");\n }\n const task = new TextLayerRenderTask(params);\n task._render();\n return task;\n}\nfunction updateTextLayer({\n container,\n viewport,\n textDivs,\n textDivProperties,\n isOffscreenCanvasSupported,\n mustRotate = true,\n mustRescale = true\n}) {\n if (mustRotate) {\n (0, _display_utils.setLayerDimensions)(container, {\n rotation: viewport.rotation\n });\n }\n if (mustRescale) {\n const ctx = getCtx(0, isOffscreenCanvasSupported);\n const scale = viewport.scale * (globalThis.devicePixelRatio || 1);\n const params = {\n prevFontSize: null,\n prevFontFamily: null,\n div: null,\n scale,\n properties: null,\n ctx\n };\n for (const div of textDivs) {\n params.properties = textDivProperties.get(div);\n params.div = div;\n layout(params);\n }\n }\n}\n\n/***/ }),\n/* 27 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.AnnotationEditorLayer = void 0;\nvar _util = __w_pdfjs_require__(1);\nvar _editor = __w_pdfjs_require__(4);\nvar _freetext = __w_pdfjs_require__(28);\nvar _ink = __w_pdfjs_require__(33);\nvar _display_utils = __w_pdfjs_require__(6);\nvar _stamp = __w_pdfjs_require__(34);\nclass AnnotationEditorLayer {\n #accessibilityManager;\n #allowClick = false;\n #annotationLayer = null;\n #boundPointerup = this.pointerup.bind(this);\n #boundPointerdown = this.pointerdown.bind(this);\n #editors = new Map();\n #hadPointerDown = false;\n #isCleaningUp = false;\n #isDisabling = false;\n #uiManager;\n static _initialized = false;\n constructor({\n uiManager,\n pageIndex,\n div,\n accessibilityManager,\n annotationLayer,\n viewport,\n l10n\n }) {\n const editorTypes = [_freetext.FreeTextEditor, _ink.InkEditor, _stamp.StampEditor];\n if (!AnnotationEditorLayer._initialized) {\n AnnotationEditorLayer._initialized = true;\n for (const editorType of editorTypes) {\n editorType.initialize(l10n);\n }\n }\n uiManager.registerEditorTypes(editorTypes);\n this.#uiManager = uiManager;\n this.pageIndex = pageIndex;\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationLayer = annotationLayer;\n this.viewport = viewport;\n this.#uiManager.addLayer(this);\n }\n get isEmpty() {\n return this.#editors.size === 0;\n }\n updateToolbar(mode) {\n this.#uiManager.updateToolbar(mode);\n }\n updateMode(mode = this.#uiManager.getMode()) {\n this.#cleanup();\n if (mode === _util.AnnotationEditorType.INK) {\n this.addInkEditorIfNeeded(false);\n this.disableClick();\n } else {\n this.enableClick();\n }\n if (mode !== _util.AnnotationEditorType.NONE) {\n this.div.classList.toggle(\"freeTextEditing\", mode === _util.AnnotationEditorType.FREETEXT);\n this.div.classList.toggle(\"inkEditing\", mode === _util.AnnotationEditorType.INK);\n this.div.classList.toggle(\"stampEditing\", mode === _util.AnnotationEditorType.STAMP);\n this.div.hidden = false;\n }\n }\n addInkEditorIfNeeded(isCommitting) {\n if (!isCommitting && this.#uiManager.getMode() !== _util.AnnotationEditorType.INK) {\n return;\n }\n if (!isCommitting) {\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.setInBackground();\n return;\n }\n }\n }\n const editor = this.#createAndAddNewEditor({\n offsetX: 0,\n offsetY: 0\n }, false);\n editor.setInBackground();\n }\n setEditingState(isEditing) {\n this.#uiManager.setEditingState(isEditing);\n }\n addCommands(params) {\n this.#uiManager.addCommands(params);\n }\n enable() {\n this.div.style.pointerEvents = \"auto\";\n const annotationElementIds = new Set();\n for (const editor of this.#editors.values()) {\n editor.enableEditing();\n if (editor.annotationElementId) {\n annotationElementIds.add(editor.annotationElementId);\n }\n }\n if (!this.#annotationLayer) {\n return;\n }\n const editables = this.#annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n editable.hide();\n if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) {\n continue;\n }\n if (annotationElementIds.has(editable.data.id)) {\n continue;\n }\n const editor = this.deserialize(editable);\n if (!editor) {\n continue;\n }\n this.addOrRebuild(editor);\n editor.enableEditing();\n }\n }\n disable() {\n this.#isDisabling = true;\n this.div.style.pointerEvents = \"none\";\n const hiddenAnnotationIds = new Set();\n for (const editor of this.#editors.values()) {\n editor.disableEditing();\n if (!editor.annotationElementId || editor.serialize() !== null) {\n hiddenAnnotationIds.add(editor.annotationElementId);\n continue;\n }\n this.getEditableAnnotation(editor.annotationElementId)?.show();\n editor.remove();\n }\n if (this.#annotationLayer) {\n const editables = this.#annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n const {\n id\n } = editable.data;\n if (hiddenAnnotationIds.has(id) || this.#uiManager.isDeletedAnnotationElement(id)) {\n continue;\n }\n editable.show();\n }\n }\n this.#cleanup();\n if (this.isEmpty) {\n this.div.hidden = true;\n }\n this.#isDisabling = false;\n }\n getEditableAnnotation(id) {\n return this.#annotationLayer?.getEditableAnnotation(id) || null;\n }\n setActiveEditor(editor) {\n const currentActive = this.#uiManager.getActive();\n if (currentActive === editor) {\n return;\n }\n this.#uiManager.setActiveEditor(editor);\n }\n enableClick() {\n this.div.addEventListener(\"pointerdown\", this.#boundPointerdown);\n this.div.addEventListener(\"pointerup\", this.#boundPointerup);\n }\n disableClick() {\n this.div.removeEventListener(\"pointerdown\", this.#boundPointerdown);\n this.div.removeEventListener(\"pointerup\", this.#boundPointerup);\n }\n attach(editor) {\n this.#editors.set(editor.id, editor);\n const {\n annotationElementId\n } = editor;\n if (annotationElementId && this.#uiManager.isDeletedAnnotationElement(annotationElementId)) {\n this.#uiManager.removeDeletedAnnotationElement(editor);\n }\n }\n detach(editor) {\n this.#editors.delete(editor.id);\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n if (!this.#isDisabling && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor);\n }\n }\n remove(editor) {\n this.detach(editor);\n this.#uiManager.removeEditor(editor);\n if (editor.div.contains(document.activeElement)) {\n setTimeout(() => {\n this.#uiManager.focusMainContainer();\n }, 0);\n }\n editor.div.remove();\n editor.isAttachedToDOM = false;\n if (!this.#isCleaningUp) {\n this.addInkEditorIfNeeded(false);\n }\n }\n changeParent(editor) {\n if (editor.parent === this) {\n return;\n }\n if (editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor.annotationElementId);\n _editor.AnnotationEditor.deleteAnnotationElement(editor);\n editor.annotationElementId = null;\n }\n this.attach(editor);\n editor.parent?.detach(editor);\n editor.setParent(this);\n if (editor.div && editor.isAttachedToDOM) {\n editor.div.remove();\n this.div.append(editor.div);\n }\n }\n add(editor) {\n this.changeParent(editor);\n this.#uiManager.addEditor(editor);\n this.attach(editor);\n if (!editor.isAttachedToDOM) {\n const div = editor.render();\n this.div.append(div);\n editor.isAttachedToDOM = true;\n }\n editor.fixAndSetPosition();\n editor.onceAdded();\n this.#uiManager.addToAnnotationStorage(editor);\n }\n moveEditorInDOM(editor) {\n if (!editor.isAttachedToDOM) {\n return;\n }\n const {\n activeElement\n } = document;\n if (editor.div.contains(activeElement)) {\n editor._focusEventsAllowed = false;\n setTimeout(() => {\n if (!editor.div.contains(document.activeElement)) {\n editor.div.addEventListener(\"focusin\", () => {\n editor._focusEventsAllowed = true;\n }, {\n once: true\n });\n activeElement.focus();\n } else {\n editor._focusEventsAllowed = true;\n }\n }, 0);\n }\n editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(this.div, editor.div, editor.contentDiv, true);\n }\n addOrRebuild(editor) {\n if (editor.needsToBeRebuilt()) {\n editor.rebuild();\n } else {\n this.add(editor);\n }\n }\n addUndoableEditor(editor) {\n const cmd = () => editor._uiManager.rebuild(editor);\n const undo = () => {\n editor.remove();\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: false\n });\n }\n getNextId() {\n return this.#uiManager.getId();\n }\n #createNewEditor(params) {\n switch (this.#uiManager.getMode()) {\n case _util.AnnotationEditorType.FREETEXT:\n return new _freetext.FreeTextEditor(params);\n case _util.AnnotationEditorType.INK:\n return new _ink.InkEditor(params);\n case _util.AnnotationEditorType.STAMP:\n return new _stamp.StampEditor(params);\n }\n return null;\n }\n pasteEditor(mode, params) {\n this.#uiManager.updateToolbar(mode);\n this.#uiManager.updateMode(mode);\n const {\n offsetX,\n offsetY\n } = this.#getCenterPoint();\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: offsetX,\n y: offsetY,\n uiManager: this.#uiManager,\n isCentered: true,\n ...params\n });\n if (editor) {\n this.add(editor);\n }\n }\n deserialize(data) {\n switch (data.annotationType ?? data.annotationEditorType) {\n case _util.AnnotationEditorType.FREETEXT:\n return _freetext.FreeTextEditor.deserialize(data, this, this.#uiManager);\n case _util.AnnotationEditorType.INK:\n return _ink.InkEditor.deserialize(data, this, this.#uiManager);\n case _util.AnnotationEditorType.STAMP:\n return _stamp.StampEditor.deserialize(data, this, this.#uiManager);\n }\n return null;\n }\n #createAndAddNewEditor(event, isCentered) {\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: event.offsetX,\n y: event.offsetY,\n uiManager: this.#uiManager,\n isCentered\n });\n if (editor) {\n this.add(editor);\n }\n return editor;\n }\n #getCenterPoint() {\n const {\n x,\n y,\n width,\n height\n } = this.div.getBoundingClientRect();\n const tlX = Math.max(0, x);\n const tlY = Math.max(0, y);\n const brX = Math.min(window.innerWidth, x + width);\n const brY = Math.min(window.innerHeight, y + height);\n const centerX = (tlX + brX) / 2 - x;\n const centerY = (tlY + brY) / 2 - y;\n const [offsetX, offsetY] = this.viewport.rotation % 180 === 0 ? [centerX, centerY] : [centerY, centerX];\n return {\n offsetX,\n offsetY\n };\n }\n addNewEditor() {\n this.#createAndAddNewEditor(this.#getCenterPoint(), true);\n }\n setSelected(editor) {\n this.#uiManager.setSelected(editor);\n }\n toggleSelected(editor) {\n this.#uiManager.toggleSelected(editor);\n }\n isSelected(editor) {\n return this.#uiManager.isSelected(editor);\n }\n unselect(editor) {\n this.#uiManager.unselect(editor);\n }\n pointerup(event) {\n const {\n isMac\n } = _util.FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n if (!this.#hadPointerDown) {\n return;\n }\n this.#hadPointerDown = false;\n if (!this.#allowClick) {\n this.#allowClick = true;\n return;\n }\n if (this.#uiManager.getMode() === _util.AnnotationEditorType.STAMP) {\n this.#uiManager.unselectAll();\n return;\n }\n this.#createAndAddNewEditor(event, false);\n }\n pointerdown(event) {\n if (this.#hadPointerDown) {\n this.#hadPointerDown = false;\n return;\n }\n const {\n isMac\n } = _util.FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n this.#hadPointerDown = true;\n const editor = this.#uiManager.getActive();\n this.#allowClick = !editor || editor.isEmpty();\n }\n findNewParent(editor, x, y) {\n const layer = this.#uiManager.findParent(x, y);\n if (layer === null || layer === this) {\n return false;\n }\n layer.changeParent(editor);\n return true;\n }\n destroy() {\n if (this.#uiManager.getActive()?.parent === this) {\n this.#uiManager.commitOrRemove();\n this.#uiManager.setActiveEditor(null);\n }\n for (const editor of this.#editors.values()) {\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n editor.setParent(null);\n editor.isAttachedToDOM = false;\n editor.div.remove();\n }\n this.div = null;\n this.#editors.clear();\n this.#uiManager.removeLayer(this);\n }\n #cleanup() {\n this.#isCleaningUp = true;\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.remove();\n }\n }\n this.#isCleaningUp = false;\n }\n render({\n viewport\n }) {\n this.viewport = viewport;\n (0, _display_utils.setLayerDimensions)(this.div, viewport);\n for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n this.add(editor);\n }\n this.updateMode();\n }\n update({\n viewport\n }) {\n this.#uiManager.commitOrRemove();\n this.viewport = viewport;\n (0, _display_utils.setLayerDimensions)(this.div, {\n rotation: viewport.rotation\n });\n this.updateMode();\n }\n get pageDimensions() {\n const {\n pageWidth,\n pageHeight\n } = this.viewport.rawDims;\n return [pageWidth, pageHeight];\n }\n}\nexports.AnnotationEditorLayer = AnnotationEditorLayer;\n\n/***/ }),\n/* 28 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.FreeTextEditor = void 0;\nvar _util = __w_pdfjs_require__(1);\nvar _tools = __w_pdfjs_require__(5);\nvar _editor = __w_pdfjs_require__(4);\nvar _annotation_layer = __w_pdfjs_require__(29);\nclass FreeTextEditor extends _editor.AnnotationEditor {\n #boundEditorDivBlur = this.editorDivBlur.bind(this);\n #boundEditorDivFocus = this.editorDivFocus.bind(this);\n #boundEditorDivInput = this.editorDivInput.bind(this);\n #boundEditorDivKeydown = this.editorDivKeydown.bind(this);\n #color;\n #content = \"\";\n #editorDivId = `${this.id}-editor`;\n #fontSize;\n #initialData = null;\n static _freeTextDefaultContent = \"\";\n static _internalPadding = 0;\n static _defaultColor = null;\n static _defaultFontSize = 10;\n static get _keyboardManager() {\n const proto = FreeTextEditor.prototype;\n const arrowChecker = self => self.isEmpty();\n const small = _tools.AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = _tools.AnnotationEditorUIManager.TRANSLATE_BIG;\n return (0, _util.shadow)(this, \"_keyboardManager\", new _tools.KeyboardManager([[[\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"], proto.commitOrRemove, {\n bubbles: true\n }], [[\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"], proto.commitOrRemove], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._translateEmpty, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto._translateEmpty, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._translateEmpty, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto._translateEmpty, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._translateEmpty, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto._translateEmpty, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._translateEmpty, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto._translateEmpty, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n static _type = \"freetext\";\n constructor(params) {\n super({\n ...params,\n name: \"freeTextEditor\"\n });\n this.#color = params.color || FreeTextEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor;\n this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n }\n static initialize(l10n) {\n _editor.AnnotationEditor.initialize(l10n, {\n strings: [\"free_text2_default_content\", \"editor_free_text2_aria_label\"]\n });\n const style = getComputedStyle(document.documentElement);\n this._internalPadding = parseFloat(style.getPropertyValue(\"--freetext-padding\"));\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case _util.AnnotationEditorParamsType.FREETEXT_SIZE:\n FreeTextEditor._defaultFontSize = value;\n break;\n case _util.AnnotationEditorParamsType.FREETEXT_COLOR:\n FreeTextEditor._defaultColor = value;\n break;\n }\n }\n updateParams(type, value) {\n switch (type) {\n case _util.AnnotationEditorParamsType.FREETEXT_SIZE:\n this.#updateFontSize(value);\n break;\n case _util.AnnotationEditorParamsType.FREETEXT_COLOR:\n this.#updateColor(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[_util.AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [_util.AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor]];\n }\n get propertiesToUpdate() {\n return [[_util.AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize], [_util.AnnotationEditorParamsType.FREETEXT_COLOR, this.#color]];\n }\n #updateFontSize(fontSize) {\n const setFontsize = size => {\n this.editorDiv.style.fontSize = `calc(${size}px * var(--scale-factor))`;\n this.translate(0, -(size - this.#fontSize) * this.parentScale);\n this.#fontSize = size;\n this.#setEditorDimensions();\n };\n const savedFontsize = this.#fontSize;\n this.addCommands({\n cmd: () => {\n setFontsize(fontSize);\n },\n undo: () => {\n setFontsize(savedFontsize);\n },\n mustExec: true,\n type: _util.AnnotationEditorParamsType.FREETEXT_SIZE,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n #updateColor(color) {\n const savedColor = this.#color;\n this.addCommands({\n cmd: () => {\n this.#color = this.editorDiv.style.color = color;\n },\n undo: () => {\n this.#color = this.editorDiv.style.color = savedColor;\n },\n mustExec: true,\n type: _util.AnnotationEditorParamsType.FREETEXT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _translateEmpty(x, y) {\n this._uiManager.translateSelectedEditors(x, y, true);\n }\n getInitialTranslation() {\n const scale = this.parentScale;\n return [-FreeTextEditor._internalPadding * scale, -(FreeTextEditor._internalPadding + this.#fontSize) * scale];\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n enableEditMode() {\n if (this.isInEditMode()) {\n return;\n }\n this.parent.setEditingState(false);\n this.parent.updateToolbar(_util.AnnotationEditorType.FREETEXT);\n super.enableEditMode();\n this.overlayDiv.classList.remove(\"enabled\");\n this.editorDiv.contentEditable = true;\n this._isDraggable = false;\n this.div.removeAttribute(\"aria-activedescendant\");\n this.editorDiv.addEventListener(\"keydown\", this.#boundEditorDivKeydown);\n this.editorDiv.addEventListener(\"focus\", this.#boundEditorDivFocus);\n this.editorDiv.addEventListener(\"blur\", this.#boundEditorDivBlur);\n this.editorDiv.addEventListener(\"input\", this.#boundEditorDivInput);\n }\n disableEditMode() {\n if (!this.isInEditMode()) {\n return;\n }\n this.parent.setEditingState(true);\n super.disableEditMode();\n this.overlayDiv.classList.add(\"enabled\");\n this.editorDiv.contentEditable = false;\n this.div.setAttribute(\"aria-activedescendant\", this.#editorDivId);\n this._isDraggable = true;\n this.editorDiv.removeEventListener(\"keydown\", this.#boundEditorDivKeydown);\n this.editorDiv.removeEventListener(\"focus\", this.#boundEditorDivFocus);\n this.editorDiv.removeEventListener(\"blur\", this.#boundEditorDivBlur);\n this.editorDiv.removeEventListener(\"input\", this.#boundEditorDivInput);\n this.div.focus({\n preventScroll: true\n });\n this.isEditing = false;\n this.parent.div.classList.add(\"freeTextEditing\");\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n super.focusin(event);\n if (event.target !== this.editorDiv) {\n this.editorDiv.focus();\n }\n }\n onceAdded() {\n if (this.width) {\n this.#cheatInitialRect();\n return;\n }\n this.enableEditMode();\n this.editorDiv.focus();\n if (this._initialOptions?.isCentered) {\n this.center();\n }\n this._initialOptions = null;\n }\n isEmpty() {\n return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n }\n remove() {\n this.isEditing = false;\n if (this.parent) {\n this.parent.setEditingState(true);\n this.parent.div.classList.add(\"freeTextEditing\");\n }\n super.remove();\n }\n #extractText() {\n const divs = this.editorDiv.getElementsByTagName(\"div\");\n if (divs.length === 0) {\n return this.editorDiv.innerText;\n }\n const buffer = [];\n for (const div of divs) {\n buffer.push(div.innerText.replace(/\\r\\n?|\\n/, \"\"));\n }\n return buffer.join(\"\\n\");\n }\n #setEditorDimensions() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n let rect;\n if (this.isAttachedToDOM) {\n rect = this.div.getBoundingClientRect();\n } else {\n const {\n currentLayer,\n div\n } = this;\n const savedDisplay = div.style.display;\n div.style.display = \"hidden\";\n currentLayer.div.append(this.div);\n rect = div.getBoundingClientRect();\n div.remove();\n div.style.display = savedDisplay;\n }\n if (this.rotation % 180 === this.parentRotation % 180) {\n this.width = rect.width / parentWidth;\n this.height = rect.height / parentHeight;\n } else {\n this.width = rect.height / parentWidth;\n this.height = rect.width / parentHeight;\n }\n this.fixAndSetPosition();\n }\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n super.commit();\n this.disableEditMode();\n const savedText = this.#content;\n const newText = this.#content = this.#extractText().trimEnd();\n if (savedText === newText) {\n return;\n }\n const setText = text => {\n this.#content = text;\n if (!text) {\n this.remove();\n return;\n }\n this.#setContent();\n this._uiManager.rebuild(this);\n this.#setEditorDimensions();\n };\n this.addCommands({\n cmd: () => {\n setText(newText);\n },\n undo: () => {\n setText(savedText);\n },\n mustExec: false\n });\n this.#setEditorDimensions();\n }\n shouldGetKeyboardEvents() {\n return this.isInEditMode();\n }\n enterInEditMode() {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n dblclick(event) {\n this.enterInEditMode();\n }\n keydown(event) {\n if (event.target === this.div && event.key === \"Enter\") {\n this.enterInEditMode();\n event.preventDefault();\n }\n }\n editorDivKeydown(event) {\n FreeTextEditor._keyboardManager.exec(this, event);\n }\n editorDivFocus(event) {\n this.isEditing = true;\n }\n editorDivBlur(event) {\n this.isEditing = false;\n }\n editorDivInput(event) {\n this.parent.div.classList.toggle(\"freeTextEditing\", this.isEmpty());\n }\n disableEditing() {\n this.editorDiv.setAttribute(\"role\", \"comment\");\n this.editorDiv.removeAttribute(\"aria-multiline\");\n }\n enableEditing() {\n this.editorDiv.setAttribute(\"role\", \"textbox\");\n this.editorDiv.setAttribute(\"aria-multiline\", true);\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.editorDiv = document.createElement(\"div\");\n this.editorDiv.className = \"internal\";\n this.editorDiv.setAttribute(\"id\", this.#editorDivId);\n this.enableEditing();\n _editor.AnnotationEditor._l10nPromise.get(\"editor_free_text2_aria_label\").then(msg => this.editorDiv?.setAttribute(\"aria-label\", msg));\n _editor.AnnotationEditor._l10nPromise.get(\"free_text2_default_content\").then(msg => this.editorDiv?.setAttribute(\"default-content\", msg));\n this.editorDiv.contentEditable = true;\n const {\n style\n } = this.editorDiv;\n style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\n style.color = this.#color;\n this.div.append(this.editorDiv);\n this.overlayDiv = document.createElement(\"div\");\n this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n this.div.append(this.overlayDiv);\n (0, _tools.bindEvents)(this, this.div, [\"dblclick\", \"keydown\"]);\n if (this.width) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.annotationElementId) {\n const {\n position\n } = this.#initialData;\n let [tx, ty] = this.getInitialTranslation();\n [tx, ty] = this.pageTranslationToScreen(tx, ty);\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n let posX, posY;\n switch (this.rotation) {\n case 0:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY + this.height - (position[1] - pageY) / pageHeight;\n break;\n case 90:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [ty, -tx];\n break;\n case 180:\n posX = baseX - this.width + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [-tx, -ty];\n break;\n case 270:\n posX = baseX + (position[0] - pageX - this.height * pageHeight) / pageWidth;\n posY = baseY + (position[1] - pageY - this.width * pageWidth) / pageHeight;\n [tx, ty] = [-ty, tx];\n break;\n }\n this.setAt(posX * parentWidth, posY * parentHeight, tx, ty);\n } else {\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n }\n this.#setContent();\n this._isDraggable = true;\n this.editorDiv.contentEditable = false;\n } else {\n this._isDraggable = false;\n this.editorDiv.contentEditable = true;\n }\n return this.div;\n }\n #setContent() {\n this.editorDiv.replaceChildren();\n if (!this.#content) {\n return;\n }\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n this.editorDiv.append(div);\n }\n }\n get contentDiv() {\n return this.editorDiv;\n }\n static deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof _annotation_layer.FreeTextAnnotationElement) {\n const {\n data: {\n defaultAppearanceData: {\n fontSize,\n fontColor\n },\n rect,\n rotation,\n id\n },\n textContent,\n textPosition,\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n if (!textContent || textContent.length === 0) {\n return null;\n }\n initialData = data = {\n annotationType: _util.AnnotationEditorType.FREETEXT,\n color: Array.from(fontColor),\n fontSize,\n value: textContent.join(\"\\n\"),\n position: textPosition,\n pageIndex: pageNumber - 1,\n rect,\n rotation,\n id,\n deleted: false\n };\n }\n const editor = super.deserialize(data, parent, uiManager);\n editor.#fontSize = data.fontSize;\n editor.#color = _util.Util.makeHexColor(...data.color);\n editor.#content = data.value;\n editor.annotationElementId = data.id || null;\n editor.#initialData = initialData;\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return {\n pageIndex: this.pageIndex,\n id: this.annotationElementId,\n deleted: true\n };\n }\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n const rect = this.getRect(padding, padding);\n const color = _editor.AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.#color);\n const serialized = {\n annotationType: _util.AnnotationEditorType.FREETEXT,\n color,\n fontSize: this.#fontSize,\n value: this.#content,\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\n return serialized;\n }\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n value,\n fontSize,\n color,\n rect,\n pageIndex\n } = this.#initialData;\n return serialized.value !== value || serialized.fontSize !== fontSize || serialized.rect.some((x, i) => Math.abs(x - rect[i]) >= 1) || serialized.color.some((c, i) => c !== color[i]) || serialized.pageIndex !== pageIndex;\n }\n #cheatInitialRect(delayed = false) {\n if (!this.annotationElementId) {\n return;\n }\n this.#setEditorDimensions();\n if (!delayed && (this.width === 0 || this.height === 0)) {\n setTimeout(() => this.#cheatInitialRect(true), 0);\n return;\n }\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n this.#initialData.rect = this.getRect(padding, padding);\n }\n}\nexports.FreeTextEditor = FreeTextEditor;\n\n/***/ }),\n/* 29 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.StampAnnotationElement = exports.InkAnnotationElement = exports.FreeTextAnnotationElement = exports.AnnotationLayer = void 0;\nvar _util = __w_pdfjs_require__(1);\nvar _display_utils = __w_pdfjs_require__(6);\nvar _annotation_storage = __w_pdfjs_require__(3);\nvar _scripting_utils = __w_pdfjs_require__(30);\nvar _displayL10n_utils = __w_pdfjs_require__(31);\nvar _xfa_layer = __w_pdfjs_require__(32);\nconst DEFAULT_TAB_INDEX = 1000;\nconst DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\nfunction getRectDims(rect) {\n return {\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n}\nclass AnnotationElementFactory {\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n switch (subtype) {\n case _util.AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n case _util.AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n case _util.AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n return new PushButtonWidgetAnnotationElement(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n case \"Sig\":\n return new SignatureWidgetAnnotationElement(parameters);\n }\n return new WidgetAnnotationElement(parameters);\n case _util.AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n case _util.AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n case _util.AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n case _util.AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n case _util.AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n case _util.AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n case _util.AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n case _util.AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n case _util.AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n case _util.AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n case _util.AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n case _util.AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n case _util.AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n case _util.AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n case _util.AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\nclass AnnotationElement {\n #hasBorder = false;\n constructor(parameters, {\n isRenderable = false,\n ignoreBorder = false,\n createQuadrilaterals = false\n } = {}) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderForms = parameters.renderForms;\n this.svgFactory = parameters.svgFactory;\n this.annotationStorage = parameters.annotationStorage;\n this.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n this.parent = parameters.parent;\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this._createQuadrilaterals();\n }\n }\n static _hasPopupData({\n titleObj,\n contentsObj,\n richText\n }) {\n return !!(titleObj?.str || contentsObj?.str || richText?.str);\n }\n get hasPopupData() {\n return AnnotationElement._hasPopupData(this.data);\n }\n _createContainer(ignoreBorder) {\n const {\n data,\n parent: {\n page,\n viewport\n }\n } = this;\n const container = document.createElement(\"section\");\n container.setAttribute(\"data-annotation-id\", data.id);\n if (!(this instanceof WidgetAnnotationElement)) {\n container.tabIndex = DEFAULT_TAB_INDEX;\n }\n container.style.zIndex = this.parent.zIndex++;\n if (this.data.popupRef) {\n container.setAttribute(\"aria-haspopup\", \"dialog\");\n }\n if (data.noRotate) {\n container.classList.add(\"norotate\");\n }\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n if (!data.rect || this instanceof PopupAnnotationElement) {\n const {\n rotation\n } = data;\n if (!data.hasOwnCanvas && rotation !== 0) {\n this.setRotation(rotation, container);\n }\n return container;\n }\n const {\n width,\n height\n } = getRectDims(data.rect);\n const rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);\n if (!ignoreBorder && data.borderStyle.width > 0) {\n container.style.borderWidth = `${data.borderStyle.width}px`;\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `calc(${horizontalRadius}px * var(--scale-factor)) / calc(${verticalRadius}px * var(--scale-factor))`;\n container.style.borderRadius = radius;\n } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n const radius = `calc(${width}px * var(--scale-factor)) / calc(${height}px * var(--scale-factor))`;\n container.style.borderRadius = radius;\n }\n switch (data.borderStyle.style) {\n case _util.AnnotationBorderStyleType.SOLID:\n container.style.borderStyle = \"solid\";\n break;\n case _util.AnnotationBorderStyleType.DASHED:\n container.style.borderStyle = \"dashed\";\n break;\n case _util.AnnotationBorderStyleType.BEVELED:\n (0, _util.warn)(\"Unimplemented border style: beveled\");\n break;\n case _util.AnnotationBorderStyleType.INSET:\n (0, _util.warn)(\"Unimplemented border style: inset\");\n break;\n case _util.AnnotationBorderStyleType.UNDERLINE:\n container.style.borderBottomStyle = \"solid\";\n break;\n default:\n break;\n }\n const borderColor = data.borderColor || null;\n if (borderColor) {\n this.#hasBorder = true;\n container.style.borderColor = _util.Util.makeHexColor(borderColor[0] | 0, borderColor[1] | 0, borderColor[2] | 0);\n } else {\n container.style.borderWidth = 0;\n }\n }\n container.style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n container.style.top = `${100 * (rect[1] - pageY) / pageHeight}%`;\n const {\n rotation\n } = data;\n if (data.hasOwnCanvas || rotation === 0) {\n container.style.width = `${100 * width / pageWidth}%`;\n container.style.height = `${100 * height / pageHeight}%`;\n } else {\n this.setRotation(rotation, container);\n }\n return container;\n }\n setRotation(angle, container = this.container) {\n if (!this.data.rect) {\n return;\n }\n const {\n pageWidth,\n pageHeight\n } = this.parent.viewport.rawDims;\n const {\n width,\n height\n } = getRectDims(this.data.rect);\n let elementWidth, elementHeight;\n if (angle % 180 === 0) {\n elementWidth = 100 * width / pageWidth;\n elementHeight = 100 * height / pageHeight;\n } else {\n elementWidth = 100 * height / pageWidth;\n elementHeight = 100 * width / pageHeight;\n }\n container.style.width = `${elementWidth}%`;\n container.style.height = `${elementHeight}%`;\n container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n }\n get _commonActions() {\n const setColor = (jsName, styleName, event) => {\n const color = event.detail[jsName];\n const colorType = color[0];\n const colorArray = color.slice(1);\n event.target.style[styleName] = _scripting_utils.ColorConverters[`${colorType}_HTML`](colorArray);\n this.annotationStorage.setValue(this.data.id, {\n [styleName]: _scripting_utils.ColorConverters[`${colorType}_rgb`](colorArray)\n });\n };\n return (0, _util.shadow)(this, \"_commonActions\", {\n display: event => {\n const {\n display\n } = event.detail;\n const hidden = display % 2 === 1;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noView: hidden,\n noPrint: display === 1 || display === 2\n });\n },\n print: event => {\n this.annotationStorage.setValue(this.data.id, {\n noPrint: !event.detail.print\n });\n },\n hidden: event => {\n const {\n hidden\n } = event.detail;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noPrint: hidden,\n noView: hidden\n });\n },\n focus: event => {\n setTimeout(() => event.target.focus({\n preventScroll: false\n }), 0);\n },\n userName: event => {\n event.target.title = event.detail.userName;\n },\n readonly: event => {\n event.target.disabled = event.detail.readonly;\n },\n required: event => {\n this._setRequired(event.target, event.detail.required);\n },\n bgColor: event => {\n setColor(\"bgColor\", \"backgroundColor\", event);\n },\n fillColor: event => {\n setColor(\"fillColor\", \"backgroundColor\", event);\n },\n fgColor: event => {\n setColor(\"fgColor\", \"color\", event);\n },\n textColor: event => {\n setColor(\"textColor\", \"color\", event);\n },\n borderColor: event => {\n setColor(\"borderColor\", \"borderColor\", event);\n },\n strokeColor: event => {\n setColor(\"strokeColor\", \"borderColor\", event);\n },\n rotation: event => {\n const angle = event.detail.rotation;\n this.setRotation(angle);\n this.annotationStorage.setValue(this.data.id, {\n rotation: angle\n });\n }\n });\n }\n _dispatchEventFromSandbox(actions, jsEvent) {\n const commonActions = this._commonActions;\n for (const name of Object.keys(jsEvent.detail)) {\n const action = actions[name] || commonActions[name];\n action?.(jsEvent);\n }\n }\n _setDefaultPropertiesFromJS(element) {\n if (!this.enableScripting) {\n return;\n }\n const storedData = this.annotationStorage.getRawValue(this.data.id);\n if (!storedData) {\n return;\n }\n const commonActions = this._commonActions;\n for (const [actionName, detail] of Object.entries(storedData)) {\n const action = commonActions[actionName];\n if (action) {\n const eventProxy = {\n detail: {\n [actionName]: detail\n },\n target: element\n };\n action(eventProxy);\n delete storedData[actionName];\n }\n }\n }\n _createQuadrilaterals() {\n if (!this.container) {\n return;\n }\n const {\n quadPoints\n } = this.data;\n if (!quadPoints) {\n return;\n }\n const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect;\n if (quadPoints.length === 1) {\n const [, {\n x: trX,\n y: trY\n }, {\n x: blX,\n y: blY\n }] = quadPoints[0];\n if (rectTrX === trX && rectTrY === trY && rectBlX === blX && rectBlY === blY) {\n return;\n }\n }\n const {\n style\n } = this.container;\n let svgBuffer;\n if (this.#hasBorder) {\n const {\n borderColor,\n borderWidth\n } = style;\n style.borderWidth = 0;\n svgBuffer = [\"url('data:image/svg+xml;utf8,\", ``, ``];\n this.container.classList.add(\"hasBorder\");\n }\n const width = rectTrX - rectBlX;\n const height = rectTrY - rectBlY;\n const {\n svgFactory\n } = this;\n const svg = svgFactory.createElement(\"svg\");\n svg.classList.add(\"quadrilateralsContainer\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n const defs = svgFactory.createElement(\"defs\");\n svg.append(defs);\n const clipPath = svgFactory.createElement(\"clipPath\");\n const id = `clippath_${this.data.id}`;\n clipPath.setAttribute(\"id\", id);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n defs.append(clipPath);\n for (const [, {\n x: trX,\n y: trY\n }, {\n x: blX,\n y: blY\n }] of quadPoints) {\n const rect = svgFactory.createElement(\"rect\");\n const x = (blX - rectBlX) / width;\n const y = (rectTrY - trY) / height;\n const rectWidth = (trX - blX) / width;\n const rectHeight = (trY - blY) / height;\n rect.setAttribute(\"x\", x);\n rect.setAttribute(\"y\", y);\n rect.setAttribute(\"width\", rectWidth);\n rect.setAttribute(\"height\", rectHeight);\n clipPath.append(rect);\n svgBuffer?.push(``);\n }\n if (this.#hasBorder) {\n svgBuffer.push(`')`);\n style.backgroundImage = svgBuffer.join(\"\");\n }\n this.container.append(svg);\n this.container.style.clipPath = `url(#${id})`;\n }\n _createPopup() {\n const {\n container,\n data\n } = this;\n container.setAttribute(\"aria-haspopup\", \"dialog\");\n const popup = new PopupAnnotationElement({\n data: {\n color: data.color,\n titleObj: data.titleObj,\n modificationDate: data.modificationDate,\n contentsObj: data.contentsObj,\n richText: data.richText,\n parentRect: data.rect,\n borderStyle: 0,\n id: `popup_${data.id}`,\n rotation: data.rotation\n },\n parent: this.parent,\n elements: [this]\n });\n this.parent.div.append(popup.render());\n }\n render() {\n (0, _util.unreachable)(\"Abstract method `AnnotationElement.render` called\");\n }\n _getElementsByName(name, skipId = null) {\n const fields = [];\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects[name];\n if (fieldObj) {\n for (const {\n page,\n id,\n exportValues\n } of fieldObj) {\n if (page === -1) {\n continue;\n }\n if (id === skipId) {\n continue;\n }\n const exportValue = typeof exportValues === \"string\" ? exportValues : null;\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n (0, _util.warn)(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n }\n return fields;\n }\n for (const domElement of document.getElementsByName(name)) {\n const {\n exportValue\n } = domElement;\n const id = domElement.getAttribute(\"data-element-id\");\n if (id === skipId) {\n continue;\n }\n if (!GetElementsByNameSet.has(domElement)) {\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n return fields;\n }\n show() {\n if (this.container) {\n this.container.hidden = false;\n }\n this.popup?.maybeShow();\n }\n hide() {\n if (this.container) {\n this.container.hidden = true;\n }\n this.popup?.forceHide();\n }\n getElementsToTriggerPopup() {\n return this.container;\n }\n addHighlightArea() {\n const triggers = this.getElementsToTriggerPopup();\n if (Array.isArray(triggers)) {\n for (const element of triggers) {\n element.classList.add(\"highlightArea\");\n }\n } else {\n triggers.classList.add(\"highlightArea\");\n }\n }\n _editOnDoubleClick() {\n const {\n annotationEditorType: mode,\n data: {\n id: editId\n }\n } = this;\n this.container.addEventListener(\"dblclick\", () => {\n this.linkService.eventBus?.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode,\n editId\n });\n });\n }\n}\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters, options = null) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: !!options?.ignoreBorder,\n createQuadrilaterals: true\n });\n this.isTooltipOnly = parameters.data.isTooltipOnly;\n }\n render() {\n const {\n data,\n linkService\n } = this;\n const link = document.createElement(\"a\");\n link.setAttribute(\"data-element-id\", data.id);\n let isBound = false;\n if (data.url) {\n linkService.addLinkAttributes(link, data.url, data.newWindow);\n isBound = true;\n } else if (data.action) {\n this._bindNamedAction(link, data.action);\n isBound = true;\n } else if (data.attachment) {\n this._bindAttachment(link, data.attachment);\n isBound = true;\n } else if (data.setOCGState) {\n this.#bindSetOCGState(link, data.setOCGState);\n isBound = true;\n } else if (data.dest) {\n this._bindLink(link, data.dest);\n isBound = true;\n } else {\n if (data.actions && (data.actions.Action || data.actions[\"Mouse Up\"] || data.actions[\"Mouse Down\"]) && this.enableScripting && this.hasJSActions) {\n this._bindJSAction(link, data);\n isBound = true;\n }\n if (data.resetForm) {\n this._bindResetFormAction(link, data.resetForm);\n isBound = true;\n } else if (this.isTooltipOnly && !isBound) {\n this._bindLink(link, \"\");\n isBound = true;\n }\n }\n this.container.classList.add(\"linkAnnotation\");\n if (isBound) {\n this.container.append(link);\n }\n return this.container;\n }\n #setInternalLink() {\n this.container.setAttribute(\"data-internal-link\", \"\");\n }\n _bindLink(link, destination) {\n link.href = this.linkService.getDestinationHash(destination);\n link.onclick = () => {\n if (destination) {\n this.linkService.goToDestination(destination);\n }\n return false;\n };\n if (destination || destination === \"\") {\n this.#setInternalLink();\n }\n }\n _bindNamedAction(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n this.#setInternalLink();\n }\n _bindAttachment(link, attachment) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.downloadManager?.openOrDownloadData(this.container, attachment.content, attachment.filename);\n return false;\n };\n this.#setInternalLink();\n }\n #bindSetOCGState(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeSetOCGState(action);\n return false;\n };\n this.#setInternalLink();\n }\n _bindJSAction(link, data) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = new Map([[\"Action\", \"onclick\"], [\"Mouse Up\", \"onmouseup\"], [\"Mouse Down\", \"onmousedown\"]]);\n for (const name of Object.keys(data.actions)) {\n const jsName = map.get(name);\n if (!jsName) {\n continue;\n }\n link[jsName] = () => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: data.id,\n name\n }\n });\n return false;\n };\n }\n if (!link.onclick) {\n link.onclick = () => false;\n }\n this.#setInternalLink();\n }\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n this.#setInternalLink();\n if (!this._fieldObjects) {\n (0, _util.warn)(`_bindResetFormAction - \"resetForm\" action not supported, ` + \"ensure that the `fieldObjects` parameter is provided.\");\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n return;\n }\n link.onclick = () => {\n otherClickAction?.();\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include\n } = resetForm;\n const allFields = [];\n if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n const fieldIds = new Set(resetFormRefs);\n for (const fieldName of resetFormFields) {\n const fields = this._fieldObjects[fieldName] || [];\n for (const {\n id\n } of fields) {\n fieldIds.add(id);\n }\n }\n for (const fields of Object.values(this._fieldObjects)) {\n for (const field of fields) {\n if (fieldIds.has(field.id) === include) {\n allFields.push(field);\n }\n }\n }\n } else {\n for (const fields of Object.values(this._fieldObjects)) {\n allFields.push(...fields);\n }\n }\n const storage = this.annotationStorage;\n const allIds = [];\n for (const field of allFields) {\n const {\n id\n } = field;\n allIds.push(id);\n switch (field.type) {\n case \"text\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\":\n {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"combobox\":\n case \"listbox\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n default:\n continue;\n }\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (!domElement) {\n continue;\n } else if (!GetElementsByNameSet.has(domElement)) {\n (0, _util.warn)(`_bindResetFormAction - element not allowed: ${id}`);\n continue;\n }\n domElement.dispatchEvent(new Event(\"resetform\"));\n }\n if (this.enableScripting) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\"\n }\n });\n }\n return false;\n };\n }\n}\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n }\n render() {\n this.container.classList.add(\"textAnnotation\");\n const image = document.createElement(\"img\");\n image.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n image.alt = \"[{{type}} Annotation]\";\n image.dataset.l10nId = \"text_annotation_type\";\n image.dataset.l10nArgs = JSON.stringify({\n type: this.data.name\n });\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.append(image);\n return this.container;\n }\n}\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n if (this.data.alternativeText) {\n this.container.title = this.data.alternativeText;\n }\n return this.container;\n }\n showElementAndHideCanvas(element) {\n if (this.data.hasOwnCanvas) {\n if (element.previousSibling?.nodeName === \"CANVAS\") {\n element.previousSibling.hidden = true;\n }\n element.hidden = false;\n }\n }\n _getKeyModifier(event) {\n const {\n isWin,\n isMac\n } = _util.FeatureTest.platform;\n return isWin && event.ctrlKey || isMac && event.metaKey;\n }\n _setEventListener(element, elementData, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n shift: event.shiftKey,\n modifier: this._getKeyModifier(event)\n }\n });\n });\n } else {\n element.addEventListener(baseName, event => {\n if (baseName === \"blur\") {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n elementData.focused = false;\n } else if (baseName === \"focus\") {\n if (elementData.focused) {\n return;\n }\n elementData.focused = true;\n }\n if (!valueGetter) {\n return;\n }\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event)\n }\n });\n });\n }\n }\n _setEventListeners(element, elementData, names, getter) {\n for (const [baseName, eventName] of names) {\n if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n if (eventName === \"Focus\" || eventName === \"Blur\") {\n elementData ||= {\n focused: false\n };\n }\n this._setEventListener(element, elementData, baseName, eventName, getter);\n if (eventName === \"Focus\" && !this.data.actions?.Blur) {\n this._setEventListener(element, elementData, \"blur\", \"Blur\", null);\n } else if (eventName === \"Blur\" && !this.data.actions?.Focus) {\n this._setEventListener(element, elementData, \"focus\", \"Focus\", null);\n }\n }\n }\n }\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor = color === null ? \"transparent\" : _util.Util.makeHexColor(color[0], color[1], color[2]);\n }\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const {\n fontColor\n } = this.data.defaultAppearanceData;\n const fontSize = this.data.defaultAppearanceData.fontSize || DEFAULT_FONT_SIZE;\n const style = element.style;\n let computedFontSize;\n const BORDER_SIZE = 2;\n const roundToOneDecimal = x => Math.round(10 * x) / 10;\n if (this.data.multiLine) {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n const numberOfLines = Math.round(height / (_util.LINE_FACTOR * fontSize)) || 1;\n const lineHeight = height / numberOfLines;\n computedFontSize = Math.min(fontSize, roundToOneDecimal(lineHeight / _util.LINE_FACTOR));\n } else {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n computedFontSize = Math.min(fontSize, roundToOneDecimal(height / _util.LINE_FACTOR));\n }\n style.fontSize = `calc(${computedFontSize}px * var(--scale-factor))`;\n style.color = _util.Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n }\n _setRequired(element, isRequired) {\n if (isRequired) {\n element.setAttribute(\"required\", true);\n } else {\n element.removeAttribute(\"required\");\n }\n element.setAttribute(\"aria-required\", isRequired);\n }\n}\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable = parameters.renderForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue;\n super(parameters, {\n isRenderable\n });\n }\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n for (const element of this._getElementsByName(base.name, base.id)) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n storage.setValue(element.id, {\n [keyInStorage]: value\n });\n }\n }\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n this.container.classList.add(\"textWidgetAnnotation\");\n let element = null;\n if (this.renderForms) {\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n let textContent = storedData.value || \"\";\n const maxLen = storage.getValue(id, {\n charLimit: this.data.maxLen\n }).charLimit;\n if (maxLen && textContent.length > maxLen) {\n textContent = textContent.slice(0, maxLen);\n }\n let fieldFormattedValues = storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n if (fieldFormattedValues && this.data.comb) {\n fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n }\n const elementData = {\n userValue: textContent,\n formattedValue: fieldFormattedValues,\n lastCommittedValue: null,\n commitKey: 1,\n focused: false\n };\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = fieldFormattedValues ?? textContent;\n if (this.data.doNotScroll) {\n element.style.overflowY = \"hidden\";\n }\n } else {\n element = document.createElement(\"input\");\n element.type = \"text\";\n element.setAttribute(\"value\", fieldFormattedValues ?? textContent);\n if (this.data.doNotScroll) {\n element.style.overflowX = \"hidden\";\n }\n }\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = DEFAULT_TAB_INDEX;\n this._setRequired(element, this.data.required);\n if (maxLen) {\n element.maxLength = maxLen;\n }\n element.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n this.setPropertyOnSiblings(element, \"value\", event.target.value, \"value\");\n elementData.formattedValue = null;\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue ?? \"\";\n element.value = elementData.userValue = defaultValue;\n elementData.formattedValue = null;\n });\n let blurListener = event => {\n const {\n formattedValue\n } = elementData;\n if (formattedValue !== null && formattedValue !== undefined) {\n event.target.value = formattedValue;\n }\n event.target.scrollLeft = 0;\n };\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", event => {\n if (elementData.focused) {\n return;\n }\n const {\n target\n } = event;\n if (elementData.userValue) {\n target.value = elementData.userValue;\n }\n elementData.lastCommittedValue = target.value;\n elementData.commitKey = 1;\n elementData.focused = true;\n });\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n this.showElementAndHideCanvas(jsEvent.target);\n const actions = {\n value(event) {\n elementData.userValue = event.detail.value ?? \"\";\n storage.setValue(id, {\n value: elementData.userValue.toString()\n });\n event.target.value = elementData.userValue;\n },\n formattedValue(event) {\n const {\n formattedValue\n } = event.detail;\n elementData.formattedValue = formattedValue;\n if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) {\n event.target.value = formattedValue;\n }\n storage.setValue(id, {\n formattedValue\n });\n },\n selRange(event) {\n event.target.setSelectionRange(...event.detail.selRange);\n },\n charLimit: event => {\n const {\n charLimit\n } = event.detail;\n const {\n target\n } = event;\n if (charLimit === 0) {\n target.removeAttribute(\"maxLength\");\n return;\n }\n target.setAttribute(\"maxLength\", charLimit);\n let value = elementData.userValue;\n if (!value || value.length <= charLimit) {\n return;\n }\n value = value.slice(0, charLimit);\n target.value = elementData.userValue = value;\n storage.setValue(id, {\n value\n });\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: 1,\n selStart: target.selectionStart,\n selEnd: target.selectionEnd\n }\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n element.addEventListener(\"keydown\", event => {\n elementData.commitKey = 1;\n let commitKey = -1;\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\" && !this.data.multiLine) {\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n elementData.commitKey = 3;\n }\n if (commitKey === -1) {\n return;\n }\n const {\n value\n } = event.target;\n if (elementData.lastCommittedValue === value) {\n return;\n }\n elementData.lastCommittedValue = value;\n elementData.userValue = value;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n });\n const _blurListener = blurListener;\n blurListener = null;\n element.addEventListener(\"blur\", event => {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n elementData.focused = false;\n const {\n value\n } = event.target;\n elementData.userValue = value;\n if (elementData.lastCommittedValue !== value) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: elementData.commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n }\n _blurListener(event);\n });\n if (this.data.actions?.Keystroke) {\n element.addEventListener(\"beforeinput\", event => {\n elementData.lastCommittedValue = null;\n const {\n data,\n target\n } = event;\n const {\n value,\n selectionStart,\n selectionEnd\n } = target;\n let selStart = selectionStart,\n selEnd = selectionEnd;\n switch (event.inputType) {\n case \"deleteWordBackward\":\n {\n const match = value.substring(0, selectionStart).match(/\\w*[^\\w]*$/);\n if (match) {\n selStart -= match[0].length;\n }\n break;\n }\n case \"deleteWordForward\":\n {\n const match = value.substring(selectionStart).match(/^[^\\w]*\\w*/);\n if (match) {\n selEnd += match[0].length;\n }\n break;\n }\n case \"deleteContentBackward\":\n if (selectionStart === selectionEnd) {\n selStart -= 1;\n }\n break;\n case \"deleteContentForward\":\n if (selectionStart === selectionEnd) {\n selEnd += 1;\n }\n break;\n }\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n change: data || \"\",\n willCommit: false,\n selStart,\n selEnd\n }\n });\n });\n }\n this._setEventListeners(element, elementData, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.value);\n }\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / maxLen;\n element.classList.add(\"comb\");\n element.style.letterSpacing = `calc(${combWidth}px * var(--scale-factor) - 1ch)`;\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n }\n this._setTextStyle(element);\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: !!parameters.data.hasOwnCanvas\n });\n }\n}\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.exportValue === data.fieldValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== \"Off\";\n storage.setValue(id, {\n value\n });\n }\n this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"checkbox\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.setAttribute(\"exportValue\", data.exportValue);\n element.tabIndex = DEFAULT_TAB_INDEX;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const checkbox of this._getElementsByName(name, id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n storage.setValue(checkbox.id, {\n value: curChecked\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n event.target.checked = event.detail.value !== \"Off\";\n storage.setValue(id, {\n value: event.target.checked\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"buttonWidgetAnnotation\", \"radioButton\");\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.fieldValue === data.buttonValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== data.buttonValue;\n storage.setValue(id, {\n value\n });\n }\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"radio\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.tabIndex = DEFAULT_TAB_INDEX;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const radio of this._getElementsByName(name, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue;\n event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n const pdfButtonValue = data.buttonValue;\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value: event => {\n const checked = pdfButtonValue === event.detail.value;\n for (const radio of this._getElementsByName(event.target.name)) {\n const curChecked = checked && radio.id === id;\n if (radio.domElement) {\n radio.domElement.checked = curChecked;\n }\n storage.setValue(radio.id, {\n value: curChecked\n });\n }\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n ignoreBorder: parameters.data.hasAppearance\n });\n }\n render() {\n const container = super.render();\n container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n if (this.data.alternativeText) {\n container.title = this.data.alternativeText;\n }\n const linkElement = container.lastChild;\n if (this.enableScripting && this.hasJSActions && linkElement) {\n this._setDefaultPropertiesFromJS(linkElement);\n linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n this._dispatchEventFromSandbox({}, jsEvent);\n });\n }\n return container;\n }\n}\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"choiceWidgetAnnotation\");\n const storage = this.annotationStorage;\n const id = this.data.id;\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n const selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.setAttribute(\"data-element-id\", id);\n selectElement.disabled = this.data.readOnly;\n this._setRequired(selectElement, this.data.required);\n selectElement.name = this.data.fieldName;\n selectElement.tabIndex = DEFAULT_TAB_INDEX;\n let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n if (!this.data.combo) {\n selectElement.size = this.data.options.length;\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n selectElement.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue;\n for (const option of selectElement.options) {\n option.selected = option.value === defaultValue;\n }\n });\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n if (storedData.value.includes(option.exportValue)) {\n optionElement.setAttribute(\"selected\", true);\n addAnEmptyEntry = false;\n }\n selectElement.append(optionElement);\n }\n let removeEmptyEntry = null;\n if (addAnEmptyEntry) {\n const noneOptionElement = document.createElement(\"option\");\n noneOptionElement.value = \" \";\n noneOptionElement.setAttribute(\"hidden\", true);\n noneOptionElement.setAttribute(\"selected\", true);\n selectElement.prepend(noneOptionElement);\n removeEmptyEntry = () => {\n noneOptionElement.remove();\n selectElement.removeEventListener(\"input\", removeEmptyEntry);\n removeEmptyEntry = null;\n };\n selectElement.addEventListener(\"input\", removeEmptyEntry);\n }\n const getValue = isExport => {\n const name = isExport ? \"value\" : \"textContent\";\n const {\n options,\n multiple\n } = selectElement;\n if (!multiple) {\n return options.selectedIndex === -1 ? null : options[options.selectedIndex][name];\n }\n return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]);\n };\n let selectedValues = getValue(false);\n const getItems = event => {\n const options = event.target.options;\n return Array.prototype.map.call(options, option => {\n return {\n displayValue: option.textContent,\n exportValue: option.value\n };\n });\n };\n if (this.enableScripting && this.hasJSActions) {\n selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n removeEmptyEntry?.();\n const value = event.detail.value;\n const values = new Set(Array.isArray(value) ? value : [value]);\n for (const option of selectElement.options) {\n option.selected = values.has(option.value);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n multipleSelection(event) {\n selectElement.multiple = true;\n },\n remove(event) {\n const options = selectElement.options;\n const index = event.detail.remove;\n options[index].selected = false;\n selectElement.remove(index);\n if (options.length > 0) {\n const i = Array.prototype.findIndex.call(options, option => option.selected);\n if (i === -1) {\n options[0].selected = true;\n }\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n storage.setValue(id, {\n value: null,\n items: []\n });\n selectedValues = getValue(false);\n },\n insert(event) {\n const {\n index,\n displayValue,\n exportValue\n } = event.detail.insert;\n const selectChild = selectElement.children[index];\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n if (selectChild) {\n selectChild.before(optionElement);\n } else {\n selectElement.append(optionElement);\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n items(event) {\n const {\n items\n } = event.detail;\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n for (const item of items) {\n const {\n displayValue,\n exportValue\n } = item;\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.append(optionElement);\n }\n if (selectElement.options.length > 0) {\n selectElement.options[0].selected = true;\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n indices(event) {\n const indices = new Set(event.detail.indices);\n for (const option of event.target.options) {\n option.selected = indices.has(option.index);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n editable(event) {\n event.target.disabled = !event.detail.editable;\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n selectElement.addEventListener(\"input\", event => {\n const exportValue = getValue(true);\n storage.setValue(id, {\n value: exportValue\n });\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: selectedValues,\n changeEx: exportValue,\n willCommit: false,\n commitKey: 1,\n keyDown: false\n }\n });\n });\n this._setEventListeners(selectElement, null, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"], [\"input\", \"Action\"], [\"input\", \"Validate\"]], event => event.target.value);\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, {\n value: getValue(true)\n });\n });\n }\n if (this.data.combo) {\n this._setTextStyle(selectElement);\n } else {}\n this._setBackgroundColor(selectElement);\n this._setDefaultPropertiesFromJS(selectElement);\n this.container.append(selectElement);\n return this.container;\n }\n}\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const {\n data,\n elements\n } = parameters;\n super(parameters, {\n isRenderable: AnnotationElement._hasPopupData(data)\n });\n this.elements = elements;\n }\n render() {\n this.container.classList.add(\"popupAnnotation\");\n const popup = new PopupElement({\n container: this.container,\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText,\n rect: this.data.rect,\n parentRect: this.data.parentRect || null,\n parent: this.parent,\n elements: this.elements,\n open: this.data.open\n });\n const elementIds = [];\n for (const element of this.elements) {\n element.popup = popup;\n elementIds.push(element.data.id);\n element.addHighlightArea();\n }\n this.container.setAttribute(\"aria-controls\", elementIds.map(id => `${_util.AnnotationPrefix}${id}`).join(\",\"));\n return this.container;\n }\n}\nclass PopupElement {\n #dateTimePromise = null;\n #boundKeyDown = this.#keyDown.bind(this);\n #boundHide = this.#hide.bind(this);\n #boundShow = this.#show.bind(this);\n #boundToggle = this.#toggle.bind(this);\n #color = null;\n #container = null;\n #contentsObj = null;\n #elements = null;\n #parent = null;\n #parentRect = null;\n #pinned = false;\n #popup = null;\n #rect = null;\n #richText = null;\n #titleObj = null;\n #wasVisible = false;\n constructor({\n container,\n color,\n elements,\n titleObj,\n modificationDate,\n contentsObj,\n richText,\n parent,\n rect,\n parentRect,\n open\n }) {\n this.#container = container;\n this.#titleObj = titleObj;\n this.#contentsObj = contentsObj;\n this.#richText = richText;\n this.#parent = parent;\n this.#color = color;\n this.#rect = rect;\n this.#parentRect = parentRect;\n this.#elements = elements;\n const dateObject = _display_utils.PDFDateString.toDateObject(modificationDate);\n if (dateObject) {\n this.#dateTimePromise = parent.l10n.get(\"annotation_date_string\", {\n date: dateObject.toLocaleDateString(),\n time: dateObject.toLocaleTimeString()\n });\n }\n this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this.#boundToggle);\n element.addEventListener(\"mouseenter\", this.#boundShow);\n element.addEventListener(\"mouseleave\", this.#boundHide);\n element.classList.add(\"popupTriggerArea\");\n }\n for (const element of elements) {\n element.container?.addEventListener(\"keydown\", this.#boundKeyDown);\n }\n this.#container.hidden = true;\n if (open) {\n this.#toggle();\n }\n }\n render() {\n if (this.#popup) {\n return;\n }\n const {\n page: {\n view\n },\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n } = this.#parent;\n const popup = this.#popup = document.createElement(\"div\");\n popup.className = \"popup\";\n if (this.#color) {\n const baseColor = popup.style.outlineColor = _util.Util.makeHexColor(...this.#color);\n if (CSS.supports(\"background-color\", \"color-mix(in srgb, red 30%, white)\")) {\n popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n } else {\n const BACKGROUND_ENLIGHT = 0.7;\n popup.style.backgroundColor = _util.Util.makeHexColor(...this.#color.map(c => Math.floor(BACKGROUND_ENLIGHT * (255 - c) + c)));\n }\n }\n const header = document.createElement(\"span\");\n header.className = \"header\";\n const title = document.createElement(\"h1\");\n header.append(title);\n ({\n dir: title.dir,\n str: title.textContent\n } = this.#titleObj);\n popup.append(header);\n if (this.#dateTimePromise) {\n const modificationDate = document.createElement(\"span\");\n modificationDate.classList.add(\"popupDate\");\n this.#dateTimePromise.then(localized => {\n modificationDate.textContent = localized;\n });\n header.append(modificationDate);\n }\n const contentsObj = this.#contentsObj;\n const richText = this.#richText;\n if (richText?.str && (!contentsObj?.str || contentsObj.str === richText.str)) {\n _xfa_layer.XfaLayer.render({\n xfaHtml: richText.html,\n intent: \"richText\",\n div: popup\n });\n popup.lastChild.classList.add(\"richText\", \"popupContent\");\n } else {\n const contents = this._formatContents(contentsObj);\n popup.append(contents);\n }\n let useParentRect = !!this.#parentRect;\n let rect = useParentRect ? this.#parentRect : this.#rect;\n for (const element of this.#elements) {\n if (!rect || _util.Util.intersect(element.data.rect, rect) !== null) {\n rect = element.data.rect;\n useParentRect = true;\n break;\n }\n }\n const normalizedRect = _util.Util.normalizeRect([rect[0], view[3] - rect[1] + view[1], rect[2], view[3] - rect[3] + view[1]]);\n const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\n const parentWidth = useParentRect ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION : 0;\n const popupLeft = normalizedRect[0] + parentWidth;\n const popupTop = normalizedRect[1];\n const {\n style\n } = this.#container;\n style.left = `${100 * (popupLeft - pageX) / pageWidth}%`;\n style.top = `${100 * (popupTop - pageY) / pageHeight}%`;\n this.#container.append(popup);\n }\n _formatContents({\n str,\n dir\n }) {\n const p = document.createElement(\"p\");\n p.classList.add(\"popupContent\");\n p.dir = dir;\n const lines = str.split(/(?:\\r\\n?|\\n)/);\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.append(document.createTextNode(line));\n if (i < ii - 1) {\n p.append(document.createElement(\"br\"));\n }\n }\n return p;\n }\n #keyDown(event) {\n if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n return;\n }\n if (event.key === \"Enter\" || event.key === \"Escape\" && this.#pinned) {\n this.#toggle();\n }\n }\n #toggle() {\n this.#pinned = !this.#pinned;\n if (this.#pinned) {\n this.#show();\n this.#container.addEventListener(\"click\", this.#boundToggle);\n this.#container.addEventListener(\"keydown\", this.#boundKeyDown);\n } else {\n this.#hide();\n this.#container.removeEventListener(\"click\", this.#boundToggle);\n this.#container.removeEventListener(\"keydown\", this.#boundKeyDown);\n }\n }\n #show() {\n if (!this.#popup) {\n this.render();\n }\n if (!this.isVisible) {\n this.#container.hidden = false;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) + 1000;\n } else if (this.#pinned) {\n this.#container.classList.add(\"focused\");\n }\n }\n #hide() {\n this.#container.classList.remove(\"focused\");\n if (this.#pinned || !this.isVisible) {\n return;\n }\n this.#container.hidden = true;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) - 1000;\n }\n forceHide() {\n this.#wasVisible = this.isVisible;\n if (!this.#wasVisible) {\n return;\n }\n this.#container.hidden = true;\n }\n maybeShow() {\n if (!this.#wasVisible) {\n return;\n }\n this.#wasVisible = false;\n this.#container.hidden = false;\n }\n get isVisible() {\n return this.#container.hidden === false;\n }\n}\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.textContent = parameters.data.textContent;\n this.textPosition = parameters.data.textPosition;\n this.annotationEditorType = _util.AnnotationEditorType.FREETEXT;\n }\n render() {\n this.container.classList.add(\"freeTextAnnotation\");\n if (this.textContent) {\n const content = document.createElement(\"div\");\n content.classList.add(\"annotationTextContent\");\n content.setAttribute(\"role\", \"comment\");\n for (const line of this.textContent) {\n const lineSpan = document.createElement(\"span\");\n lineSpan.textContent = line;\n content.append(lineSpan);\n }\n this.container.append(content);\n }\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n}\nexports.FreeTextAnnotationElement = FreeTextAnnotationElement;\nclass LineAnnotationElement extends AnnotationElement {\n #line = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"lineAnnotation\");\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const line = this.#line = this.svgFactory.createElement(\"svg:line\");\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n svg.append(line);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#line;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass SquareAnnotationElement extends AnnotationElement {\n #square = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"squareAnnotation\");\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const square = this.#square = this.svgFactory.createElement(\"svg:rect\");\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n svg.append(square);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#square;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass CircleAnnotationElement extends AnnotationElement {\n #circle = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"circleAnnotation\");\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const circle = this.#circle = this.svgFactory.createElement(\"svg:ellipse\");\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n svg.append(circle);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#circle;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolylineAnnotationElement extends AnnotationElement {\n #polyline = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n let points = [];\n for (const coordinate of data.vertices) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(x + \",\" + y);\n }\n points = points.join(\" \");\n const polyline = this.#polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n svg.append(polyline);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#polyline;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n super(parameters);\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"caretAnnotation\");\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n}\nclass InkAnnotationElement extends AnnotationElement {\n #polylines = [];\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"inkAnnotation\";\n this.svgElementName = \"svg:polyline\";\n this.annotationEditorType = _util.AnnotationEditorType.INK;\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n for (const inkList of data.inkLists) {\n let points = [];\n for (const coordinate of inkList) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n const polyline = this.svgFactory.createElement(this.svgElementName);\n this.#polylines.push(polyline);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n svg.append(polyline);\n }\n this.container.append(svg);\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#polylines;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nexports.InkAnnotationElement = InkAnnotationElement;\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"highlightAnnotation\");\n return this.container;\n }\n}\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"underlineAnnotation\");\n return this.container;\n }\n}\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"squigglyAnnotation\");\n return this.container;\n }\n}\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"strikeoutAnnotation\");\n return this.container;\n }\n}\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"stampAnnotation\");\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n}\nexports.StampAnnotationElement = StampAnnotationElement;\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n #trigger = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n const {\n filename,\n content\n } = this.data.file;\n this.filename = (0, _display_utils.getFilenameFromUrl)(filename, true);\n this.content = content;\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n filename,\n content\n });\n }\n render() {\n this.container.classList.add(\"fileAttachmentAnnotation\");\n const {\n container,\n data\n } = this;\n let trigger;\n if (data.hasAppearance || data.fillAlpha === 0) {\n trigger = document.createElement(\"div\");\n } else {\n trigger = document.createElement(\"img\");\n trigger.src = `${this.imageResourcesPath}annotation-${/paperclip/i.test(data.name) ? \"paperclip\" : \"pushpin\"}.svg`;\n if (data.fillAlpha && data.fillAlpha < 1) {\n trigger.style = `filter: opacity(${Math.round(data.fillAlpha * 100)}%);`;\n }\n }\n trigger.addEventListener(\"dblclick\", this.#download.bind(this));\n this.#trigger = trigger;\n const {\n isMac\n } = _util.FeatureTest.platform;\n container.addEventListener(\"keydown\", evt => {\n if (evt.key === \"Enter\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\n this.#download();\n }\n });\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n } else {\n trigger.classList.add(\"popupTriggerArea\");\n }\n container.append(trigger);\n return container;\n }\n getElementsToTriggerPopup() {\n return this.#trigger;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n #download() {\n this.downloadManager?.openOrDownloadData(this.container, this.content, this.filename);\n }\n}\nclass AnnotationLayer {\n #accessibilityManager = null;\n #annotationCanvasMap = null;\n #editableAnnotations = new Map();\n constructor({\n div,\n accessibilityManager,\n annotationCanvasMap,\n l10n,\n page,\n viewport\n }) {\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationCanvasMap = annotationCanvasMap;\n this.l10n = l10n;\n this.page = page;\n this.viewport = viewport;\n this.zIndex = 0;\n this.l10n ||= _displayL10n_utils.NullL10n;\n }\n #appendElement(element, id) {\n const contentElement = element.firstChild || element;\n contentElement.id = `${_util.AnnotationPrefix}${id}`;\n this.div.append(element);\n this.#accessibilityManager?.moveElementInDOM(this.div, element, contentElement, false);\n }\n async render(params) {\n const {\n annotations\n } = params;\n const layer = this.div;\n (0, _display_utils.setLayerDimensions)(layer, this.viewport);\n const popupToElements = new Map();\n const elementParams = {\n data: null,\n layer,\n linkService: params.linkService,\n downloadManager: params.downloadManager,\n imageResourcesPath: params.imageResourcesPath || \"\",\n renderForms: params.renderForms !== false,\n svgFactory: new _display_utils.DOMSVGFactory(),\n annotationStorage: params.annotationStorage || new _annotation_storage.AnnotationStorage(),\n enableScripting: params.enableScripting === true,\n hasJSActions: params.hasJSActions,\n fieldObjects: params.fieldObjects,\n parent: this,\n elements: null\n };\n for (const data of annotations) {\n if (data.noHTML) {\n continue;\n }\n const isPopupAnnotation = data.annotationType === _util.AnnotationType.POPUP;\n if (!isPopupAnnotation) {\n const {\n width,\n height\n } = getRectDims(data.rect);\n if (width <= 0 || height <= 0) {\n continue;\n }\n } else {\n const elements = popupToElements.get(data.id);\n if (!elements) {\n continue;\n }\n elementParams.elements = elements;\n }\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n if (!isPopupAnnotation && data.popupRef) {\n const elements = popupToElements.get(data.popupRef);\n if (!elements) {\n popupToElements.set(data.popupRef, [element]);\n } else {\n elements.push(element);\n }\n }\n if (element.annotationEditorType > 0) {\n this.#editableAnnotations.set(element.data.id, element);\n }\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n this.#appendElement(rendered, data.id);\n }\n this.#setAnnotationCanvasMap();\n await this.l10n.translate(layer);\n }\n update({\n viewport\n }) {\n const layer = this.div;\n this.viewport = viewport;\n (0, _display_utils.setLayerDimensions)(layer, {\n rotation: viewport.rotation\n });\n this.#setAnnotationCanvasMap();\n layer.hidden = false;\n }\n #setAnnotationCanvasMap() {\n if (!this.#annotationCanvasMap) {\n return;\n }\n const layer = this.div;\n for (const [id, canvas] of this.#annotationCanvasMap) {\n const element = layer.querySelector(`[data-annotation-id=\"${id}\"]`);\n if (!element) {\n continue;\n }\n const {\n firstChild\n } = element;\n if (!firstChild) {\n element.append(canvas);\n } else if (firstChild.nodeName === \"CANVAS\") {\n firstChild.replaceWith(canvas);\n } else {\n firstChild.before(canvas);\n }\n }\n this.#annotationCanvasMap.clear();\n }\n getEditableAnnotations() {\n return Array.from(this.#editableAnnotations.values());\n }\n getEditableAnnotation(id) {\n return this.#editableAnnotations.get(id);\n }\n}\nexports.AnnotationLayer = AnnotationLayer;\n\n/***/ }),\n/* 30 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.ColorConverters = void 0;\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, \"0\");\n}\nfunction scaleAndClamp(x) {\n return Math.max(0, Math.min(255, 255 * x));\n}\nclass ColorConverters {\n static CMYK_G([c, y, m, k]) {\n return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n static G_rgb([g]) {\n g = scaleAndClamp(g);\n return [g, g, g];\n }\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n static RGB_rgb(color) {\n return color.map(scaleAndClamp);\n }\n static RGB_HTML(color) {\n return `#${color.map(makeColorComp).join(\"\")}`;\n }\n static T_HTML() {\n return \"#00000000\";\n }\n static T_rgb() {\n return [null];\n }\n static CMYK_RGB([c, y, m, k]) {\n return [\"RGB\", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n }\n static CMYK_rgb([c, y, m, k]) {\n return [scaleAndClamp(1 - Math.min(1, c + k)), scaleAndClamp(1 - Math.min(1, m + k)), scaleAndClamp(1 - Math.min(1, y + k))];\n }\n static CMYK_HTML(components) {\n const rgb = this.CMYK_RGB(components).slice(1);\n return this.RGB_HTML(rgb);\n }\n static RGB_CMYK([r, g, b]) {\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return [\"CMYK\", c, m, y, k];\n }\n}\nexports.ColorConverters = ColorConverters;\n\n/***/ }),\n/* 31 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.NullL10n = void 0;\nexports.getL10nFallback = getL10nFallback;\nconst DEFAULT_L10N_STRINGS = {\n of_pages: \"of {{pagesCount}}\",\n page_of_pages: \"({{pageNumber}} of {{pagesCount}})\",\n document_properties_kb: \"{{size_kb}} KB ({{size_b}} bytes)\",\n document_properties_mb: \"{{size_mb}} MB ({{size_b}} bytes)\",\n document_properties_date_string: \"{{date}}, {{time}}\",\n document_properties_page_size_unit_inches: \"in\",\n document_properties_page_size_unit_millimeters: \"mm\",\n document_properties_page_size_orientation_portrait: \"portrait\",\n document_properties_page_size_orientation_landscape: \"landscape\",\n document_properties_page_size_name_a3: \"A3\",\n document_properties_page_size_name_a4: \"A4\",\n document_properties_page_size_name_letter: \"Letter\",\n document_properties_page_size_name_legal: \"Legal\",\n document_properties_page_size_dimension_string: \"{{width}} × {{height}} {{unit}} ({{orientation}})\",\n document_properties_page_size_dimension_name_string: \"{{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\",\n document_properties_linearized_yes: \"Yes\",\n document_properties_linearized_no: \"No\",\n additional_layers: \"Additional Layers\",\n page_landmark: \"Page {{page}}\",\n thumb_page_title: \"Page {{page}}\",\n thumb_page_canvas: \"Thumbnail of Page {{page}}\",\n find_reached_top: \"Reached top of document, continued from bottom\",\n find_reached_bottom: \"Reached end of document, continued from top\",\n \"find_match_count[one]\": \"{{current}} of {{total}} match\",\n \"find_match_count[other]\": \"{{current}} of {{total}} matches\",\n \"find_match_count_limit[one]\": \"More than {{limit}} match\",\n \"find_match_count_limit[other]\": \"More than {{limit}} matches\",\n find_not_found: \"Phrase not found\",\n page_scale_width: \"Page Width\",\n page_scale_fit: \"Page Fit\",\n page_scale_auto: \"Automatic Zoom\",\n page_scale_actual: \"Actual Size\",\n page_scale_percent: \"{{scale}}%\",\n loading_error: \"An error occurred while loading the PDF.\",\n invalid_file_error: \"Invalid or corrupted PDF file.\",\n missing_file_error: \"Missing PDF file.\",\n unexpected_response_error: \"Unexpected server response.\",\n rendering_error: \"An error occurred while rendering the page.\",\n annotation_date_string: \"{{date}}, {{time}}\",\n printing_not_supported: \"Warning: Printing is not fully supported by this browser.\",\n printing_not_ready: \"Warning: The PDF is not fully loaded for printing.\",\n web_fonts_disabled: \"Web fonts are disabled: unable to use embedded PDF fonts.\",\n free_text2_default_content: \"Start typing…\",\n editor_free_text2_aria_label: \"Text Editor\",\n editor_ink2_aria_label: \"Draw Editor\",\n editor_ink_canvas_aria_label: \"User-created image\",\n editor_alt_text_button_label: \"Alt text\",\n editor_alt_text_edit_button_label: \"Edit alt text\",\n editor_alt_text_decorative_tooltip: \"Marked as decorative\"\n};\n{\n DEFAULT_L10N_STRINGS.print_progress_percent = \"{{progress}}%\";\n}\nfunction getL10nFallback(key, args) {\n switch (key) {\n case \"find_match_count\":\n key = `find_match_count[${args.total === 1 ? \"one\" : \"other\"}]`;\n break;\n case \"find_match_count_limit\":\n key = `find_match_count_limit[${args.limit === 1 ? \"one\" : \"other\"}]`;\n break;\n }\n return DEFAULT_L10N_STRINGS[key] || \"\";\n}\nfunction formatL10nValue(text, args) {\n if (!args) {\n return text;\n }\n return text.replaceAll(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, (all, name) => {\n return name in args ? args[name] : \"{{\" + name + \"}}\";\n });\n}\nconst NullL10n = {\n async getLanguage() {\n return \"en-us\";\n },\n async getDirection() {\n return \"ltr\";\n },\n async get(key, args = null, fallback = getL10nFallback(key, args)) {\n return formatL10nValue(fallback, args);\n },\n async translate(element) {}\n};\nexports.NullL10n = NullL10n;\n\n/***/ }),\n/* 32 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.XfaLayer = void 0;\nvar _xfa_text = __w_pdfjs_require__(25);\nclass XfaLayer {\n static setupStorage(html, id, element, storage, intent) {\n const storedData = storage.getValue(id, {\n value: null\n });\n switch (element.name) {\n case \"textarea\":\n if (storedData.value !== null) {\n html.textContent = storedData.value;\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n break;\n case \"input\":\n if (element.attributes.type === \"radio\" || element.attributes.type === \"checkbox\") {\n if (storedData.value === element.attributes.xfaOn) {\n html.setAttribute(\"checked\", true);\n } else if (storedData.value === element.attributes.xfaOff) {\n html.removeAttribute(\"checked\");\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"change\", event => {\n storage.setValue(id, {\n value: event.target.checked ? event.target.getAttribute(\"xfaOn\") : event.target.getAttribute(\"xfaOff\")\n });\n });\n } else {\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n }\n break;\n case \"select\":\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n for (const option of element.children) {\n if (option.attributes.value === storedData.value) {\n option.attributes.selected = true;\n } else if (option.attributes.hasOwnProperty(\"selected\")) {\n delete option.attributes.selected;\n }\n }\n }\n html.addEventListener(\"input\", event => {\n const options = event.target.options;\n const value = options.selectedIndex === -1 ? \"\" : options[options.selectedIndex].value;\n storage.setValue(id, {\n value\n });\n });\n break;\n }\n }\n static setAttributes({\n html,\n element,\n storage = null,\n intent,\n linkService\n }) {\n const {\n attributes\n } = element;\n const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n if (attributes.type === \"radio\") {\n attributes.name = `${attributes.name}-${intent}`;\n }\n for (const [key, value] of Object.entries(attributes)) {\n if (value === null || value === undefined) {\n continue;\n }\n switch (key) {\n case \"class\":\n if (value.length) {\n html.setAttribute(key, value.join(\" \"));\n }\n break;\n case \"dataId\":\n break;\n case \"id\":\n html.setAttribute(\"data-element-id\", value);\n break;\n case \"style\":\n Object.assign(html.style, value);\n break;\n case \"textContent\":\n html.textContent = value;\n break;\n default:\n if (!isHTMLAnchorElement || key !== \"href\" && key !== \"newWindow\") {\n html.setAttribute(key, value);\n }\n }\n }\n if (isHTMLAnchorElement) {\n linkService.addLinkAttributes(html, attributes.href, attributes.newWindow);\n }\n if (storage && attributes.dataId) {\n this.setupStorage(html, attributes.dataId, element, storage);\n }\n }\n static render(parameters) {\n const storage = parameters.annotationStorage;\n const linkService = parameters.linkService;\n const root = parameters.xfaHtml;\n const intent = parameters.intent || \"display\";\n const rootHtml = document.createElement(root.name);\n if (root.attributes) {\n this.setAttributes({\n html: rootHtml,\n element: root,\n intent,\n linkService\n });\n }\n const stack = [[root, -1, rootHtml]];\n const rootDiv = parameters.div;\n rootDiv.append(rootHtml);\n if (parameters.viewport) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n rootDiv.style.transform = transform;\n }\n if (intent !== \"richText\") {\n rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n }\n const textDivs = [];\n while (stack.length > 0) {\n const [parent, i, html] = stack.at(-1);\n if (i + 1 === parent.children.length) {\n stack.pop();\n continue;\n }\n const child = parent.children[++stack.at(-1)[1]];\n if (child === null) {\n continue;\n }\n const {\n name\n } = child;\n if (name === \"#text\") {\n const node = document.createTextNode(child.value);\n textDivs.push(node);\n html.append(node);\n continue;\n }\n const childHtml = child?.attributes?.xmlns ? document.createElementNS(child.attributes.xmlns, name) : document.createElement(name);\n html.append(childHtml);\n if (child.attributes) {\n this.setAttributes({\n html: childHtml,\n element: child,\n storage,\n intent,\n linkService\n });\n }\n if (child.children && child.children.length > 0) {\n stack.push([child, -1, childHtml]);\n } else if (child.value) {\n const node = document.createTextNode(child.value);\n if (_xfa_text.XfaText.shouldBuildText(name)) {\n textDivs.push(node);\n }\n childHtml.append(node);\n }\n }\n for (const el of rootDiv.querySelectorAll(\".xfaNonInteractive input, .xfaNonInteractive textarea\")) {\n el.setAttribute(\"readOnly\", true);\n }\n return {\n textDivs\n };\n }\n static update(parameters) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n parameters.div.style.transform = transform;\n parameters.div.hidden = false;\n }\n}\nexports.XfaLayer = XfaLayer;\n\n/***/ }),\n/* 33 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.InkEditor = void 0;\nvar _util = __w_pdfjs_require__(1);\nvar _editor = __w_pdfjs_require__(4);\nvar _annotation_layer = __w_pdfjs_require__(29);\nvar _display_utils = __w_pdfjs_require__(6);\nvar _tools = __w_pdfjs_require__(5);\nclass InkEditor extends _editor.AnnotationEditor {\n #baseHeight = 0;\n #baseWidth = 0;\n #boundCanvasPointermove = this.canvasPointermove.bind(this);\n #boundCanvasPointerleave = this.canvasPointerleave.bind(this);\n #boundCanvasPointerup = this.canvasPointerup.bind(this);\n #boundCanvasPointerdown = this.canvasPointerdown.bind(this);\n #currentPath2D = new Path2D();\n #disableEditing = false;\n #hasSomethingToDraw = false;\n #isCanvasInitialized = false;\n #observer = null;\n #realWidth = 0;\n #realHeight = 0;\n #requestFrameCallback = null;\n static _defaultColor = null;\n static _defaultOpacity = 1;\n static _defaultThickness = 1;\n static _type = \"ink\";\n constructor(params) {\n super({\n ...params,\n name: \"inkEditor\"\n });\n this.color = params.color || null;\n this.thickness = params.thickness || null;\n this.opacity = params.opacity || null;\n this.paths = [];\n this.bezierPath2D = [];\n this.allRawPaths = [];\n this.currentPath = [];\n this.scaleFactor = 1;\n this.translationX = this.translationY = 0;\n this.x = 0;\n this.y = 0;\n this._willKeepAspectRatio = true;\n }\n static initialize(l10n) {\n _editor.AnnotationEditor.initialize(l10n, {\n strings: [\"editor_ink_canvas_aria_label\", \"editor_ink2_aria_label\"]\n });\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case _util.AnnotationEditorParamsType.INK_THICKNESS:\n InkEditor._defaultThickness = value;\n break;\n case _util.AnnotationEditorParamsType.INK_COLOR:\n InkEditor._defaultColor = value;\n break;\n case _util.AnnotationEditorParamsType.INK_OPACITY:\n InkEditor._defaultOpacity = value / 100;\n break;\n }\n }\n updateParams(type, value) {\n switch (type) {\n case _util.AnnotationEditorParamsType.INK_THICKNESS:\n this.#updateThickness(value);\n break;\n case _util.AnnotationEditorParamsType.INK_COLOR:\n this.#updateColor(value);\n break;\n case _util.AnnotationEditorParamsType.INK_OPACITY:\n this.#updateOpacity(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[_util.AnnotationEditorParamsType.INK_THICKNESS, InkEditor._defaultThickness], [_util.AnnotationEditorParamsType.INK_COLOR, InkEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor], [_util.AnnotationEditorParamsType.INK_OPACITY, Math.round(InkEditor._defaultOpacity * 100)]];\n }\n get propertiesToUpdate() {\n return [[_util.AnnotationEditorParamsType.INK_THICKNESS, this.thickness || InkEditor._defaultThickness], [_util.AnnotationEditorParamsType.INK_COLOR, this.color || InkEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor], [_util.AnnotationEditorParamsType.INK_OPACITY, Math.round(100 * (this.opacity ?? InkEditor._defaultOpacity))]];\n }\n #updateThickness(thickness) {\n const savedThickness = this.thickness;\n this.addCommands({\n cmd: () => {\n this.thickness = thickness;\n this.#fitToContent();\n },\n undo: () => {\n this.thickness = savedThickness;\n this.#fitToContent();\n },\n mustExec: true,\n type: _util.AnnotationEditorParamsType.INK_THICKNESS,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n #updateColor(color) {\n const savedColor = this.color;\n this.addCommands({\n cmd: () => {\n this.color = color;\n this.#redraw();\n },\n undo: () => {\n this.color = savedColor;\n this.#redraw();\n },\n mustExec: true,\n type: _util.AnnotationEditorParamsType.INK_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n #updateOpacity(opacity) {\n opacity /= 100;\n const savedOpacity = this.opacity;\n this.addCommands({\n cmd: () => {\n this.opacity = opacity;\n this.#redraw();\n },\n undo: () => {\n this.opacity = savedOpacity;\n this.#redraw();\n },\n mustExec: true,\n type: _util.AnnotationEditorParamsType.INK_OPACITY,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (!this.canvas) {\n this.#createCanvas();\n this.#createObserver();\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n this.#setCanvasDims();\n }\n this.#fitToContent();\n }\n remove() {\n if (this.canvas === null) {\n return;\n }\n if (!this.isEmpty()) {\n this.commit();\n }\n this.canvas.width = this.canvas.height = 0;\n this.canvas.remove();\n this.canvas = null;\n this.#observer.disconnect();\n this.#observer = null;\n super.remove();\n }\n setParent(parent) {\n if (!this.parent && parent) {\n this._uiManager.removeShouldRescale(this);\n } else if (this.parent && parent === null) {\n this._uiManager.addShouldRescale(this);\n }\n super.setParent(parent);\n }\n onScaleChanging() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const width = this.width * parentWidth;\n const height = this.height * parentHeight;\n this.setDimensions(width, height);\n }\n enableEditMode() {\n if (this.#disableEditing || this.canvas === null) {\n return;\n }\n super.enableEditMode();\n this._isDraggable = false;\n this.canvas.addEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n }\n disableEditMode() {\n if (!this.isInEditMode() || this.canvas === null) {\n return;\n }\n super.disableEditMode();\n this._isDraggable = !this.isEmpty();\n this.div.classList.remove(\"editing\");\n this.canvas.removeEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n }\n onceAdded() {\n this._isDraggable = !this.isEmpty();\n }\n isEmpty() {\n return this.paths.length === 0 || this.paths.length === 1 && this.paths[0].length === 0;\n }\n #getInitialBBox() {\n const {\n parentRotation,\n parentDimensions: [width, height]\n } = this;\n switch (parentRotation) {\n case 90:\n return [0, height, height, width];\n case 180:\n return [width, height, width, height];\n case 270:\n return [width, 0, height, width];\n default:\n return [0, 0, width, height];\n }\n }\n #setStroke() {\n const {\n ctx,\n color,\n opacity,\n thickness,\n parentScale,\n scaleFactor\n } = this;\n ctx.lineWidth = thickness * parentScale / scaleFactor;\n ctx.lineCap = \"round\";\n ctx.lineJoin = \"round\";\n ctx.miterLimit = 10;\n ctx.strokeStyle = `${color}${(0, _tools.opacityToHex)(opacity)}`;\n }\n #startDrawing(x, y) {\n this.canvas.addEventListener(\"contextmenu\", _display_utils.noContextMenu);\n this.canvas.addEventListener(\"pointerleave\", this.#boundCanvasPointerleave);\n this.canvas.addEventListener(\"pointermove\", this.#boundCanvasPointermove);\n this.canvas.addEventListener(\"pointerup\", this.#boundCanvasPointerup);\n this.canvas.removeEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n this.isEditing = true;\n if (!this.#isCanvasInitialized) {\n this.#isCanvasInitialized = true;\n this.#setCanvasDims();\n this.thickness ||= InkEditor._defaultThickness;\n this.color ||= InkEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor;\n this.opacity ??= InkEditor._defaultOpacity;\n }\n this.currentPath.push([x, y]);\n this.#hasSomethingToDraw = false;\n this.#setStroke();\n this.#requestFrameCallback = () => {\n this.#drawPoints();\n if (this.#requestFrameCallback) {\n window.requestAnimationFrame(this.#requestFrameCallback);\n }\n };\n window.requestAnimationFrame(this.#requestFrameCallback);\n }\n #draw(x, y) {\n const [lastX, lastY] = this.currentPath.at(-1);\n if (this.currentPath.length > 1 && x === lastX && y === lastY) {\n return;\n }\n const currentPath = this.currentPath;\n let path2D = this.#currentPath2D;\n currentPath.push([x, y]);\n this.#hasSomethingToDraw = true;\n if (currentPath.length <= 2) {\n path2D.moveTo(...currentPath[0]);\n path2D.lineTo(x, y);\n return;\n }\n if (currentPath.length === 3) {\n this.#currentPath2D = path2D = new Path2D();\n path2D.moveTo(...currentPath[0]);\n }\n this.#makeBezierCurve(path2D, ...currentPath.at(-3), ...currentPath.at(-2), x, y);\n }\n #endPath() {\n if (this.currentPath.length === 0) {\n return;\n }\n const lastPoint = this.currentPath.at(-1);\n this.#currentPath2D.lineTo(...lastPoint);\n }\n #stopDrawing(x, y) {\n this.#requestFrameCallback = null;\n x = Math.min(Math.max(x, 0), this.canvas.width);\n y = Math.min(Math.max(y, 0), this.canvas.height);\n this.#draw(x, y);\n this.#endPath();\n let bezier;\n if (this.currentPath.length !== 1) {\n bezier = this.#generateBezierPoints();\n } else {\n const xy = [x, y];\n bezier = [[xy, xy.slice(), xy.slice(), xy]];\n }\n const path2D = this.#currentPath2D;\n const currentPath = this.currentPath;\n this.currentPath = [];\n this.#currentPath2D = new Path2D();\n const cmd = () => {\n this.allRawPaths.push(currentPath);\n this.paths.push(bezier);\n this.bezierPath2D.push(path2D);\n this.rebuild();\n };\n const undo = () => {\n this.allRawPaths.pop();\n this.paths.pop();\n this.bezierPath2D.pop();\n if (this.paths.length === 0) {\n this.remove();\n } else {\n if (!this.canvas) {\n this.#createCanvas();\n this.#createObserver();\n }\n this.#fitToContent();\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n #drawPoints() {\n if (!this.#hasSomethingToDraw) {\n return;\n }\n this.#hasSomethingToDraw = false;\n const thickness = Math.ceil(this.thickness * this.parentScale);\n const lastPoints = this.currentPath.slice(-3);\n const x = lastPoints.map(xy => xy[0]);\n const y = lastPoints.map(xy => xy[1]);\n const xMin = Math.min(...x) - thickness;\n const xMax = Math.max(...x) + thickness;\n const yMin = Math.min(...y) - thickness;\n const yMax = Math.max(...y) + thickness;\n const {\n ctx\n } = this;\n ctx.save();\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n for (const path of this.bezierPath2D) {\n ctx.stroke(path);\n }\n ctx.stroke(this.#currentPath2D);\n ctx.restore();\n }\n #makeBezierCurve(path2D, x0, y0, x1, y1, x2, y2) {\n const prevX = (x0 + x1) / 2;\n const prevY = (y0 + y1) / 2;\n const x3 = (x1 + x2) / 2;\n const y3 = (y1 + y2) / 2;\n path2D.bezierCurveTo(prevX + 2 * (x1 - prevX) / 3, prevY + 2 * (y1 - prevY) / 3, x3 + 2 * (x1 - x3) / 3, y3 + 2 * (y1 - y3) / 3, x3, y3);\n }\n #generateBezierPoints() {\n const path = this.currentPath;\n if (path.length <= 2) {\n return [[path[0], path[0], path.at(-1), path.at(-1)]];\n }\n const bezierPoints = [];\n let i;\n let [x0, y0] = path[0];\n for (i = 1; i < path.length - 2; i++) {\n const [x1, y1] = path[i];\n const [x2, y2] = path[i + 1];\n const x3 = (x1 + x2) / 2;\n const y3 = (y1 + y2) / 2;\n const control1 = [x0 + 2 * (x1 - x0) / 3, y0 + 2 * (y1 - y0) / 3];\n const control2 = [x3 + 2 * (x1 - x3) / 3, y3 + 2 * (y1 - y3) / 3];\n bezierPoints.push([[x0, y0], control1, control2, [x3, y3]]);\n [x0, y0] = [x3, y3];\n }\n const [x1, y1] = path[i];\n const [x2, y2] = path[i + 1];\n const control1 = [x0 + 2 * (x1 - x0) / 3, y0 + 2 * (y1 - y0) / 3];\n const control2 = [x2 + 2 * (x1 - x2) / 3, y2 + 2 * (y1 - y2) / 3];\n bezierPoints.push([[x0, y0], control1, control2, [x2, y2]]);\n return bezierPoints;\n }\n #redraw() {\n if (this.isEmpty()) {\n this.#updateTransform();\n return;\n }\n this.#setStroke();\n const {\n canvas,\n ctx\n } = this;\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n this.#updateTransform();\n for (const path of this.bezierPath2D) {\n ctx.stroke(path);\n }\n }\n commit() {\n if (this.#disableEditing) {\n return;\n }\n super.commit();\n this.isEditing = false;\n this.disableEditMode();\n this.setInForeground();\n this.#disableEditing = true;\n this.div.classList.add(\"disabled\");\n this.#fitToContent(true);\n this.makeResizable();\n this.parent.addInkEditorIfNeeded(true);\n this.moveInDOM();\n this.div.focus({\n preventScroll: true\n });\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n super.focusin(event);\n this.enableEditMode();\n }\n canvasPointerdown(event) {\n if (event.button !== 0 || !this.isInEditMode() || this.#disableEditing) {\n return;\n }\n this.setInForeground();\n event.preventDefault();\n if (event.type !== \"mouse\") {\n this.div.focus();\n }\n this.#startDrawing(event.offsetX, event.offsetY);\n }\n canvasPointermove(event) {\n event.preventDefault();\n this.#draw(event.offsetX, event.offsetY);\n }\n canvasPointerup(event) {\n event.preventDefault();\n this.#endDrawing(event);\n }\n canvasPointerleave(event) {\n this.#endDrawing(event);\n }\n #endDrawing(event) {\n this.canvas.removeEventListener(\"pointerleave\", this.#boundCanvasPointerleave);\n this.canvas.removeEventListener(\"pointermove\", this.#boundCanvasPointermove);\n this.canvas.removeEventListener(\"pointerup\", this.#boundCanvasPointerup);\n this.canvas.addEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n setTimeout(() => {\n this.canvas.removeEventListener(\"contextmenu\", _display_utils.noContextMenu);\n }, 10);\n this.#stopDrawing(event.offsetX, event.offsetY);\n this.addToAnnotationStorage();\n this.setInBackground();\n }\n #createCanvas() {\n this.canvas = document.createElement(\"canvas\");\n this.canvas.width = this.canvas.height = 0;\n this.canvas.className = \"inkEditorCanvas\";\n _editor.AnnotationEditor._l10nPromise.get(\"editor_ink_canvas_aria_label\").then(msg => this.canvas?.setAttribute(\"aria-label\", msg));\n this.div.append(this.canvas);\n this.ctx = this.canvas.getContext(\"2d\");\n }\n #createObserver() {\n this.#observer = new ResizeObserver(entries => {\n const rect = entries[0].contentRect;\n if (rect.width && rect.height) {\n this.setDimensions(rect.width, rect.height);\n }\n });\n this.#observer.observe(this.div);\n }\n get isResizable() {\n return !this.isEmpty() && this.#disableEditing;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n _editor.AnnotationEditor._l10nPromise.get(\"editor_ink2_aria_label\").then(msg => this.div?.setAttribute(\"aria-label\", msg));\n const [x, y, w, h] = this.#getInitialBBox();\n this.setAt(x, y, 0, 0);\n this.setDims(w, h);\n this.#createCanvas();\n if (this.width) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAspectRatio(this.width * parentWidth, this.height * parentHeight);\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n this.#isCanvasInitialized = true;\n this.#setCanvasDims();\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n this.#redraw();\n this.div.classList.add(\"disabled\");\n } else {\n this.div.classList.add(\"editing\");\n this.enableEditMode();\n }\n this.#createObserver();\n return this.div;\n }\n #setCanvasDims() {\n if (!this.#isCanvasInitialized) {\n return;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.canvas.width = Math.ceil(this.width * parentWidth);\n this.canvas.height = Math.ceil(this.height * parentHeight);\n this.#updateTransform();\n }\n setDimensions(width, height) {\n const roundedWidth = Math.round(width);\n const roundedHeight = Math.round(height);\n if (this.#realWidth === roundedWidth && this.#realHeight === roundedHeight) {\n return;\n }\n this.#realWidth = roundedWidth;\n this.#realHeight = roundedHeight;\n this.canvas.style.visibility = \"hidden\";\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n this.fixAndSetPosition();\n if (this.#disableEditing) {\n this.#setScaleFactor(width, height);\n }\n this.#setCanvasDims();\n this.#redraw();\n this.canvas.style.visibility = \"visible\";\n this.fixDims();\n }\n #setScaleFactor(width, height) {\n const padding = this.#getPadding();\n const scaleFactorW = (width - padding) / this.#baseWidth;\n const scaleFactorH = (height - padding) / this.#baseHeight;\n this.scaleFactor = Math.min(scaleFactorW, scaleFactorH);\n }\n #updateTransform() {\n const padding = this.#getPadding() / 2;\n this.ctx.setTransform(this.scaleFactor, 0, 0, this.scaleFactor, this.translationX * this.scaleFactor + padding, this.translationY * this.scaleFactor + padding);\n }\n static #buildPath2D(bezier) {\n const path2D = new Path2D();\n for (let i = 0, ii = bezier.length; i < ii; i++) {\n const [first, control1, control2, second] = bezier[i];\n if (i === 0) {\n path2D.moveTo(...first);\n }\n path2D.bezierCurveTo(control1[0], control1[1], control2[0], control2[1], second[0], second[1]);\n }\n return path2D;\n }\n static #toPDFCoordinates(points, rect, rotation) {\n const [blX, blY, trX, trY] = rect;\n switch (rotation) {\n case 0:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] += blX;\n points[i + 1] = trY - points[i + 1];\n }\n break;\n case 90:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = points[i + 1] + blX;\n points[i + 1] = x + blY;\n }\n break;\n case 180:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = trX - points[i];\n points[i + 1] += blY;\n }\n break;\n case 270:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = trX - points[i + 1];\n points[i + 1] = trY - x;\n }\n break;\n default:\n throw new Error(\"Invalid rotation\");\n }\n return points;\n }\n static #fromPDFCoordinates(points, rect, rotation) {\n const [blX, blY, trX, trY] = rect;\n switch (rotation) {\n case 0:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] -= blX;\n points[i + 1] = trY - points[i + 1];\n }\n break;\n case 90:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = points[i + 1] - blY;\n points[i + 1] = x - blX;\n }\n break;\n case 180:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = trX - points[i];\n points[i + 1] -= blY;\n }\n break;\n case 270:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = trY - points[i + 1];\n points[i + 1] = trX - x;\n }\n break;\n default:\n throw new Error(\"Invalid rotation\");\n }\n return points;\n }\n #serializePaths(s, tx, ty, rect) {\n const paths = [];\n const padding = this.thickness / 2;\n const shiftX = s * tx + padding;\n const shiftY = s * ty + padding;\n for (const bezier of this.paths) {\n const buffer = [];\n const points = [];\n for (let j = 0, jj = bezier.length; j < jj; j++) {\n const [first, control1, control2, second] = bezier[j];\n const p10 = s * first[0] + shiftX;\n const p11 = s * first[1] + shiftY;\n const p20 = s * control1[0] + shiftX;\n const p21 = s * control1[1] + shiftY;\n const p30 = s * control2[0] + shiftX;\n const p31 = s * control2[1] + shiftY;\n const p40 = s * second[0] + shiftX;\n const p41 = s * second[1] + shiftY;\n if (j === 0) {\n buffer.push(p10, p11);\n points.push(p10, p11);\n }\n buffer.push(p20, p21, p30, p31, p40, p41);\n points.push(p20, p21);\n if (j === jj - 1) {\n points.push(p40, p41);\n }\n }\n paths.push({\n bezier: InkEditor.#toPDFCoordinates(buffer, rect, this.rotation),\n points: InkEditor.#toPDFCoordinates(points, rect, this.rotation)\n });\n }\n return paths;\n }\n #getBbox() {\n let xMin = Infinity;\n let xMax = -Infinity;\n let yMin = Infinity;\n let yMax = -Infinity;\n for (const path of this.paths) {\n for (const [first, control1, control2, second] of path) {\n const bbox = _util.Util.bezierBoundingBox(...first, ...control1, ...control2, ...second);\n xMin = Math.min(xMin, bbox[0]);\n yMin = Math.min(yMin, bbox[1]);\n xMax = Math.max(xMax, bbox[2]);\n yMax = Math.max(yMax, bbox[3]);\n }\n }\n return [xMin, yMin, xMax, yMax];\n }\n #getPadding() {\n return this.#disableEditing ? Math.ceil(this.thickness * this.parentScale) : 0;\n }\n #fitToContent(firstTime = false) {\n if (this.isEmpty()) {\n return;\n }\n if (!this.#disableEditing) {\n this.#redraw();\n return;\n }\n const bbox = this.#getBbox();\n const padding = this.#getPadding();\n this.#baseWidth = Math.max(_editor.AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);\n this.#baseHeight = Math.max(_editor.AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);\n const width = Math.ceil(padding + this.#baseWidth * this.scaleFactor);\n const height = Math.ceil(padding + this.#baseHeight * this.scaleFactor);\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n this.setAspectRatio(width, height);\n const prevTranslationX = this.translationX;\n const prevTranslationY = this.translationY;\n this.translationX = -bbox[0];\n this.translationY = -bbox[1];\n this.#setCanvasDims();\n this.#redraw();\n this.#realWidth = width;\n this.#realHeight = height;\n this.setDims(width, height);\n const unscaledPadding = firstTime ? padding / this.scaleFactor / 2 : 0;\n this.translate(prevTranslationX - this.translationX - unscaledPadding, prevTranslationY - this.translationY - unscaledPadding);\n }\n static deserialize(data, parent, uiManager) {\n if (data instanceof _annotation_layer.InkAnnotationElement) {\n return null;\n }\n const editor = super.deserialize(data, parent, uiManager);\n editor.thickness = data.thickness;\n editor.color = _util.Util.makeHexColor(...data.color);\n editor.opacity = data.opacity;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const width = editor.width * pageWidth;\n const height = editor.height * pageHeight;\n const scaleFactor = editor.parentScale;\n const padding = data.thickness / 2;\n editor.#disableEditing = true;\n editor.#realWidth = Math.round(width);\n editor.#realHeight = Math.round(height);\n const {\n paths,\n rect,\n rotation\n } = data;\n for (let {\n bezier\n } of paths) {\n bezier = InkEditor.#fromPDFCoordinates(bezier, rect, rotation);\n const path = [];\n editor.paths.push(path);\n let p0 = scaleFactor * (bezier[0] - padding);\n let p1 = scaleFactor * (bezier[1] - padding);\n for (let i = 2, ii = bezier.length; i < ii; i += 6) {\n const p10 = scaleFactor * (bezier[i] - padding);\n const p11 = scaleFactor * (bezier[i + 1] - padding);\n const p20 = scaleFactor * (bezier[i + 2] - padding);\n const p21 = scaleFactor * (bezier[i + 3] - padding);\n const p30 = scaleFactor * (bezier[i + 4] - padding);\n const p31 = scaleFactor * (bezier[i + 5] - padding);\n path.push([[p0, p1], [p10, p11], [p20, p21], [p30, p31]]);\n p0 = p30;\n p1 = p31;\n }\n const path2D = this.#buildPath2D(path);\n editor.bezierPath2D.push(path2D);\n }\n const bbox = editor.#getBbox();\n editor.#baseWidth = Math.max(_editor.AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);\n editor.#baseHeight = Math.max(_editor.AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);\n editor.#setScaleFactor(width, height);\n return editor;\n }\n serialize() {\n if (this.isEmpty()) {\n return null;\n }\n const rect = this.getRect(0, 0);\n const color = _editor.AnnotationEditor._colorManager.convert(this.ctx.strokeStyle);\n return {\n annotationType: _util.AnnotationEditorType.INK,\n color,\n thickness: this.thickness,\n opacity: this.opacity,\n paths: this.#serializePaths(this.scaleFactor / this.parentScale, this.translationX, this.translationY, rect),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId\n };\n }\n}\nexports.InkEditor = InkEditor;\n\n/***/ }),\n/* 34 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.StampEditor = void 0;\nvar _util = __w_pdfjs_require__(1);\nvar _editor = __w_pdfjs_require__(4);\nvar _display_utils = __w_pdfjs_require__(6);\nvar _annotation_layer = __w_pdfjs_require__(29);\nclass StampEditor extends _editor.AnnotationEditor {\n #bitmap = null;\n #bitmapId = null;\n #bitmapPromise = null;\n #bitmapUrl = null;\n #bitmapFile = null;\n #canvas = null;\n #observer = null;\n #resizeTimeoutId = null;\n #isSvg = false;\n #hasBeenAddedInUndoStack = false;\n static _type = \"stamp\";\n constructor(params) {\n super({\n ...params,\n name: \"stampEditor\"\n });\n this.#bitmapUrl = params.bitmapUrl;\n this.#bitmapFile = params.bitmapFile;\n }\n static initialize(l10n) {\n _editor.AnnotationEditor.initialize(l10n);\n }\n static get supportedTypes() {\n const types = [\"apng\", \"avif\", \"bmp\", \"gif\", \"jpeg\", \"png\", \"svg+xml\", \"webp\", \"x-icon\"];\n return (0, _util.shadow)(this, \"supportedTypes\", types.map(type => `image/${type}`));\n }\n static get supportedTypesStr() {\n return (0, _util.shadow)(this, \"supportedTypesStr\", this.supportedTypes.join(\",\"));\n }\n static isHandlingMimeForPasting(mime) {\n return this.supportedTypes.includes(mime);\n }\n static paste(item, parent) {\n parent.pasteEditor(_util.AnnotationEditorType.STAMP, {\n bitmapFile: item.getAsFile()\n });\n }\n #getBitmapFetched(data, fromId = false) {\n if (!data) {\n this.remove();\n return;\n }\n this.#bitmap = data.bitmap;\n if (!fromId) {\n this.#bitmapId = data.id;\n this.#isSvg = data.isSvg;\n }\n this.#createCanvas();\n }\n #getBitmapDone() {\n this.#bitmapPromise = null;\n this._uiManager.enableWaiting(false);\n if (this.#canvas) {\n this.div.focus();\n }\n }\n #getBitmap() {\n if (this.#bitmapId) {\n this._uiManager.enableWaiting(true);\n this._uiManager.imageManager.getFromId(this.#bitmapId).then(data => this.#getBitmapFetched(data, true)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapUrl) {\n const url = this.#bitmapUrl;\n this.#bitmapUrl = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromUrl(url).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapFile) {\n const file = this.#bitmapFile;\n this.#bitmapFile = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromFile(file).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = StampEditor.supportedTypesStr;\n this.#bitmapPromise = new Promise(resolve => {\n input.addEventListener(\"change\", async () => {\n if (!input.files || input.files.length === 0) {\n this.remove();\n } else {\n this._uiManager.enableWaiting(true);\n const data = await this._uiManager.imageManager.getFromFile(input.files[0]);\n this.#getBitmapFetched(data);\n }\n resolve();\n });\n input.addEventListener(\"cancel\", () => {\n this.remove();\n resolve();\n });\n }).finally(() => this.#getBitmapDone());\n input.click();\n }\n remove() {\n if (this.#bitmapId) {\n this.#bitmap = null;\n this._uiManager.imageManager.deleteId(this.#bitmapId);\n this.#canvas?.remove();\n this.#canvas = null;\n this.#observer?.disconnect();\n this.#observer = null;\n }\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n if (this.#bitmapId) {\n this.#getBitmap();\n }\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (this.#bitmapId) {\n this.#getBitmap();\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n onceAdded() {\n this._isDraggable = true;\n this.div.focus();\n }\n isEmpty() {\n return !(this.#bitmapPromise || this.#bitmap || this.#bitmapUrl || this.#bitmapFile);\n }\n get isResizable() {\n return true;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.div.hidden = true;\n if (this.#bitmap) {\n this.#createCanvas();\n } else {\n this.#getBitmap();\n }\n if (this.width) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n }\n return this.div;\n }\n #createCanvas() {\n const {\n div\n } = this;\n let {\n width,\n height\n } = this.#bitmap;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const MAX_RATIO = 0.75;\n if (this.width) {\n width = this.width * pageWidth;\n height = this.height * pageHeight;\n } else if (width > MAX_RATIO * pageWidth || height > MAX_RATIO * pageHeight) {\n const factor = Math.min(MAX_RATIO * pageWidth / width, MAX_RATIO * pageHeight / height);\n width *= factor;\n height *= factor;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(width * parentWidth / pageWidth, height * parentHeight / pageHeight);\n this._uiManager.enableWaiting(false);\n const canvas = this.#canvas = document.createElement(\"canvas\");\n div.append(canvas);\n div.hidden = false;\n this.#drawBitmap(width, height);\n this.#createObserver();\n if (!this.#hasBeenAddedInUndoStack) {\n this.parent.addUndoableEditor(this);\n this.#hasBeenAddedInUndoStack = true;\n }\n this._uiManager._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n subtype: this.editorType,\n data: {\n action: \"inserted_image\"\n }\n }\n });\n this.addAltTextButton();\n }\n #setDimensions(width, height) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n this.setDims(width, height);\n if (this._initialOptions?.isCentered) {\n this.center();\n } else {\n this.fixAndSetPosition();\n }\n this._initialOptions = null;\n if (this.#resizeTimeoutId !== null) {\n clearTimeout(this.#resizeTimeoutId);\n }\n const TIME_TO_WAIT = 200;\n this.#resizeTimeoutId = setTimeout(() => {\n this.#resizeTimeoutId = null;\n this.#drawBitmap(width, height);\n }, TIME_TO_WAIT);\n }\n #scaleBitmap(width, height) {\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n let newWidth = bitmapWidth;\n let newHeight = bitmapHeight;\n let bitmap = this.#bitmap;\n while (newWidth > 2 * width || newHeight > 2 * height) {\n const prevWidth = newWidth;\n const prevHeight = newHeight;\n if (newWidth > 2 * width) {\n newWidth = newWidth >= 16384 ? Math.floor(newWidth / 2) - 1 : Math.ceil(newWidth / 2);\n }\n if (newHeight > 2 * height) {\n newHeight = newHeight >= 16384 ? Math.floor(newHeight / 2) - 1 : Math.ceil(newHeight / 2);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n bitmap = offscreen.transferToImageBitmap();\n }\n return bitmap;\n }\n #drawBitmap(width, height) {\n width = Math.ceil(width);\n height = Math.ceil(height);\n const canvas = this.#canvas;\n if (!canvas || canvas.width === width && canvas.height === height) {\n return;\n }\n canvas.width = width;\n canvas.height = height;\n const bitmap = this.#isSvg ? this.#bitmap : this.#scaleBitmap(width, height);\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, width, height);\n }\n #serializeBitmap(toUrl) {\n if (toUrl) {\n if (this.#isSvg) {\n const url = this._uiManager.imageManager.getSvgUrl(this.#bitmapId);\n if (url) {\n return url;\n }\n }\n const canvas = document.createElement(\"canvas\");\n ({\n width: canvas.width,\n height: canvas.height\n } = this.#bitmap);\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0);\n return canvas.toDataURL();\n }\n if (this.#isSvg) {\n const [pageWidth, pageHeight] = this.pageDimensions;\n const width = Math.round(this.width * pageWidth * _display_utils.PixelsPerInch.PDF_TO_CSS_UNITS);\n const height = Math.round(this.height * pageHeight * _display_utils.PixelsPerInch.PDF_TO_CSS_UNITS);\n const offscreen = new OffscreenCanvas(width, height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0, this.#bitmap.width, this.#bitmap.height, 0, 0, width, height);\n return offscreen.transferToImageBitmap();\n }\n return structuredClone(this.#bitmap);\n }\n #createObserver() {\n this.#observer = new ResizeObserver(entries => {\n const rect = entries[0].contentRect;\n if (rect.width && rect.height) {\n this.#setDimensions(rect.width, rect.height);\n }\n });\n this.#observer.observe(this.div);\n }\n static deserialize(data, parent, uiManager) {\n if (data instanceof _annotation_layer.StampAnnotationElement) {\n return null;\n }\n const editor = super.deserialize(data, parent, uiManager);\n const {\n rect,\n bitmapUrl,\n bitmapId,\n isSvg,\n accessibilityData\n } = data;\n if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\n editor.#bitmapId = bitmapId;\n } else {\n editor.#bitmapUrl = bitmapUrl;\n }\n editor.#isSvg = isSvg;\n const [parentWidth, parentHeight] = editor.pageDimensions;\n editor.width = (rect[2] - rect[0]) / parentWidth;\n editor.height = (rect[3] - rect[1]) / parentHeight;\n if (accessibilityData) {\n editor.altTextData = accessibilityData;\n }\n return editor;\n }\n serialize(isForCopying = false, context = null) {\n if (this.isEmpty()) {\n return null;\n }\n const serialized = {\n annotationType: _util.AnnotationEditorType.STAMP,\n bitmapId: this.#bitmapId,\n pageIndex: this.pageIndex,\n rect: this.getRect(0, 0),\n rotation: this.rotation,\n isSvg: this.#isSvg,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\n serialized.bitmapUrl = this.#serializeBitmap(true);\n serialized.accessibilityData = this.altTextData;\n return serialized;\n }\n const {\n decorative,\n altText\n } = this.altTextData;\n if (!decorative && altText) {\n serialized.accessibilityData = {\n type: \"Figure\",\n alt: altText\n };\n }\n if (context === null) {\n return serialized;\n }\n context.stamps ||= new Map();\n const area = this.#isSvg ? (serialized.rect[2] - serialized.rect[0]) * (serialized.rect[3] - serialized.rect[1]) : null;\n if (!context.stamps.has(this.#bitmapId)) {\n context.stamps.set(this.#bitmapId, {\n area,\n serialized\n });\n serialized.bitmap = this.#serializeBitmap(false);\n } else if (this.#isSvg) {\n const prevData = context.stamps.get(this.#bitmapId);\n if (area > prevData.area) {\n prevData.area = area;\n prevData.serialized.bitmap.close();\n prevData.serialized.bitmap = this.#serializeBitmap(false);\n }\n }\n return serialized;\n }\n}\nexports.StampEditor = StampEditor;\n\n/***/ })\n/******/ \t]);\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __w_pdfjs_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.\n(() => {\nvar exports = __webpack_exports__;\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"AbortException\", ({\n enumerable: true,\n get: function () {\n return _util.AbortException;\n }\n}));\nObject.defineProperty(exports, \"AnnotationEditorLayer\", ({\n enumerable: true,\n get: function () {\n return _annotation_editor_layer.AnnotationEditorLayer;\n }\n}));\nObject.defineProperty(exports, \"AnnotationEditorParamsType\", ({\n enumerable: true,\n get: function () {\n return _util.AnnotationEditorParamsType;\n }\n}));\nObject.defineProperty(exports, \"AnnotationEditorType\", ({\n enumerable: true,\n get: function () {\n return _util.AnnotationEditorType;\n }\n}));\nObject.defineProperty(exports, \"AnnotationEditorUIManager\", ({\n enumerable: true,\n get: function () {\n return _tools.AnnotationEditorUIManager;\n }\n}));\nObject.defineProperty(exports, \"AnnotationLayer\", ({\n enumerable: true,\n get: function () {\n return _annotation_layer.AnnotationLayer;\n }\n}));\nObject.defineProperty(exports, \"AnnotationMode\", ({\n enumerable: true,\n get: function () {\n return _util.AnnotationMode;\n }\n}));\nObject.defineProperty(exports, \"CMapCompressionType\", ({\n enumerable: true,\n get: function () {\n return _util.CMapCompressionType;\n }\n}));\nObject.defineProperty(exports, \"DOMSVGFactory\", ({\n enumerable: true,\n get: function () {\n return _display_utils.DOMSVGFactory;\n }\n}));\nObject.defineProperty(exports, \"FeatureTest\", ({\n enumerable: true,\n get: function () {\n return _util.FeatureTest;\n }\n}));\nObject.defineProperty(exports, \"GlobalWorkerOptions\", ({\n enumerable: true,\n get: function () {\n return _worker_options.GlobalWorkerOptions;\n }\n}));\nObject.defineProperty(exports, \"ImageKind\", ({\n enumerable: true,\n get: function () {\n return _util.ImageKind;\n }\n}));\nObject.defineProperty(exports, \"InvalidPDFException\", ({\n enumerable: true,\n get: function () {\n return _util.InvalidPDFException;\n }\n}));\nObject.defineProperty(exports, \"MissingPDFException\", ({\n enumerable: true,\n get: function () {\n return _util.MissingPDFException;\n }\n}));\nObject.defineProperty(exports, \"OPS\", ({\n enumerable: true,\n get: function () {\n return _util.OPS;\n }\n}));\nObject.defineProperty(exports, \"PDFDataRangeTransport\", ({\n enumerable: true,\n get: function () {\n return _api.PDFDataRangeTransport;\n }\n}));\nObject.defineProperty(exports, \"PDFDateString\", ({\n enumerable: true,\n get: function () {\n return _display_utils.PDFDateString;\n }\n}));\nObject.defineProperty(exports, \"PDFWorker\", ({\n enumerable: true,\n get: function () {\n return _api.PDFWorker;\n }\n}));\nObject.defineProperty(exports, \"PasswordResponses\", ({\n enumerable: true,\n get: function () {\n return _util.PasswordResponses;\n }\n}));\nObject.defineProperty(exports, \"PermissionFlag\", ({\n enumerable: true,\n get: function () {\n return _util.PermissionFlag;\n }\n}));\nObject.defineProperty(exports, \"PixelsPerInch\", ({\n enumerable: true,\n get: function () {\n return _display_utils.PixelsPerInch;\n }\n}));\nObject.defineProperty(exports, \"PromiseCapability\", ({\n enumerable: true,\n get: function () {\n return _util.PromiseCapability;\n }\n}));\nObject.defineProperty(exports, \"RenderingCancelledException\", ({\n enumerable: true,\n get: function () {\n return _display_utils.RenderingCancelledException;\n }\n}));\nObject.defineProperty(exports, \"SVGGraphics\", ({\n enumerable: true,\n get: function () {\n return _api.SVGGraphics;\n }\n}));\nObject.defineProperty(exports, \"UnexpectedResponseException\", ({\n enumerable: true,\n get: function () {\n return _util.UnexpectedResponseException;\n }\n}));\nObject.defineProperty(exports, \"Util\", ({\n enumerable: true,\n get: function () {\n return _util.Util;\n }\n}));\nObject.defineProperty(exports, \"VerbosityLevel\", ({\n enumerable: true,\n get: function () {\n return _util.VerbosityLevel;\n }\n}));\nObject.defineProperty(exports, \"XfaLayer\", ({\n enumerable: true,\n get: function () {\n return _xfa_layer.XfaLayer;\n }\n}));\nObject.defineProperty(exports, \"build\", ({\n enumerable: true,\n get: function () {\n return _api.build;\n }\n}));\nObject.defineProperty(exports, \"createValidAbsoluteUrl\", ({\n enumerable: true,\n get: function () {\n return _util.createValidAbsoluteUrl;\n }\n}));\nObject.defineProperty(exports, \"getDocument\", ({\n enumerable: true,\n get: function () {\n return _api.getDocument;\n }\n}));\nObject.defineProperty(exports, \"getFilenameFromUrl\", ({\n enumerable: true,\n get: function () {\n return _display_utils.getFilenameFromUrl;\n }\n}));\nObject.defineProperty(exports, \"getPdfFilenameFromUrl\", ({\n enumerable: true,\n get: function () {\n return _display_utils.getPdfFilenameFromUrl;\n }\n}));\nObject.defineProperty(exports, \"getXfaPageViewport\", ({\n enumerable: true,\n get: function () {\n return _display_utils.getXfaPageViewport;\n }\n}));\nObject.defineProperty(exports, \"isDataScheme\", ({\n enumerable: true,\n get: function () {\n return _display_utils.isDataScheme;\n }\n}));\nObject.defineProperty(exports, \"isPdfFile\", ({\n enumerable: true,\n get: function () {\n return _display_utils.isPdfFile;\n }\n}));\nObject.defineProperty(exports, \"loadScript\", ({\n enumerable: true,\n get: function () {\n return _display_utils.loadScript;\n }\n}));\nObject.defineProperty(exports, \"noContextMenu\", ({\n enumerable: true,\n get: function () {\n return _display_utils.noContextMenu;\n }\n}));\nObject.defineProperty(exports, \"normalizeUnicode\", ({\n enumerable: true,\n get: function () {\n return _util.normalizeUnicode;\n }\n}));\nObject.defineProperty(exports, \"renderTextLayer\", ({\n enumerable: true,\n get: function () {\n return _text_layer.renderTextLayer;\n }\n}));\nObject.defineProperty(exports, \"setLayerDimensions\", ({\n enumerable: true,\n get: function () {\n return _display_utils.setLayerDimensions;\n }\n}));\nObject.defineProperty(exports, \"shadow\", ({\n enumerable: true,\n get: function () {\n return _util.shadow;\n }\n}));\nObject.defineProperty(exports, \"updateTextLayer\", ({\n enumerable: true,\n get: function () {\n return _text_layer.updateTextLayer;\n }\n}));\nObject.defineProperty(exports, \"version\", ({\n enumerable: true,\n get: function () {\n return _api.version;\n }\n}));\nvar _util = __w_pdfjs_require__(1);\nvar _api = __w_pdfjs_require__(2);\nvar _display_utils = __w_pdfjs_require__(6);\nvar _text_layer = __w_pdfjs_require__(26);\nvar _annotation_editor_layer = __w_pdfjs_require__(27);\nvar _tools = __w_pdfjs_require__(5);\nvar _annotation_layer = __w_pdfjs_require__(29);\nvar _worker_options = __w_pdfjs_require__(14);\nvar _xfa_layer = __w_pdfjs_require__(32);\nconst pdfjsVersion = '3.11.174';\nconst pdfjsBuild = 'ce8716743';\n})();\n\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});\n//# sourceMappingURL=pdf.js.map","import * as pdfjsModule from 'pdfjs-dist';\nconst pdfjs = ('default' in pdfjsModule ? pdfjsModule['default'] : pdfjsModule);\nexport default pdfjs;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n// As defined on the list of supported events: https://reactjs.org/docs/events.html\nexport var clipboardEvents = ['onCopy', 'onCut', 'onPaste'];\nexport var compositionEvents = [\n 'onCompositionEnd',\n 'onCompositionStart',\n 'onCompositionUpdate',\n];\nexport var focusEvents = ['onFocus', 'onBlur'];\nexport var formEvents = ['onInput', 'onInvalid', 'onReset', 'onSubmit'];\nexport var imageEvents = ['onLoad', 'onError'];\nexport var keyboardEvents = ['onKeyDown', 'onKeyPress', 'onKeyUp'];\nexport var mediaEvents = [\n 'onAbort',\n 'onCanPlay',\n 'onCanPlayThrough',\n 'onDurationChange',\n 'onEmptied',\n 'onEncrypted',\n 'onEnded',\n 'onError',\n 'onLoadedData',\n 'onLoadedMetadata',\n 'onLoadStart',\n 'onPause',\n 'onPlay',\n 'onPlaying',\n 'onProgress',\n 'onRateChange',\n 'onSeeked',\n 'onSeeking',\n 'onStalled',\n 'onSuspend',\n 'onTimeUpdate',\n 'onVolumeChange',\n 'onWaiting',\n];\nexport var mouseEvents = [\n 'onClick',\n 'onContextMenu',\n 'onDoubleClick',\n 'onMouseDown',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseMove',\n 'onMouseOut',\n 'onMouseOver',\n 'onMouseUp',\n];\nexport var dragEvents = [\n 'onDrag',\n 'onDragEnd',\n 'onDragEnter',\n 'onDragExit',\n 'onDragLeave',\n 'onDragOver',\n 'onDragStart',\n 'onDrop',\n];\nexport var selectionEvents = ['onSelect'];\nexport var touchEvents = ['onTouchCancel', 'onTouchEnd', 'onTouchMove', 'onTouchStart'];\nexport var pointerEvents = [\n 'onPointerDown',\n 'onPointerMove',\n 'onPointerUp',\n 'onPointerCancel',\n 'onGotPointerCapture',\n 'onLostPointerCapture',\n 'onPointerEnter',\n 'onPointerLeave',\n 'onPointerOver',\n 'onPointerOut',\n];\nexport var uiEvents = ['onScroll'];\nexport var wheelEvents = ['onWheel'];\nexport var animationEvents = [\n 'onAnimationStart',\n 'onAnimationEnd',\n 'onAnimationIteration',\n];\nexport var transitionEvents = ['onTransitionEnd'];\nexport var otherEvents = ['onToggle'];\nexport var changeEvents = ['onChange'];\nexport var allEvents = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], clipboardEvents, true), compositionEvents, true), focusEvents, true), formEvents, true), imageEvents, true), keyboardEvents, true), mediaEvents, true), mouseEvents, true), dragEvents, true), selectionEvents, true), touchEvents, true), pointerEvents, true), uiEvents, true), wheelEvents, true), animationEvents, true), transitionEvents, true), changeEvents, true), otherEvents, true);\n/**\n * Returns an object with on-event callback props curried with provided args.\n * @param {Object} props Props passed to a component.\n * @param {Function=} getArgs A function that returns argument(s) on-event callbacks\n * shall be curried with.\n */\nexport default function makeEventProps(props, getArgs) {\n var eventProps = {};\n allEvents.forEach(function (eventName) {\n var eventHandler = props[eventName];\n if (!eventHandler) {\n return;\n }\n if (getArgs) {\n eventProps[eventName] = (function (event) {\n return eventHandler(event, getArgs(eventName));\n });\n }\n else {\n eventProps[eventName] = eventHandler;\n }\n });\n return eventProps;\n}\n","export default function makeCancellablePromise(promise) {\n var isCancelled = false;\n var wrappedPromise = new Promise(function (resolve, reject) {\n promise\n .then(function (value) { return !isCancelled && resolve(value); })\n .catch(function (error) { return !isCancelled && reject(error); });\n });\n return {\n promise: wrappedPromise,\n cancel: function () {\n isCancelled = true;\n },\n };\n}\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t {\n invariant(this.pdfDocument, 'PDF document not loaded.');\n invariant(dest, 'Destination is not specified.');\n if (typeof dest === 'string') {\n this.pdfDocument.getDestination(dest).then(resolve);\n }\n else if (Array.isArray(dest)) {\n resolve(dest);\n }\n else {\n dest.then(resolve);\n }\n }).then((explicitDest) => {\n invariant(Array.isArray(explicitDest), `\"${explicitDest}\" is not a valid destination array.`);\n const destRef = explicitDest[0];\n new Promise((resolve) => {\n invariant(this.pdfDocument, 'PDF document not loaded.');\n if (destRef instanceof Object) {\n this.pdfDocument\n .getPageIndex(destRef)\n .then((pageIndex) => {\n resolve(pageIndex);\n })\n .catch(() => {\n invariant(false, `\"${destRef}\" is not a valid page reference.`);\n });\n }\n else if (typeof destRef === 'number') {\n resolve(destRef);\n }\n else {\n invariant(false, `\"${destRef}\" is not a valid destination reference.`);\n }\n }).then((pageIndex) => {\n const pageNumber = pageIndex + 1;\n invariant(this.pdfViewer, 'PDF viewer is not initialized.');\n invariant(pageNumber >= 1 && pageNumber <= this.pagesCount, `\"${pageNumber}\" is not a valid page number.`);\n this.pdfViewer.scrollPageIntoView({\n dest: explicitDest,\n pageIndex,\n pageNumber,\n });\n });\n });\n }\n navigateTo(dest) {\n this.goToDestination(dest);\n }\n goToPage(pageNumber) {\n const pageIndex = pageNumber - 1;\n invariant(this.pdfViewer, 'PDF viewer is not initialized.');\n invariant(pageNumber >= 1 && pageNumber <= this.pagesCount, `\"${pageNumber}\" is not a valid page number.`);\n this.pdfViewer.scrollPageIntoView({\n pageIndex,\n pageNumber,\n });\n }\n addLinkAttributes(link, url, newWindow) {\n link.href = url;\n link.rel = this.externalLinkRel || DEFAULT_LINK_REL;\n link.target = newWindow ? '_blank' : this.externalLinkTarget || '';\n }\n getDestinationHash() {\n return '#';\n }\n getAnchorUrl() {\n return '#';\n }\n setHash() {\n // Intentionally empty\n }\n executeNamedAction() {\n // Intentionally empty\n }\n cachePageRef() {\n // Intentionally empty\n }\n isPageVisible() {\n return true;\n }\n isPageCached() {\n return true;\n }\n executeSetOCGState() {\n // Intentionally empty\n }\n}\n","// As defined in https://github.com/mozilla/pdf.js/blob/d9fac3459609a807be6506fb3441b5da4b154d14/src/shared/util.js#L371-L374\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\nexport default PasswordResponses;\n","import invariant from 'tiny-invariant';\nimport warning from 'tiny-warning';\n/**\n * Checks if we're running in a browser environment.\n */\nexport const isBrowser = typeof document !== 'undefined';\n/**\n * Checks whether we're running from a local file system.\n */\nexport const isLocalFileSystem = isBrowser && window.location.protocol === 'file:';\n/**\n * Checks whether a variable is defined.\n *\n * @param {*} variable Variable to check\n */\nexport function isDefined(variable) {\n return typeof variable !== 'undefined';\n}\n/**\n * Checks whether a variable is defined and not null.\n *\n * @param {*} variable Variable to check\n */\nexport function isProvided(variable) {\n return isDefined(variable) && variable !== null;\n}\n/**\n * Checks whether a variable provided is a string.\n *\n * @param {*} variable Variable to check\n */\nexport function isString(variable) {\n return typeof variable === 'string';\n}\n/**\n * Checks whether a variable provided is an ArrayBuffer.\n *\n * @param {*} variable Variable to check\n */\nexport function isArrayBuffer(variable) {\n return variable instanceof ArrayBuffer;\n}\n/**\n * Checks whether a variable provided is a Blob.\n *\n * @param {*} variable Variable to check\n */\nexport function isBlob(variable) {\n invariant(isBrowser, 'isBlob can only be used in a browser environment');\n return variable instanceof Blob;\n}\n/**\n * Checks whether a variable provided is a data URI.\n *\n * @param {*} variable String to check\n */\nexport function isDataURI(variable) {\n return isString(variable) && /^data:/.test(variable);\n}\nexport function dataURItoByteString(dataURI) {\n invariant(isDataURI(dataURI), 'Invalid data URI.');\n const [headersString = '', dataString = ''] = dataURI.split(',');\n const headers = headersString.split(';');\n if (headers.indexOf('base64') !== -1) {\n return atob(dataString);\n }\n return unescape(dataString);\n}\nexport function getDevicePixelRatio() {\n return (isBrowser && window.devicePixelRatio) || 1;\n}\nconst allowFileAccessFromFilesTip = 'On Chromium based browsers, you can use --allow-file-access-from-files flag for debugging purposes.';\nexport function displayCORSWarning() {\n warning(!isLocalFileSystem, `Loading PDF as base64 strings/URLs may not work on protocols other than HTTP/HTTPS. ${allowFileAccessFromFilesTip}`);\n}\nexport function displayWorkerWarning() {\n warning(!isLocalFileSystem, `Loading PDF.js worker may not work on protocols other than HTTP/HTTPS. ${allowFileAccessFromFilesTip}`);\n}\nexport function cancelRunningTask(runningTask) {\n if (runningTask && runningTask.cancel)\n runningTask.cancel();\n}\nexport function makePageCallback(page, scale) {\n Object.defineProperty(page, 'width', {\n get() {\n return this.view[2] * scale;\n },\n configurable: true,\n });\n Object.defineProperty(page, 'height', {\n get() {\n return this.view[3] * scale;\n },\n configurable: true,\n });\n Object.defineProperty(page, 'originalWidth', {\n get() {\n return this.view[2];\n },\n configurable: true,\n });\n Object.defineProperty(page, 'originalHeight', {\n get() {\n return this.view[3];\n },\n configurable: true,\n });\n return page;\n}\nexport function isCancelException(error) {\n return error.name === 'RenderingCancelledException';\n}\nexport function loadFromFile(file) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n if (!reader.result) {\n return reject(new Error('Error while reading a file.'));\n }\n resolve(reader.result);\n };\n reader.onerror = (event) => {\n if (!event.target) {\n return reject(new Error('Error while reading a file.'));\n }\n const { error } = event.target;\n if (!error) {\n return reject(new Error('Error while reading a file.'));\n }\n switch (error.code) {\n case error.NOT_FOUND_ERR:\n return reject(new Error('Error while reading a file: File not found.'));\n case error.SECURITY_ERR:\n return reject(new Error('Error while reading a file: Security error.'));\n case error.ABORT_ERR:\n return reject(new Error('Error while reading a file: Aborted.'));\n default:\n return reject(new Error('Error while reading a file.'));\n }\n };\n reader.readAsArrayBuffer(file);\n });\n}\n","import { useReducer } from 'react';\nfunction reducer(state, action) {\n switch (action.type) {\n case 'RESOLVE':\n return { value: action.value, error: undefined };\n case 'REJECT':\n return { value: false, error: action.error };\n case 'RESET':\n return { value: undefined, error: undefined };\n default:\n return state;\n }\n}\nexport default function useResolver() {\n return useReducer((reducer), { value: undefined, error: undefined });\n}\n","import PropTypes from 'prop-types';\nimport { allEvents } from 'make-event-props';\nimport pdfjs from '../pdfjs.js';\nimport { isDefined } from './utils.js';\nimport LinkService from '../LinkService.js';\nconst { PDFDataRangeTransport } = pdfjs;\nexport const eventProps = (() => {\n const result = {};\n allEvents.forEach((eventName) => {\n result[eventName] = PropTypes.func;\n });\n return result;\n})();\nconst isTypedArray = PropTypes.oneOfType([\n PropTypes.instanceOf(Int8Array),\n PropTypes.instanceOf(Uint8Array),\n PropTypes.instanceOf(Uint8ClampedArray),\n PropTypes.instanceOf(Int16Array),\n PropTypes.instanceOf(Uint16Array),\n PropTypes.instanceOf(Int32Array),\n PropTypes.instanceOf(Uint32Array),\n PropTypes.instanceOf(Float32Array),\n PropTypes.instanceOf(Float64Array),\n]);\nconst fileTypes = [\n PropTypes.string,\n PropTypes.instanceOf(ArrayBuffer),\n PropTypes.shape({\n data: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.instanceOf(ArrayBuffer),\n PropTypes.arrayOf(PropTypes.number.isRequired),\n isTypedArray,\n ]).isRequired,\n }),\n PropTypes.shape({\n range: PropTypes.instanceOf(PDFDataRangeTransport).isRequired,\n }),\n PropTypes.shape({\n url: PropTypes.string.isRequired,\n }),\n];\nif (typeof Blob !== 'undefined') {\n fileTypes.push(PropTypes.instanceOf(Blob));\n}\nexport const isClassName = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n]);\nexport const isFile = PropTypes.oneOfType(fileTypes);\nexport const isLinkService = PropTypes.instanceOf(LinkService);\nexport const isLinkTarget = PropTypes.oneOf(['_self', '_blank', '_parent', '_top']);\nexport const isPage = PropTypes.shape({\n commonObjs: PropTypes.shape({}).isRequired,\n getAnnotations: PropTypes.func.isRequired,\n getTextContent: PropTypes.func.isRequired,\n getViewport: PropTypes.func.isRequired,\n render: PropTypes.func.isRequired,\n});\nexport const isPageIndex = function isPageIndex(props, propName, componentName) {\n const { [propName]: pageIndex, pageNumber, pdf } = props;\n if (!isDefined(pdf)) {\n return null;\n }\n if (isDefined(pageIndex)) {\n if (typeof pageIndex !== 'number') {\n return new Error(`\\`${propName}\\` of type \\`${typeof pageIndex}\\` supplied to \\`${componentName}\\`, expected \\`number\\`.`);\n }\n if (pageIndex < 0) {\n return new Error(`Expected \\`${propName}\\` to be greater or equal to 0.`);\n }\n const { numPages } = pdf;\n if (pageIndex + 1 > numPages) {\n return new Error(`Expected \\`${propName}\\` to be less or equal to ${numPages - 1}.`);\n }\n }\n else if (!isDefined(pageNumber)) {\n return new Error(`\\`${propName}\\` not supplied. Either pageIndex or pageNumber must be supplied to \\`${componentName}\\`.`);\n }\n // Everything is fine\n return null;\n};\nexport const isPageNumber = function isPageNumber(props, propName, componentName) {\n const { [propName]: pageNumber, pageIndex, pdf } = props;\n if (!isDefined(pdf)) {\n return null;\n }\n if (isDefined(pageNumber)) {\n if (typeof pageNumber !== 'number') {\n return new Error(`\\`${propName}\\` of type \\`${typeof pageNumber}\\` supplied to \\`${componentName}\\`, expected \\`number\\`.`);\n }\n if (pageNumber < 1) {\n return new Error(`Expected \\`${propName}\\` to be greater or equal to 1.`);\n }\n const { numPages } = pdf;\n if (pageNumber > numPages) {\n return new Error(`Expected \\`${propName}\\` to be less or equal to ${numPages}.`);\n }\n }\n else if (!isDefined(pageIndex)) {\n return new Error(`\\`${propName}\\` not supplied. Either pageIndex or pageNumber must be supplied to \\`${componentName}\\`.`);\n }\n // Everything is fine\n return null;\n};\nexport const isPdf = PropTypes.oneOfType([\n // Ideally, this would be `PropTypes.instanceOf(PDFDocumentProxy)`, but it can't be imported.\n PropTypes.any,\n PropTypes.oneOf([false]),\n]);\nexport const isRef = PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.exact({\n current: PropTypes.any,\n }),\n]);\nexport const isRenderMode = PropTypes.oneOf(['canvas', 'custom', 'none', 'svg']);\nexport const isRotate = PropTypes.oneOf([0, 90, 180, 270]);\n","'use client';\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React, { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef, } from 'react';\nimport PropTypes from 'prop-types';\nimport makeEventProps from 'make-event-props';\nimport makeCancellable from 'make-cancellable-promise';\nimport clsx from 'clsx';\nimport invariant from 'tiny-invariant';\nimport warning from 'tiny-warning';\nimport pdfjs from './pdfjs.js';\nimport DocumentContext from './DocumentContext.js';\nimport Message from './Message.js';\nimport LinkService from './LinkService.js';\nimport PasswordResponses from './PasswordResponses.js';\nimport { cancelRunningTask, dataURItoByteString, displayCORSWarning, isArrayBuffer, isBlob, isBrowser, isDataURI, loadFromFile, } from './shared/utils.js';\nimport useResolver from './shared/hooks/useResolver.js';\nimport { eventProps, isClassName, isFile, isRef } from './shared/propTypes.js';\nconst { PDFDataRangeTransport } = pdfjs;\nconst defaultOnPassword = (callback, reason) => {\n switch (reason) {\n case PasswordResponses.NEED_PASSWORD: {\n // eslint-disable-next-line no-alert\n const password = prompt('Enter the password to open this PDF file.');\n callback(password);\n break;\n }\n case PasswordResponses.INCORRECT_PASSWORD: {\n // eslint-disable-next-line no-alert\n const password = prompt('Invalid password. Please try again.');\n callback(password);\n break;\n }\n default:\n }\n};\n/**\n * Loads a document passed using `file` prop.\n */\nconst Document = forwardRef(function Document(_a, ref) {\n var { children, className, error = 'Failed to load PDF file.', externalLinkRel, externalLinkTarget, file, inputRef, imageResourcesPath, loading = 'Loading PDF…', noData = 'No PDF file specified.', onItemClick, onLoadError: onLoadErrorProps, onLoadProgress, onLoadSuccess: onLoadSuccessProps, onPassword = defaultOnPassword, onSourceError: onSourceErrorProps, onSourceSuccess: onSourceSuccessProps, options, renderMode, rotate } = _a, otherProps = __rest(_a, [\"children\", \"className\", \"error\", \"externalLinkRel\", \"externalLinkTarget\", \"file\", \"inputRef\", \"imageResourcesPath\", \"loading\", \"noData\", \"onItemClick\", \"onLoadError\", \"onLoadProgress\", \"onLoadSuccess\", \"onPassword\", \"onSourceError\", \"onSourceSuccess\", \"options\", \"renderMode\", \"rotate\"]);\n const [sourceState, sourceDispatch] = useResolver();\n const { value: source, error: sourceError } = sourceState;\n const [pdfState, pdfDispatch] = useResolver();\n const { value: pdf, error: pdfError } = pdfState;\n const linkService = useRef(new LinkService());\n const pages = useRef([]);\n const viewer = useRef({\n // Handling jumping to internal links target\n scrollPageIntoView: (args) => {\n const { dest, pageNumber, pageIndex = pageNumber - 1 } = args;\n // First, check if custom handling of onItemClick was provided\n if (onItemClick) {\n onItemClick({ dest, pageIndex, pageNumber });\n return;\n }\n // If not, try to look for target page within the .\n const page = pages.current[pageIndex];\n if (page) {\n // Scroll to the page automatically\n page.scrollIntoView();\n return;\n }\n warning(false, `An internal link leading to page ${pageNumber} was clicked, but neither was provided with onItemClick nor it was able to find the page within itself. Either provide onItemClick to and handle navigating by yourself or ensure that all pages are rendered within .`);\n },\n });\n useImperativeHandle(ref, () => ({\n linkService,\n pages,\n viewer,\n }), []);\n /**\n * Called when a document source is resolved correctly\n */\n function onSourceSuccess() {\n if (onSourceSuccessProps) {\n onSourceSuccessProps();\n }\n }\n /**\n * Called when a document source failed to be resolved correctly\n */\n function onSourceError() {\n if (!sourceError) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n warning(false, sourceError.toString());\n if (onSourceErrorProps) {\n onSourceErrorProps(sourceError);\n }\n }\n function resetSource() {\n sourceDispatch({ type: 'RESET' });\n }\n useEffect(resetSource, [file, sourceDispatch]);\n const findDocumentSource = useCallback(() => __awaiter(this, void 0, void 0, function* () {\n if (!file) {\n return null;\n }\n // File is a string\n if (typeof file === 'string') {\n if (isDataURI(file)) {\n const fileByteString = dataURItoByteString(file);\n return { data: fileByteString };\n }\n displayCORSWarning();\n return { url: file };\n }\n // File is PDFDataRangeTransport\n if (file instanceof PDFDataRangeTransport) {\n return { range: file };\n }\n // File is an ArrayBuffer\n if (isArrayBuffer(file)) {\n return { data: file };\n }\n /**\n * The cases below are browser-only.\n * If you're running on a non-browser environment, these cases will be of no use.\n */\n if (isBrowser) {\n // File is a Blob\n if (isBlob(file)) {\n const data = yield loadFromFile(file);\n return { data };\n }\n }\n // At this point, file must be an object\n invariant(typeof file === 'object', 'Invalid parameter in file, need either Uint8Array, string or a parameter object');\n invariant('data' in file || 'range' in file || 'url' in file, 'Invalid parameter object: need either .data, .range or .url');\n // File .url is a string\n if ('url' in file && typeof file.url === 'string') {\n if (isDataURI(file.url)) {\n const { url } = file, otherParams = __rest(file, [\"url\"]);\n const fileByteString = dataURItoByteString(url);\n return Object.assign({ data: fileByteString }, otherParams);\n }\n displayCORSWarning();\n }\n return file;\n }), [file]);\n useEffect(() => {\n const cancellable = makeCancellable(findDocumentSource());\n cancellable.promise\n .then((nextSource) => {\n sourceDispatch({ type: 'RESOLVE', value: nextSource });\n })\n .catch((error) => {\n sourceDispatch({ type: 'REJECT', error });\n });\n return () => {\n cancelRunningTask(cancellable);\n };\n }, [findDocumentSource, sourceDispatch]);\n useEffect(() => {\n if (typeof source === 'undefined') {\n return;\n }\n if (source === false) {\n onSourceError();\n return;\n }\n onSourceSuccess();\n }, \n // Ommitted callbacks so they are not called every time they change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [source]);\n /**\n * Called when a document is read successfully\n */\n function onLoadSuccess() {\n if (!pdf) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n if (onLoadSuccessProps) {\n onLoadSuccessProps(pdf);\n }\n pages.current = new Array(pdf.numPages);\n linkService.current.setDocument(pdf);\n }\n /**\n * Called when a document failed to read successfully\n */\n function onLoadError() {\n if (!pdfError) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n warning(false, pdfError.toString());\n if (onLoadErrorProps) {\n onLoadErrorProps(pdfError);\n }\n }\n function resetDocument() {\n pdfDispatch({ type: 'RESET' });\n }\n useEffect(resetDocument, [pdfDispatch, source]);\n function loadDocument() {\n if (!source) {\n return;\n }\n const documentInitParams = options\n ? Object.assign(Object.assign({}, source), options) : source;\n const destroyable = pdfjs.getDocument(documentInitParams);\n if (onLoadProgress) {\n destroyable.onProgress = onLoadProgress;\n }\n if (onPassword) {\n destroyable.onPassword = onPassword;\n }\n const loadingTask = destroyable;\n loadingTask.promise\n .then((nextPdf) => {\n pdfDispatch({ type: 'RESOLVE', value: nextPdf });\n })\n .catch((error) => {\n if (loadingTask.destroyed) {\n return;\n }\n pdfDispatch({ type: 'REJECT', error });\n });\n return () => {\n loadingTask.destroy();\n };\n }\n useEffect(loadDocument, \n // Ommitted callbacks so they are not called every time they change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [options, pdfDispatch, source]);\n useEffect(() => {\n if (typeof pdf === 'undefined') {\n return;\n }\n if (pdf === false) {\n onLoadError();\n return;\n }\n onLoadSuccess();\n }, \n // Ommitted callbacks so they are not called every time they change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [pdf]);\n function setupLinkService() {\n linkService.current.setViewer(viewer.current);\n linkService.current.setExternalLinkRel(externalLinkRel);\n linkService.current.setExternalLinkTarget(externalLinkTarget);\n }\n useEffect(setupLinkService, [externalLinkRel, externalLinkTarget]);\n function registerPage(pageIndex, ref) {\n pages.current[pageIndex] = ref;\n }\n function unregisterPage(pageIndex) {\n delete pages.current[pageIndex];\n }\n const childContext = useMemo(() => ({\n imageResourcesPath,\n linkService: linkService.current,\n onItemClick,\n pdf,\n registerPage,\n renderMode,\n rotate,\n unregisterPage,\n }), [imageResourcesPath, onItemClick, pdf, renderMode, rotate]);\n const eventProps = useMemo(() => makeEventProps(otherProps, () => pdf), [otherProps, pdf]);\n function renderChildren() {\n return React.createElement(DocumentContext.Provider, { value: childContext }, children);\n }\n function renderContent() {\n if (!file) {\n return React.createElement(Message, { type: \"no-data\" }, typeof noData === 'function' ? noData() : noData);\n }\n if (pdf === undefined || pdf === null) {\n return (React.createElement(Message, { type: \"loading\" }, typeof loading === 'function' ? loading() : loading));\n }\n if (pdf === false) {\n return React.createElement(Message, { type: \"error\" }, typeof error === 'function' ? error() : error);\n }\n return renderChildren();\n }\n return (React.createElement(\"div\", Object.assign({ className: clsx('react-pdf__Document', className), ref: inputRef, style: {\n ['--scale-factor']: '1',\n } }, eventProps), renderContent()));\n});\nconst isFunctionOrNode = PropTypes.oneOfType([PropTypes.func, PropTypes.node]);\nDocument.propTypes = Object.assign(Object.assign({}, eventProps), { children: PropTypes.node, className: isClassName, error: isFunctionOrNode, externalLinkRel: PropTypes.string, externalLinkTarget: PropTypes.oneOf(['_self', '_blank', '_parent', '_top']), file: isFile, imageResourcesPath: PropTypes.string, inputRef: isRef, loading: isFunctionOrNode, noData: isFunctionOrNode, onItemClick: PropTypes.func, onLoadError: PropTypes.func, onLoadProgress: PropTypes.func, onLoadSuccess: PropTypes.func, onPassword: PropTypes.func, onSourceError: PropTypes.func, onSourceSuccess: PropTypes.func, options: PropTypes.shape({\n canvasFactory: PropTypes.any,\n canvasMaxAreaInBytes: PropTypes.number,\n cMapPacked: PropTypes.bool,\n CMapReaderFactory: PropTypes.any,\n cMapUrl: PropTypes.string,\n disableAutoFetch: PropTypes.bool,\n disableFontFace: PropTypes.bool,\n disableRange: PropTypes.bool,\n disableStream: PropTypes.bool,\n docBaseUrl: PropTypes.string,\n enableXfa: PropTypes.bool,\n filterFactory: PropTypes.any,\n fontExtraProperties: PropTypes.bool,\n httpHeaders: PropTypes.object,\n isEvalSupported: PropTypes.bool,\n isOffscreenCanvasSupported: PropTypes.bool,\n length: PropTypes.number,\n maxImageSize: PropTypes.number,\n ownerDocument: PropTypes.any,\n password: PropTypes.string,\n pdfBug: PropTypes.bool,\n rangeChunkSize: PropTypes.number,\n StandardFontDataFactory: PropTypes.any,\n standardFontDataUrl: PropTypes.string,\n stopAtErrors: PropTypes.bool,\n useSystemFonts: PropTypes.bool,\n useWorkerFetch: PropTypes.bool,\n verbosity: PropTypes.number,\n withCredentials: PropTypes.bool,\n worker: PropTypes.any,\n }), rotate: PropTypes.number });\nexport default Document;\n","import { useContext } from 'react';\nimport DocumentContext from '../../DocumentContext.js';\nexport default function useDocumentContext() {\n return useContext(DocumentContext);\n}\n","/**\n * A function that merges React refs into one.\n * Supports both functions and ref objects created using createRef() and useRef().\n *\n * Usage:\n * ```tsx\n *
\n * ```\n *\n * @param {(React.Ref | undefined)[]} inputRefs Array of refs\n * @returns {React.Ref | React.RefCallback} Merged refs\n */\nexport default function mergeRefs() {\n var inputRefs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n inputRefs[_i] = arguments[_i];\n }\n var filteredInputRefs = inputRefs.filter(Boolean);\n if (filteredInputRefs.length <= 1) {\n var firstRef = filteredInputRefs[0];\n return firstRef || null;\n }\n return function mergedRefs(ref) {\n filteredInputRefs.forEach(function (inputRef) {\n if (typeof inputRef === 'function') {\n inputRef(ref);\n }\n else if (inputRef) {\n inputRef.current = ref;\n }\n });\n };\n}\n","'use client';\nimport { createContext } from 'react';\nexport default createContext(null);\n","// From pdfjs-dist/lib/web/struct_tree_layer_builder.js\nexport const PDF_ROLE_TO_HTML_ROLE = {\n // Document level structure types\n Document: null, // There's a \"document\" role, but it doesn't make sense here.\n DocumentFragment: null,\n // Grouping level structure types\n Part: 'group',\n Sect: 'group', // XXX: There's a \"section\" role, but it's abstract.\n Div: 'group',\n Aside: 'note',\n NonStruct: 'none',\n // Block level structure types\n P: null,\n // H,\n H: 'heading',\n Title: null,\n FENote: 'note',\n // Sub-block level structure type\n Sub: 'group',\n // General inline level structure types\n Lbl: null,\n Span: null,\n Em: null,\n Strong: null,\n Link: 'link',\n Annot: 'note',\n Form: 'form',\n // Ruby and Warichu structure types\n Ruby: null,\n RB: null,\n RT: null,\n RP: null,\n Warichu: null,\n WT: null,\n WP: null,\n // List standard structure types\n L: 'list',\n LI: 'listitem',\n LBody: null,\n // Table standard structure types\n Table: 'table',\n TR: 'row',\n TH: 'columnheader',\n TD: 'cell',\n THead: 'columnheader',\n TBody: null,\n TFoot: null,\n // Standard structure type Caption\n Caption: null,\n // Standard structure type Figure\n Figure: 'figure',\n // Standard structure type Formula\n Formula: null,\n // standard structure type Artifact\n Artifact: null,\n};\nexport const HEADING_PATTERN = /^H(\\d+)$/;\n","import { HEADING_PATTERN, PDF_ROLE_TO_HTML_ROLE } from './constants.js';\nexport function isPdfRole(role) {\n return role in PDF_ROLE_TO_HTML_ROLE;\n}\nexport function isStructTreeNode(node) {\n return 'children' in node;\n}\nexport function isStructTreeNodeWithOnlyContentChild(node) {\n if (!isStructTreeNode(node)) {\n return false;\n }\n return node.children.length === 1 && 0 in node.children && 'id' in node.children[0];\n}\nexport function getRoleAttributes(node) {\n const attributes = {};\n if (isStructTreeNode(node)) {\n const { role } = node;\n const matches = role.match(HEADING_PATTERN);\n if (matches) {\n attributes.role = 'heading';\n attributes['aria-level'] = Number(matches[1]);\n }\n else if (isPdfRole(role)) {\n const htmlRole = PDF_ROLE_TO_HTML_ROLE[role];\n if (htmlRole) {\n attributes.role = htmlRole;\n }\n }\n }\n return attributes;\n}\nexport function getBaseAttributes(node) {\n const attributes = {};\n if (isStructTreeNode(node)) {\n if (node.alt !== undefined) {\n attributes['aria-label'] = node.alt;\n }\n if (node.lang !== undefined) {\n attributes.lang = node.lang;\n }\n if (isStructTreeNodeWithOnlyContentChild(node)) {\n const [child] = node.children;\n if (child) {\n const childAttributes = getBaseAttributes(child);\n return Object.assign(Object.assign({}, attributes), childAttributes);\n }\n }\n }\n else {\n if ('id' in node) {\n attributes['aria-owns'] = node.id;\n }\n }\n return attributes;\n}\nexport function getAttributes(node) {\n if (!node) {\n return null;\n }\n return Object.assign(Object.assign({}, getRoleAttributes(node)), getBaseAttributes(node));\n}\n","import React, { useMemo } from 'react';\nimport { getAttributes, isStructTreeNode, isStructTreeNodeWithOnlyContentChild, } from './shared/structTreeUtils.js';\nexport default function StructTreeItem({ className, node }) {\n const attributes = useMemo(() => getAttributes(node), [node]);\n const children = useMemo(() => {\n if (!isStructTreeNode(node)) {\n return null;\n }\n if (isStructTreeNodeWithOnlyContentChild(node)) {\n return null;\n }\n return node.children.map((child, index) => {\n return (\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(StructTreeItem, { key: index, node: child }));\n });\n }, [node]);\n return (React.createElement(\"span\", Object.assign({ className: className }, attributes), children));\n}\n","import { useContext } from 'react';\nimport PageContext from '../../PageContext.js';\nexport default function usePageContext() {\n return useContext(PageContext);\n}\n","import React, { useEffect } from 'react';\nimport makeCancellable from 'make-cancellable-promise';\nimport invariant from 'tiny-invariant';\nimport warning from 'tiny-warning';\nimport StructTreeItem from './StructTreeItem.js';\nimport usePageContext from './shared/hooks/usePageContext.js';\nimport useResolver from './shared/hooks/useResolver.js';\nimport { cancelRunningTask } from './shared/utils.js';\nexport default function StructTree() {\n const pageContext = usePageContext();\n invariant(pageContext, 'Unable to find Page context.');\n const { onGetStructTreeError: onGetStructTreeErrorProps, onGetStructTreeSuccess: onGetStructTreeSuccessProps, } = pageContext;\n const [structTreeState, structTreeDispatch] = useResolver();\n const { value: structTree, error: structTreeError } = structTreeState;\n const { customTextRenderer, page } = pageContext;\n function onLoadSuccess() {\n if (!structTree) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n if (onGetStructTreeSuccessProps) {\n onGetStructTreeSuccessProps(structTree);\n }\n }\n function onLoadError() {\n if (!structTreeError) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n warning(false, structTreeError.toString());\n if (onGetStructTreeErrorProps) {\n onGetStructTreeErrorProps(structTreeError);\n }\n }\n function resetAnnotations() {\n structTreeDispatch({ type: 'RESET' });\n }\n useEffect(resetAnnotations, [structTreeDispatch, page]);\n function loadStructTree() {\n if (customTextRenderer) {\n // TODO: Document why this is necessary\n return;\n }\n if (!page) {\n return;\n }\n const cancellable = makeCancellable(page.getStructTree());\n const runningTask = cancellable;\n cancellable.promise\n .then((nextStructTree) => {\n structTreeDispatch({ type: 'RESOLVE', value: nextStructTree });\n })\n .catch((error) => {\n structTreeDispatch({ type: 'REJECT', error });\n });\n return () => cancelRunningTask(runningTask);\n }\n useEffect(loadStructTree, [customTextRenderer, page, structTreeDispatch]);\n useEffect(() => {\n if (structTree === undefined) {\n return;\n }\n if (structTree === false) {\n onLoadError();\n return;\n }\n onLoadSuccess();\n }, \n // Ommitted callbacks so they are not called every time they change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [structTree]);\n if (!structTree) {\n return null;\n }\n return React.createElement(StructTreeItem, { className: \"react-pdf__Page__structTree structTree\", node: structTree });\n}\n","'use client';\nimport React, { useCallback, useEffect, useMemo, useRef } from 'react';\nimport mergeRefs from 'merge-refs';\nimport invariant from 'tiny-invariant';\nimport warning from 'tiny-warning';\nimport pdfjs from '../pdfjs.js';\nimport StructTree from '../StructTree.js';\nimport usePageContext from '../shared/hooks/usePageContext.js';\nimport { cancelRunningTask, getDevicePixelRatio, isCancelException, makePageCallback, } from '../shared/utils.js';\nconst ANNOTATION_MODE = pdfjs.AnnotationMode;\nexport default function PageCanvas(props) {\n const pageContext = usePageContext();\n invariant(pageContext, 'Unable to find Page context.');\n const mergedProps = Object.assign(Object.assign({}, pageContext), props);\n const { _className, canvasBackground, devicePixelRatio = getDevicePixelRatio(), onRenderError: onRenderErrorProps, onRenderSuccess: onRenderSuccessProps, page, renderForms, renderTextLayer, rotate, scale, } = mergedProps;\n const { canvasRef } = props;\n invariant(page, 'Attempted to render page canvas, but no page was specified.');\n const canvasElement = useRef(null);\n /**\n * Called when a page is rendered successfully.\n */\n function onRenderSuccess() {\n if (!page) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n if (onRenderSuccessProps) {\n onRenderSuccessProps(makePageCallback(page, scale));\n }\n }\n /**\n * Called when a page fails to render.\n */\n function onRenderError(error) {\n if (isCancelException(error)) {\n return;\n }\n warning(false, error.toString());\n if (onRenderErrorProps) {\n onRenderErrorProps(error);\n }\n }\n const renderViewport = useMemo(() => page.getViewport({ scale: scale * devicePixelRatio, rotation: rotate }), [devicePixelRatio, page, rotate, scale]);\n const viewport = useMemo(() => page.getViewport({ scale, rotation: rotate }), [page, rotate, scale]);\n function drawPageOnCanvas() {\n if (!page) {\n return;\n }\n // Ensures the canvas will be re-rendered from scratch. Otherwise all form data will stay.\n page.cleanup();\n const { current: canvas } = canvasElement;\n if (!canvas) {\n return;\n }\n canvas.width = renderViewport.width;\n canvas.height = renderViewport.height;\n canvas.style.width = `${Math.floor(viewport.width)}px`;\n canvas.style.height = `${Math.floor(viewport.height)}px`;\n canvas.style.visibility = 'hidden';\n const renderContext = {\n annotationMode: renderForms ? ANNOTATION_MODE.ENABLE_FORMS : ANNOTATION_MODE.ENABLE,\n canvasContext: canvas.getContext('2d', { alpha: false }),\n viewport: renderViewport,\n };\n if (canvasBackground) {\n renderContext.background = canvasBackground;\n }\n const cancellable = page.render(renderContext);\n const runningTask = cancellable;\n cancellable.promise\n .then(() => {\n canvas.style.visibility = '';\n onRenderSuccess();\n })\n .catch(onRenderError);\n return () => cancelRunningTask(runningTask);\n }\n useEffect(drawPageOnCanvas, \n // Ommitted callbacks so they are not called every time they change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n canvasBackground,\n canvasElement,\n devicePixelRatio,\n page,\n renderForms,\n renderViewport,\n viewport,\n ]);\n const cleanup = useCallback(() => {\n const { current: canvas } = canvasElement;\n /**\n * Zeroing the width and height cause most browsers to release graphics\n * resources immediately, which can greatly reduce memory consumption.\n */\n if (canvas) {\n canvas.width = 0;\n canvas.height = 0;\n }\n }, [canvasElement]);\n useEffect(() => cleanup, [cleanup]);\n return (React.createElement(\"canvas\", { className: `${_className}__canvas`, dir: \"ltr\", ref: mergeRefs(canvasRef, canvasElement), style: {\n display: 'block',\n userSelect: 'none',\n } }, renderTextLayer ? React.createElement(StructTree, null) : null));\n}\n","import React, { useEffect, useMemo } from 'react';\nimport makeCancellable from 'make-cancellable-promise';\nimport invariant from 'tiny-invariant';\nimport warning from 'tiny-warning';\nimport pdfjs from '../pdfjs.js';\nimport usePageContext from '../shared/hooks/usePageContext.js';\nimport useResolver from '../shared/hooks/useResolver.js';\nimport { cancelRunningTask, isCancelException, makePageCallback } from '../shared/utils.js';\nexport default function PageSVG() {\n const pageContext = usePageContext();\n invariant(pageContext, 'Unable to find Page context.');\n const { _className, onRenderSuccess: onRenderSuccessProps, onRenderError: onRenderErrorProps, page, rotate, scale, } = pageContext;\n invariant(page, 'Attempted to render page SVG, but no page was specified.');\n const [svgState, svgDispatch] = useResolver();\n const { value: svg, error: svgError } = svgState;\n /**\n * Called when a page is rendered successfully\n */\n function onRenderSuccess() {\n if (!page) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n if (onRenderSuccessProps) {\n onRenderSuccessProps(makePageCallback(page, scale));\n }\n }\n /**\n * Called when a page fails to render\n */\n function onRenderError() {\n if (!svgError) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n if (isCancelException(svgError)) {\n return;\n }\n warning(false, svgError.toString());\n if (onRenderErrorProps) {\n onRenderErrorProps(svgError);\n }\n }\n const viewport = useMemo(() => page.getViewport({ scale, rotation: rotate }), [page, rotate, scale]);\n function resetSVG() {\n svgDispatch({ type: 'RESET' });\n }\n useEffect(resetSVG, [page, svgDispatch, viewport]);\n function renderSVG() {\n if (!page) {\n return;\n }\n const cancellable = makeCancellable(page.getOperatorList());\n cancellable.promise\n .then((operatorList) => {\n const svgGfx = new pdfjs.SVGGraphics(page.commonObjs, page.objs);\n svgGfx\n .getSVG(operatorList, viewport)\n .then((nextSvg) => {\n // See https://github.com/mozilla/pdf.js/issues/16745\n if (!(nextSvg instanceof SVGElement)) {\n throw new Error('getSVG returned unexpected result.');\n }\n svgDispatch({ type: 'RESOLVE', value: nextSvg });\n })\n .catch((error) => {\n svgDispatch({ type: 'REJECT', error });\n });\n })\n .catch((error) => {\n svgDispatch({ type: 'REJECT', error });\n });\n return () => cancelRunningTask(cancellable);\n }\n useEffect(renderSVG, [page, svgDispatch, viewport]);\n useEffect(() => {\n if (svg === undefined) {\n return;\n }\n if (svg === false) {\n onRenderError();\n return;\n }\n onRenderSuccess();\n }, \n // Ommitted callbacks so they are not called every time they change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [svg]);\n function drawPageOnContainer(element) {\n if (!element || !svg) {\n return;\n }\n // Append SVG element to the main container, if this hasn't been done already\n if (!element.firstElementChild) {\n element.appendChild(svg);\n }\n const { width, height } = viewport;\n svg.setAttribute('width', `${width}`);\n svg.setAttribute('height', `${height}`);\n }\n const { width, height } = viewport;\n return (React.createElement(\"div\", { className: `${_className}__svg`, \n // Note: This cannot be shortened, as we need this function to be called with each render.\n ref: (ref) => drawPageOnContainer(ref), style: {\n display: 'block',\n backgroundColor: 'white',\n overflow: 'hidden',\n width,\n height,\n userSelect: 'none',\n } }));\n}\n","'use client';\nimport React, { useCallback, useEffect, useLayoutEffect, useMemo, useRef } from 'react';\nimport makeCancellable from 'make-cancellable-promise';\nimport clsx from 'clsx';\nimport invariant from 'tiny-invariant';\nimport warning from 'tiny-warning';\nimport pdfjs from '../pdfjs.js';\nimport usePageContext from '../shared/hooks/usePageContext.js';\nimport useResolver from '../shared/hooks/useResolver.js';\nimport { cancelRunningTask } from '../shared/utils.js';\nfunction isTextItem(item) {\n return 'str' in item;\n}\nexport default function TextLayer() {\n const pageContext = usePageContext();\n invariant(pageContext, 'Unable to find Page context.');\n const { customTextRenderer, onGetTextError, onGetTextSuccess, onRenderTextLayerError, onRenderTextLayerSuccess, page, pageIndex, pageNumber, rotate, scale, } = pageContext;\n invariant(page, 'Attempted to load page text content, but no page was specified.');\n const [textContentState, textContentDispatch] = useResolver();\n const { value: textContent, error: textContentError } = textContentState;\n const layerElement = useRef(null);\n const endElement = useRef();\n warning(parseInt(window.getComputedStyle(document.body).getPropertyValue('--react-pdf-text-layer'), 10) === 1, 'TextLayer styles not found. Read more: https://github.com/wojtekmaj/react-pdf#support-for-text-layer');\n /**\n * Called when a page text content is read successfully\n */\n function onLoadSuccess() {\n if (!textContent) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n if (onGetTextSuccess) {\n onGetTextSuccess(textContent);\n }\n }\n /**\n * Called when a page text content failed to read successfully\n */\n function onLoadError() {\n if (!textContentError) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n warning(false, textContentError.toString());\n if (onGetTextError) {\n onGetTextError(textContentError);\n }\n }\n function resetTextContent() {\n textContentDispatch({ type: 'RESET' });\n }\n useEffect(resetTextContent, [page, textContentDispatch]);\n function loadTextContent() {\n if (!page) {\n return;\n }\n const cancellable = makeCancellable(page.getTextContent());\n const runningTask = cancellable;\n cancellable.promise\n .then((nextTextContent) => {\n textContentDispatch({ type: 'RESOLVE', value: nextTextContent });\n })\n .catch((error) => {\n textContentDispatch({ type: 'REJECT', error });\n });\n return () => cancelRunningTask(runningTask);\n }\n useEffect(loadTextContent, [page, textContentDispatch]);\n useEffect(() => {\n if (textContent === undefined) {\n return;\n }\n if (textContent === false) {\n onLoadError();\n return;\n }\n onLoadSuccess();\n }, \n // Ommitted callbacks so they are not called every time they change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [textContent]);\n /**\n * Called when a text layer is rendered successfully\n */\n const onRenderSuccess = useCallback(() => {\n if (onRenderTextLayerSuccess) {\n onRenderTextLayerSuccess();\n }\n }, [onRenderTextLayerSuccess]);\n /**\n * Called when a text layer failed to render successfully\n */\n const onRenderError = useCallback((error) => {\n warning(false, error.toString());\n if (onRenderTextLayerError) {\n onRenderTextLayerError(error);\n }\n }, [onRenderTextLayerError]);\n function onMouseDown() {\n const end = endElement.current;\n if (!end) {\n return;\n }\n end.classList.add('active');\n }\n function onMouseUp() {\n const end = endElement.current;\n if (!end) {\n return;\n }\n end.classList.remove('active');\n }\n const viewport = useMemo(() => page.getViewport({ scale, rotation: rotate }), [page, rotate, scale]);\n function renderTextLayer() {\n if (!page || !textContent) {\n return;\n }\n const { current: layer } = layerElement;\n if (!layer) {\n return;\n }\n layer.innerHTML = '';\n const textContentSource = page.streamTextContent({ includeMarkedContent: true });\n const parameters = {\n container: layer,\n textContentSource,\n viewport,\n };\n const cancellable = pdfjs.renderTextLayer(parameters);\n const runningTask = cancellable;\n cancellable.promise\n .then(() => {\n const end = document.createElement('div');\n end.className = 'endOfContent';\n layer.append(end);\n endElement.current = end;\n const layerChildren = layer.querySelectorAll('[role=\"presentation\"]');\n if (customTextRenderer) {\n let index = 0;\n textContent.items.forEach((item, itemIndex) => {\n if (!isTextItem(item)) {\n return;\n }\n const child = layerChildren[index];\n if (!child) {\n return;\n }\n const content = customTextRenderer(Object.assign({ pageIndex,\n pageNumber,\n itemIndex }, item));\n child.innerHTML = content;\n index += item.str && item.hasEOL ? 2 : 1;\n });\n }\n // Intentional immediate callback\n onRenderSuccess();\n })\n .catch(onRenderError);\n return () => cancelRunningTask(runningTask);\n }\n useLayoutEffect(renderTextLayer, [\n customTextRenderer,\n onRenderError,\n onRenderSuccess,\n page,\n pageIndex,\n pageNumber,\n textContent,\n viewport,\n ]);\n return (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n React.createElement(\"div\", { className: clsx('react-pdf__Page__textContent', 'textLayer'), onMouseUp: onMouseUp, onMouseDown: onMouseDown, ref: layerElement }));\n}\n","'use client';\nimport React, { useEffect, useMemo, useRef } from 'react';\nimport makeCancellable from 'make-cancellable-promise';\nimport clsx from 'clsx';\nimport invariant from 'tiny-invariant';\nimport warning from 'tiny-warning';\nimport pdfjs from '../pdfjs.js';\nimport useDocumentContext from '../shared/hooks/useDocumentContext.js';\nimport usePageContext from '../shared/hooks/usePageContext.js';\nimport useResolver from '../shared/hooks/useResolver.js';\nimport { cancelRunningTask } from '../shared/utils.js';\nexport default function AnnotationLayer() {\n const documentContext = useDocumentContext();\n invariant(documentContext, 'Unable to find Document context. Did you wrap in ?');\n const pageContext = usePageContext();\n invariant(pageContext, 'Unable to find Page context.');\n const mergedProps = Object.assign(Object.assign({}, documentContext), pageContext);\n const { imageResourcesPath, linkService, onGetAnnotationsError: onGetAnnotationsErrorProps, onGetAnnotationsSuccess: onGetAnnotationsSuccessProps, onRenderAnnotationLayerError: onRenderAnnotationLayerErrorProps, onRenderAnnotationLayerSuccess: onRenderAnnotationLayerSuccessProps, page, pdf, renderForms, rotate, scale = 1, } = mergedProps;\n invariant(page, 'Attempted to load page annotations, but no page was specified.');\n const [annotationsState, annotationsDispatch] = useResolver();\n const { value: annotations, error: annotationsError } = annotationsState;\n const layerElement = useRef(null);\n warning(parseInt(window.getComputedStyle(document.body).getPropertyValue('--react-pdf-annotation-layer'), 10) === 1, 'AnnotationLayer styles not found. Read more: https://github.com/wojtekmaj/react-pdf#support-for-annotations');\n function onLoadSuccess() {\n if (!annotations) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n if (onGetAnnotationsSuccessProps) {\n onGetAnnotationsSuccessProps(annotations);\n }\n }\n function onLoadError() {\n if (!annotationsError) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n warning(false, annotationsError.toString());\n if (onGetAnnotationsErrorProps) {\n onGetAnnotationsErrorProps(annotationsError);\n }\n }\n function resetAnnotations() {\n annotationsDispatch({ type: 'RESET' });\n }\n useEffect(resetAnnotations, [annotationsDispatch, page]);\n function loadAnnotations() {\n if (!page) {\n return;\n }\n const cancellable = makeCancellable(page.getAnnotations());\n const runningTask = cancellable;\n cancellable.promise\n .then((nextAnnotations) => {\n annotationsDispatch({ type: 'RESOLVE', value: nextAnnotations });\n })\n .catch((error) => {\n annotationsDispatch({ type: 'REJECT', error });\n });\n return () => {\n cancelRunningTask(runningTask);\n };\n }\n useEffect(loadAnnotations, [annotationsDispatch, page, renderForms]);\n useEffect(() => {\n if (annotations === undefined) {\n return;\n }\n if (annotations === false) {\n onLoadError();\n return;\n }\n onLoadSuccess();\n }, \n // Ommitted callbacks so they are not called every time they change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [annotations]);\n function onRenderSuccess() {\n if (onRenderAnnotationLayerSuccessProps) {\n onRenderAnnotationLayerSuccessProps();\n }\n }\n function onRenderError(error) {\n warning(false, `${error}`);\n if (onRenderAnnotationLayerErrorProps) {\n onRenderAnnotationLayerErrorProps(error);\n }\n }\n const viewport = useMemo(() => page.getViewport({ scale, rotation: rotate }), [page, rotate, scale]);\n function renderAnnotationLayer() {\n if (!pdf || !page || !annotations) {\n return;\n }\n const { current: layer } = layerElement;\n if (!layer) {\n return;\n }\n const clonedViewport = viewport.clone({ dontFlip: true });\n const annotationLayerParameters = {\n accessibilityManager: null, // TODO: Implement this\n annotationCanvasMap: null, // TODO: Implement this\n div: layer,\n l10n: null, // TODO: Implement this\n page,\n viewport: clonedViewport,\n };\n const renderParameters = {\n annotations,\n annotationStorage: pdf.annotationStorage,\n div: layer,\n // See https://github.com/mozilla/pdf.js/issues/17029\n downloadManager: null,\n imageResourcesPath,\n linkService,\n page,\n renderForms,\n viewport: clonedViewport,\n };\n layer.innerHTML = '';\n try {\n new pdfjs.AnnotationLayer(annotationLayerParameters).render(renderParameters);\n // Intentional immediate callback\n onRenderSuccess();\n }\n catch (error) {\n onRenderError(error);\n }\n return () => {\n // TODO: Cancel running task?\n };\n }\n useEffect(renderAnnotationLayer, \n // Ommitted callbacks so they are not called every time they change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [annotations, imageResourcesPath, linkService, page, renderForms, viewport]);\n return (React.createElement(\"div\", { className: clsx('react-pdf__Page__annotations', 'annotationLayer'), ref: layerElement }));\n}\n","'use client';\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React, { useEffect, useMemo, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport makeCancellable from 'make-cancellable-promise';\nimport makeEventProps from 'make-event-props';\nimport clsx from 'clsx';\nimport mergeRefs from 'merge-refs';\nimport invariant from 'tiny-invariant';\nimport warning from 'tiny-warning';\nimport PageContext from './PageContext.js';\nimport Message from './Message.js';\nimport PageCanvas from './Page/PageCanvas.js';\nimport PageSVG from './Page/PageSVG.js';\nimport TextLayer from './Page/TextLayer.js';\nimport AnnotationLayer from './Page/AnnotationLayer.js';\nimport { cancelRunningTask, isProvided, makePageCallback } from './shared/utils.js';\nimport useDocumentContext from './shared/hooks/useDocumentContext.js';\nimport useResolver from './shared/hooks/useResolver.js';\nimport { eventProps, isClassName, isPageIndex, isPageNumber, isPdf, isRef, isRenderMode, isRotate, } from './shared/propTypes.js';\nconst defaultScale = 1;\n/**\n * Displays a page.\n *\n * Should be placed inside ``. Alternatively, it can have `pdf` prop passed, which can be obtained from ``'s `onLoadSuccess` callback function, however some advanced functions like linking between pages inside a document may not be working correctly.\n */\nconst Page = function Page(props) {\n const documentContext = useDocumentContext();\n invariant(documentContext, 'Unable to find Document context. Did you wrap in ?');\n const mergedProps = Object.assign(Object.assign({}, documentContext), props);\n const { _className = 'react-pdf__Page', _enableRegisterUnregisterPage = true, canvasBackground, canvasRef, children, className, customRenderer: CustomRenderer, customTextRenderer, devicePixelRatio, error = 'Failed to load the page.', height, inputRef, loading = 'Loading page…', noData = 'No page specified.', onGetAnnotationsError: onGetAnnotationsErrorProps, onGetAnnotationsSuccess: onGetAnnotationsSuccessProps, onGetStructTreeError: onGetStructTreeErrorProps, onGetStructTreeSuccess: onGetStructTreeSuccessProps, onGetTextError: onGetTextErrorProps, onGetTextSuccess: onGetTextSuccessProps, onLoadError: onLoadErrorProps, onLoadSuccess: onLoadSuccessProps, onRenderAnnotationLayerError: onRenderAnnotationLayerErrorProps, onRenderAnnotationLayerSuccess: onRenderAnnotationLayerSuccessProps, onRenderError: onRenderErrorProps, onRenderSuccess: onRenderSuccessProps, onRenderTextLayerError: onRenderTextLayerErrorProps, onRenderTextLayerSuccess: onRenderTextLayerSuccessProps, pageIndex: pageIndexProps, pageNumber: pageNumberProps, pdf, registerPage, renderAnnotationLayer: renderAnnotationLayerProps = true, renderForms = false, renderMode = 'canvas', renderTextLayer: renderTextLayerProps = true, rotate: rotateProps, scale: scaleProps = defaultScale, unregisterPage, width } = mergedProps, otherProps = __rest(mergedProps, [\"_className\", \"_enableRegisterUnregisterPage\", \"canvasBackground\", \"canvasRef\", \"children\", \"className\", \"customRenderer\", \"customTextRenderer\", \"devicePixelRatio\", \"error\", \"height\", \"inputRef\", \"loading\", \"noData\", \"onGetAnnotationsError\", \"onGetAnnotationsSuccess\", \"onGetStructTreeError\", \"onGetStructTreeSuccess\", \"onGetTextError\", \"onGetTextSuccess\", \"onLoadError\", \"onLoadSuccess\", \"onRenderAnnotationLayerError\", \"onRenderAnnotationLayerSuccess\", \"onRenderError\", \"onRenderSuccess\", \"onRenderTextLayerError\", \"onRenderTextLayerSuccess\", \"pageIndex\", \"pageNumber\", \"pdf\", \"registerPage\", \"renderAnnotationLayer\", \"renderForms\", \"renderMode\", \"renderTextLayer\", \"rotate\", \"scale\", \"unregisterPage\", \"width\"]);\n const [pageState, pageDispatch] = useResolver();\n const { value: page, error: pageError } = pageState;\n const pageElement = useRef(null);\n invariant(pdf, 'Attempted to load a page, but no document was specified.');\n const pageIndex = isProvided(pageNumberProps) ? pageNumberProps - 1 : pageIndexProps !== null && pageIndexProps !== void 0 ? pageIndexProps : null;\n const pageNumber = pageNumberProps !== null && pageNumberProps !== void 0 ? pageNumberProps : (isProvided(pageIndexProps) ? pageIndexProps + 1 : null);\n const rotate = rotateProps !== null && rotateProps !== void 0 ? rotateProps : (page ? page.rotate : null);\n const scale = useMemo(() => {\n if (!page) {\n return null;\n }\n // Be default, we'll render page at 100% * scale width.\n let pageScale = 1;\n // Passing scale explicitly null would cause the page not to render\n const scaleWithDefault = scaleProps !== null && scaleProps !== void 0 ? scaleProps : defaultScale;\n // If width/height is defined, calculate the scale of the page so it could be of desired width.\n if (width || height) {\n const viewport = page.getViewport({ scale: 1, rotation: rotate });\n if (width) {\n pageScale = width / viewport.width;\n }\n else if (height) {\n pageScale = height / viewport.height;\n }\n }\n return scaleWithDefault * pageScale;\n }, [height, page, rotate, scaleProps, width]);\n function hook() {\n return () => {\n if (!isProvided(pageIndex)) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n if (_enableRegisterUnregisterPage && unregisterPage) {\n unregisterPage(pageIndex);\n }\n };\n }\n useEffect(hook, [_enableRegisterUnregisterPage, pdf, pageIndex, unregisterPage]);\n /**\n * Called when a page is loaded successfully\n */\n function onLoadSuccess() {\n if (onLoadSuccessProps) {\n if (!page || !scale) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n onLoadSuccessProps(makePageCallback(page, scale));\n }\n if (_enableRegisterUnregisterPage && registerPage) {\n if (!isProvided(pageIndex) || !pageElement.current) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n registerPage(pageIndex, pageElement.current);\n }\n }\n /**\n * Called when a page failed to load\n */\n function onLoadError() {\n if (!pageError) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n warning(false, pageError.toString());\n if (onLoadErrorProps) {\n onLoadErrorProps(pageError);\n }\n }\n function resetPage() {\n pageDispatch({ type: 'RESET' });\n }\n useEffect(resetPage, [pageDispatch, pdf, pageIndex]);\n function loadPage() {\n if (!pdf || !pageNumber) {\n return;\n }\n const cancellable = makeCancellable(pdf.getPage(pageNumber));\n const runningTask = cancellable;\n cancellable.promise\n .then((nextPage) => {\n pageDispatch({ type: 'RESOLVE', value: nextPage });\n })\n .catch((error) => {\n pageDispatch({ type: 'REJECT', error });\n });\n return () => cancelRunningTask(runningTask);\n }\n useEffect(loadPage, [pageDispatch, pdf, pageIndex, pageNumber, registerPage]);\n useEffect(() => {\n if (page === undefined) {\n return;\n }\n if (page === false) {\n onLoadError();\n return;\n }\n onLoadSuccess();\n }, \n // Ommitted callbacks so they are not called every time they change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [page, scale]);\n const childContext = useMemo(() => \n // Technically there cannot be page without pageIndex, pageNumber, rotate and scale, but TypeScript doesn't know that\n page && isProvided(pageIndex) && pageNumber && isProvided(rotate) && isProvided(scale)\n ? {\n _className,\n canvasBackground,\n customTextRenderer,\n devicePixelRatio,\n onGetAnnotationsError: onGetAnnotationsErrorProps,\n onGetAnnotationsSuccess: onGetAnnotationsSuccessProps,\n onGetStructTreeError: onGetStructTreeErrorProps,\n onGetStructTreeSuccess: onGetStructTreeSuccessProps,\n onGetTextError: onGetTextErrorProps,\n onGetTextSuccess: onGetTextSuccessProps,\n onRenderAnnotationLayerError: onRenderAnnotationLayerErrorProps,\n onRenderAnnotationLayerSuccess: onRenderAnnotationLayerSuccessProps,\n onRenderError: onRenderErrorProps,\n onRenderSuccess: onRenderSuccessProps,\n onRenderTextLayerError: onRenderTextLayerErrorProps,\n onRenderTextLayerSuccess: onRenderTextLayerSuccessProps,\n page,\n pageIndex,\n pageNumber,\n renderForms,\n renderTextLayer: renderTextLayerProps,\n rotate,\n scale,\n }\n : null, [\n _className,\n canvasBackground,\n customTextRenderer,\n devicePixelRatio,\n onGetAnnotationsErrorProps,\n onGetAnnotationsSuccessProps,\n onGetStructTreeErrorProps,\n onGetStructTreeSuccessProps,\n onGetTextErrorProps,\n onGetTextSuccessProps,\n onRenderAnnotationLayerErrorProps,\n onRenderAnnotationLayerSuccessProps,\n onRenderErrorProps,\n onRenderSuccessProps,\n onRenderTextLayerErrorProps,\n onRenderTextLayerSuccessProps,\n page,\n pageIndex,\n pageNumber,\n renderForms,\n renderTextLayerProps,\n rotate,\n scale,\n ]);\n const eventProps = useMemo(() => makeEventProps(otherProps, () => page ? (scale ? makePageCallback(page, scale) : undefined) : page), [otherProps, page, scale]);\n const pageKey = `${pageIndex}@${scale}/${rotate}`;\n const pageKeyNoScale = `${pageIndex}/${rotate}`;\n function renderMainLayer() {\n switch (renderMode) {\n case 'custom': {\n invariant(CustomRenderer, `renderMode was set to \"custom\", but no customRenderer was passed.`);\n return React.createElement(CustomRenderer, { key: `${pageKey}_custom` });\n }\n case 'none':\n return null;\n case 'svg':\n return React.createElement(PageSVG, { key: `${pageKeyNoScale}_svg` });\n case 'canvas':\n default:\n return React.createElement(PageCanvas, { key: `${pageKey}_canvas`, canvasRef: canvasRef });\n }\n }\n function renderTextLayer() {\n if (!renderTextLayerProps) {\n return null;\n }\n return React.createElement(TextLayer, { key: `${pageKey}_text` });\n }\n function renderAnnotationLayer() {\n if (!renderAnnotationLayerProps) {\n return null;\n }\n /**\n * As of now, PDF.js 2.0.943 returns warnings on unimplemented annotations in SVG mode.\n * Therefore, as a fallback, we render \"traditional\" AnnotationLayer component.\n */\n return React.createElement(AnnotationLayer, { key: `${pageKey}_annotations` });\n }\n function renderChildren() {\n return (React.createElement(PageContext.Provider, { value: childContext },\n renderMainLayer(),\n renderTextLayer(),\n renderAnnotationLayer(),\n children));\n }\n function renderContent() {\n if (!pageNumber) {\n return React.createElement(Message, { type: \"no-data\" }, typeof noData === 'function' ? noData() : noData);\n }\n if (pdf === null || page === undefined || page === null) {\n return (React.createElement(Message, { type: \"loading\" }, typeof loading === 'function' ? loading() : loading));\n }\n if (pdf === false || page === false) {\n return React.createElement(Message, { type: \"error\" }, typeof error === 'function' ? error() : error);\n }\n return renderChildren();\n }\n return (React.createElement(\"div\", Object.assign({ className: clsx(_className, className), \"data-page-number\": pageNumber, ref: mergeRefs(inputRef, pageElement), style: {\n ['--scale-factor']: `${scale}`,\n backgroundColor: canvasBackground || 'white',\n position: 'relative',\n minWidth: 'min-content',\n minHeight: 'min-content',\n } }, eventProps), renderContent()));\n};\nconst isFunctionOrNode = PropTypes.oneOfType([PropTypes.func, PropTypes.node]);\nPage.propTypes = Object.assign(Object.assign({}, eventProps), { canvasBackground: PropTypes.string, canvasRef: isRef, children: PropTypes.node, className: isClassName, customRenderer: PropTypes.func, customTextRenderer: PropTypes.func, devicePixelRatio: PropTypes.number, error: isFunctionOrNode, height: PropTypes.number, imageResourcesPath: PropTypes.string, inputRef: isRef, loading: isFunctionOrNode, noData: isFunctionOrNode, onGetTextError: PropTypes.func, onGetTextSuccess: PropTypes.func, onLoadError: PropTypes.func, onLoadSuccess: PropTypes.func, onRenderError: PropTypes.func, onRenderSuccess: PropTypes.func, onRenderTextLayerError: PropTypes.func, onRenderTextLayerSuccess: PropTypes.func, pageIndex: isPageIndex, pageNumber: isPageNumber, pdf: isPdf, renderAnnotationLayer: PropTypes.bool, renderForms: PropTypes.bool, renderMode: isRenderMode, renderTextLayer: PropTypes.bool, rotate: isRotate, scale: PropTypes.number, width: PropTypes.number });\nexport default Page;\n","import pdfjs from './pdfjs.js';\nimport Document from './Document.js';\nimport Outline from './Outline.js';\nimport Page from './Page.js';\nimport Thumbnail from './Thumbnail.js';\nimport useDocumentContext from './shared/hooks/useDocumentContext.js';\nimport useOutlineContext from './shared/hooks/useOutlineContext.js';\nimport usePageContext from './shared/hooks/usePageContext.js';\nimport PasswordResponses from './PasswordResponses.js';\nimport { displayWorkerWarning } from './shared/utils.js';\ndisplayWorkerWarning();\npdfjs.GlobalWorkerOptions.workerSrc = 'pdf.worker.js';\nexport { pdfjs, Document, Outline, Page, Thumbnail, useDocumentContext, useOutlineContext, usePageContext, PasswordResponses, };\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { Drawer, Button, Space, Tabs, Radio, Spin } from \"antd\";\nimport { Document, Page, pdfjs } from \"react-pdf\";\nimport {\n FileImageOutlined,\n FilePdfOutlined,\n PictureOutlined,\n} from \"@ant-design/icons\";\nimport type { RadioChangeEvent } from \"antd\";\n\n// PDF.js 워커 및 스타일 설정\npdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.min.js`;\n\n// PDF 스타일 import\nimport \"react-pdf/dist/esm/Page/AnnotationLayer.css\";\nimport \"react-pdf/dist/esm/Page/TextLayer.css\";\n\n// 전역 객체 타입 정의\ndeclare global {\n interface Window {\n cornerstone: any;\n cornerstoneTools: any;\n cornerstoneWADOImageLoader: any;\n dicomParser: any;\n Hammer: any;\n }\n}\n\n// Cornerstone 초기화 함수\nconst initializeCornerstone = async () => {\n try {\n const cs = window.cornerstone;\n const csTools = window.cornerstoneTools;\n const csWADOImageLoader = window.cornerstoneWADOImageLoader;\n const dicomParser = window.dicomParser;\n const Hammer = window.Hammer;\n\n if (!cs || !csTools || !csWADOImageLoader || !dicomParser || !Hammer) {\n throw new Error(\"필요한 라이브러리가 로드되지 않았습니다.\");\n }\n\n // Cornerstone Tools 초기화\n csTools.external.cornerstone = cs;\n csTools.external.Hammer = Hammer;\n\n // WADO Image Loader 초기화\n csWADOImageLoader.external.cornerstone = cs;\n csWADOImageLoader.external.dicomParser = dicomParser;\n\n // Web Worker 설정\n const isInitialized = (window as any).cornerstoneWADOImageLoaderInitialized;\n if (!isInitialized) {\n csWADOImageLoader.webWorkerManager.initialize({\n maxWebWorkers: navigator.hardwareConcurrency || 1,\n startWebWorkersOnDemand: true,\n taskConfiguration: {\n decodeTask: {\n initializeCodecsOnStartup: true,\n usePDFJS: false,\n strict: false,\n },\n },\n });\n (window as any).cornerstoneWADOImageLoaderInitialized = true;\n }\n\n // Cornerstone Tools 초기화\n csTools.init();\n\n console.log(\"Cornerstone 초기화 완료\");\n } catch (error) {\n console.error(\"Cornerstone 초기화 실패:\", error);\n throw error;\n }\n};\n\ninterface FileViewerModalProps {\n visible: boolean;\n onClose: () => void;\n files: {\n dicom: ArrayBuffer[];\n images: ArrayBuffer[];\n pdf: ArrayBuffer[];\n };\n}\n\nexport default function FileViewerModal({\n visible,\n onClose,\n files,\n}: FileViewerModalProps) {\n const [currentDicomIndex, setCurrentDicomIndex] = useState(0);\n const [currentImageIndex, setCurrentImageIndex] = useState(0);\n const dicomContainerRef = useRef(null);\n const [numPages, setNumPages] = useState(1);\n const [pageNumber, setPageNumber] = useState(1);\n const [pdfUrl, setPdfUrl] = useState(null);\n const [error, setError] = useState(null);\n const [activeTab, setActiveTab] = useState(\"dicom\");\n const [dicomViewMode, setDicomViewMode] = useState<\"scroll\" | \"expand\">(\n \"scroll\"\n );\n const [imageViewMode, setImageViewMode] = useState<\"scroll\" | \"expand\">(\n \"scroll\"\n );\n const [selectedPdfIndex, setSelectedPdfIndex] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n const [scrollAccumulator, setScrollAccumulator] = useState(0);\n const SCROLL_THRESHOLD = 100; // 스크롤 임계값 설정\n const [isPdfLoading, setIsPdfLoading] = useState(false);\n\n // 컴포넌트 마운트 시 Cornerstone 초기화\n useEffect(() => {\n let retryCount = 0;\n const maxRetries = 5;\n const retryInterval = 1000; // 1초\n\n const initWithRetry = async () => {\n try {\n await initializeCornerstone();\n } catch (error) {\n console.error(`Cornerstone 초기화 시도 ${retryCount + 1} 실패:`, error);\n if (retryCount < maxRetries) {\n retryCount++;\n setTimeout(initWithRetry, retryInterval);\n } else {\n setError(\n \"Cornerstone 초기화에 실패했습니다. 페이지를 새로고침해주세요.\"\n );\n }\n }\n };\n\n initWithRetry();\n\n return () => {\n if (dicomContainerRef.current) {\n window.cornerstone.disable(dicomContainerRef.current);\n }\n if (pdfUrl) {\n URL.revokeObjectURL(pdfUrl);\n }\n };\n }, []);\n\n // 모달이 열릴 때 실행되는 useEffect\n useEffect(() => {\n if (visible) {\n setIsLoading(true);\n setActiveTab(\"dicom\");\n setCurrentDicomIndex(0);\n\n setTimeout(() => {\n if (dicomContainerRef.current && files.dicom.length > 0) {\n try {\n // Cornerstone element 초기화\n if (!dicomContainerRef.current.dataset.cornerstoneEnabled) {\n window.cornerstone.enable(dicomContainerRef.current);\n }\n\n // DICOM 파일 로드\n const file = files.dicom[0];\n const blob = new Blob([file], { type: \"application/dicom\" });\n const imageId =\n window.cornerstoneWADOImageLoader.wadouri.fileManager.add(blob);\n\n window.cornerstone.loadImage(imageId).then(\n (image: any) => {\n if (dicomContainerRef.current) {\n window.cornerstone.displayImage(\n dicomContainerRef.current,\n image\n );\n\n // 도구 설정\n const WwwcTool = window.cornerstoneTools.WwwcTool;\n const PanTool = window.cornerstoneTools.PanTool;\n const ZoomTool = window.cornerstoneTools.ZoomTool;\n\n window.cornerstoneTools.addTool(WwwcTool);\n window.cornerstoneTools.addTool(PanTool);\n window.cornerstoneTools.addTool(ZoomTool);\n\n window.cornerstoneTools.setToolActive(\"Wwwc\", {\n mouseButtonMask: 1,\n });\n window.cornerstoneTools.setToolActive(\"Pan\", {\n mouseButtonMask: 2,\n });\n window.cornerstoneTools.setToolActive(\"Zoom\", {\n mouseButtonMask: 4,\n });\n }\n setIsLoading(false);\n },\n (error: any) => {\n console.error(\"DICOM 이미지 로드 실패:\", error);\n setError(\"DICOM 이미지를 로드하는데 실패했습니다.\");\n setIsLoading(false);\n }\n );\n } catch (error) {\n console.error(\"DICOM 초기화 실패:\", error);\n setError(\"DICOM 뷰어를 초기화하는데 실패했습니다.\");\n setIsLoading(false);\n }\n } else {\n setIsLoading(false);\n }\n }, 100);\n } else {\n // 모달이 닫힐 때 cleanup\n if (dicomContainerRef.current?.dataset.cornerstoneEnabled) {\n window.cornerstone.disable(dicomContainerRef.current);\n }\n if (pdfUrl) {\n URL.revokeObjectURL(pdfUrl);\n }\n }\n }, [visible, files.dicom]);\n\n // PDF 탭 활성화 시 실행되는 useEffect\n useEffect(() => {\n if (visible && activeTab === \"pdf\" && files.pdf.length > 0) {\n const loadPdf = async () => {\n try {\n setIsPdfLoading(true);\n setError(null);\n const blob = new Blob([files.pdf[selectedPdfIndex || 0]], {\n type: \"application/pdf\",\n });\n const url = URL.createObjectURL(blob);\n setPdfUrl(url);\n } catch (error) {\n const err = error as Error;\n setError(`PDF 파일을 로드하는데 실패했습니다: ${err.message}`);\n } finally {\n setIsPdfLoading(false);\n }\n };\n\n loadPdf();\n\n return () => {\n if (pdfUrl) {\n URL.revokeObjectURL(pdfUrl);\n }\n };\n }\n }, [visible, activeTab, files.pdf, selectedPdfIndex]);\n\n const handlePrevDicom = () => {\n setCurrentDicomIndex((prev) => Math.max(0, prev - 1));\n };\n\n const handleNextDicom = () => {\n setCurrentDicomIndex((prev) => Math.min(files.dicom.length - 1, prev + 1));\n };\n\n const handlePrevPage = () => {\n setPageNumber((prev) => Math.max(1, prev - 1));\n };\n\n const handleNextPage = () => {\n setPageNumber((prev) => Math.min(numPages, prev + 1));\n };\n\n // DICOM 파일 렌더링 함수\n const renderDicomFile = (\n index: number,\n containerRef: React.RefObject\n ) => {\n if (!containerRef.current || !files.dicom[index]) return;\n\n try {\n if (containerRef.current.dataset.cornerstoneEnabled) {\n window.cornerstone.disable(containerRef.current);\n }\n window.cornerstone.enable(containerRef.current);\n\n const file = files.dicom[index];\n const blob = new Blob([file], { type: \"application/dicom\" });\n const imageId =\n window.cornerstoneWADOImageLoader.wadouri.fileManager.add(blob);\n\n window.cornerstone.loadImage(imageId).then(\n (image: any) => {\n if (containerRef.current) {\n window.cornerstone.displayImage(containerRef.current, image);\n }\n },\n (error: Error) => {\n console.error(\"DICOM 이미지 로드 실패:\", error);\n setError(\"DICOM 이미지를 로드하는데 실패했습니다.\");\n }\n );\n } catch (error) {\n console.error(\"DICOM 초기화 실패:\", error);\n setError(\"DICOM 뷰어를 초기화하는데 실패했습니다.\");\n }\n };\n\n // currentDicomIndex가 변경될 때마다 DICOM 이미지를 업데이트하는 useEffect 추가\n useEffect(() => {\n if (\n dicomViewMode === \"scroll\" &&\n dicomContainerRef.current &&\n files.dicom[currentDicomIndex]\n ) {\n renderDicomFile(currentDicomIndex, dicomContainerRef);\n }\n }, [currentDicomIndex, dicomViewMode]);\n\n // 스크롤 이벤트 핸들러 수정\n const handleScroll = (\n e: React.WheelEvent,\n type: \"dicom\" | \"images\"\n ) => {\n e.preventDefault();\n const { deltaY } = e;\n\n setScrollAccumulator((prev) => {\n const newAccumulator = prev + deltaY;\n\n if (Math.abs(newAccumulator) >= SCROLL_THRESHOLD) {\n if (type === \"dicom\") {\n if (\n newAccumulator > 0 &&\n currentDicomIndex < files.dicom.length - 1\n ) {\n setCurrentDicomIndex((prev) => prev + 1);\n } else if (newAccumulator < 0 && currentDicomIndex > 0) {\n setCurrentDicomIndex((prev) => prev - 1);\n }\n } else if (type === \"images\") {\n if (\n newAccumulator > 0 &&\n currentImageIndex < files.images.length - 1\n ) {\n setCurrentImageIndex((prev) => prev + 1);\n } else if (newAccumulator < 0 && currentImageIndex > 0) {\n setCurrentImageIndex((prev) => prev - 1);\n }\n }\n return 0; // 누적값 초기화\n }\n return newAccumulator;\n });\n };\n\n const handleClose = () => {\n // 모든 상태 초기화\n setCurrentDicomIndex(0);\n setCurrentImageIndex(0);\n setNumPages(1);\n setPageNumber(1);\n setPdfUrl(null);\n setError(null);\n setActiveTab(\"dicom\");\n setDicomViewMode(\"scroll\");\n setImageViewMode(\"scroll\");\n setSelectedPdfIndex(null);\n setIsLoading(false);\n setScrollAccumulator(0); // 스크롤 누적값도 초기화\n\n // cleanup\n if (dicomContainerRef.current?.dataset.cornerstoneEnabled) {\n window.cornerstone.disable(dicomContainerRef.current);\n }\n if (pdfUrl) {\n URL.revokeObjectURL(pdfUrl);\n }\n\n onClose();\n };\n\n // DICOM 탭의 내용\n const renderDicomContent = () => (\n
\n \n setDicomViewMode(e.target.value)}\n optionType=\"button\"\n buttonStyle=\"solid\"\n >\n 스크롤로 이동\n 펼쳐보기\n \n \n\n {\n e.preventDefault();\n handleScroll(e, \"dicom\");\n }}\n >\n {dicomViewMode === \"expand\" ? (\n // 펼쳐보기 모드\n {\n const target = e.target as HTMLElement;\n const container = target.closest('[id^=\"dicom-container-\"]');\n if (container) {\n e.stopPropagation();\n e.preventDefault();\n container.parentElement?.parentElement?.scrollBy({\n top: e.deltaY,\n });\n }\n }}\n >\n {Array.from({ length: files.dicom.length }).map((_, index) => (\n \n
DICOM 파일 {index + 1}
\n \n \n
\n
\n ))}\n \n ) : (\n // 스크롤 모드\n
\n
\n DICOM 파일 {currentDicomIndex + 1} / {files.dicom.length}\n
\n \n {\n e.stopPropagation();\n handleScroll(e, \"dicom\");\n }}\n />\n
\n \n )}\n \n \n );\n\n // 이미지 탭의 내용\n const renderImageContent = () => (\n
\n \n setImageViewMode(e.target.value)}\n optionType=\"button\"\n buttonStyle=\"solid\"\n >\n 스크롤로 이동\n 펼쳐보기\n \n \n\n imageViewMode === \"scroll\" && handleScroll(e, \"images\")}\n >\n {imageViewMode === \"expand\" ? (\n // 펼쳐보기 모드\n
\n {Array.from({ length: files.images.length }).map((_, index) => {\n const url = URL.createObjectURL(new Blob([files.images[index]]));\n return (\n \n
이미지 {index + 1}
\n URL.revokeObjectURL(url)}\n />\n
\n );\n })}\n
\n ) : (\n // 스크롤 모드\n
\n {files.images.map((image, index) => {\n if (index !== currentImageIndex) return null;\n const url = URL.createObjectURL(new Blob([image]));\n return (\n
\n
이미지 {index + 1}
\n URL.revokeObjectURL(url)}\n />\n
\n );\n })}\n
\n )}\n \n \n );\n\n const items = [\n {\n key: \"dicom\",\n label: (\n \n \n DICOM ({files.dicom.length})\n \n ),\n children: files.dicom.length > 0 && renderDicomContent(),\n },\n {\n key: \"images\",\n label: (\n \n \n 이미지 ({files.images.length})\n \n ),\n children: files.images.length > 0 && renderImageContent(),\n },\n {\n key: \"pdf\",\n label: (\n \n \n PDF ({files.pdf.length})\n \n ),\n children: files.pdf.length > 0 && (\n
\n {selectedPdfIndex !== null ? (\n \n \n \n {\n setSelectedPdfIndex(null);\n setPdfUrl(null);\n }}\n >\n 목록으로 돌아가기\n \n \n \n {pageNumber} / {numPages}\n \n \n 다음 페이지\n \n \n \n {\n setNumPages(numPages);\n setIsPdfLoading(false);\n }}\n onLoadError={(error: Error) => {\n setError(\"PDF 파일을 로드하는데 실패했습니다.\");\n setIsPdfLoading(false);\n }}\n loading={\n \n \n
\n }\n options={{\n cMapUrl: \"https://cdn.jsdelivr.net/npm/pdfjs-dist/cmaps/\",\n cMapPacked: true,\n standardFontDataUrl:\n \"https://cdn.jsdelivr.net/npm/pdfjs-dist/standard_fonts/\",\n enableXfa: true,\n useSystemFonts: true,\n }}\n >\n {}}\n onRenderError={(error: Error) => {\n setError(\"PDF 페이지를 로드하는데 실패했습니다.\");\n }}\n loading={\n \n \n \n }\n />\n
\n \n \n \n ) : (\n
\n {files.pdf.map((_, index) => (\n {\n setSelectedPdfIndex(index);\n setPageNumber(1);\n if (pdfUrl) {\n URL.revokeObjectURL(pdfUrl);\n }\n const blob = new Blob([files.pdf[index]], {\n type: \"application/pdf\",\n });\n const url = URL.createObjectURL(blob);\n setPdfUrl(url);\n }}\n >\n PDF 파일 {index + 1}\n \n ))}\n
\n )}\n \n ),\n },\n ];\n\n // activeTab이 변경될 때 DICOM 파일을 다시 렌더링하는 useEffect 수정\n useEffect(() => {\n if (activeTab === \"dicom\" && dicomViewMode === \"expand\") {\n // 약간의 딜레이 후 모든 DICOM 파일 다시 렌더링\n setTimeout(() => {\n Array.from({ length: files.dicom.length }).forEach((_, index) => {\n const element = document.getElementById(\n `dicom-container-${index}`\n ) as HTMLDivElement;\n if (element) {\n renderDicomFile(index, { current: element });\n }\n });\n }, 100);\n }\n }, [activeTab, dicomViewMode]);\n\n return (\n \n \n \n {\n setActiveTab(key);\n }}\n items={items}\n style={{ padding: \"16px 0\" }}\n />\n {error && (\n
{error}
\n )}\n
\n \n \n );\n}\n","/*!\n\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\n\n\n(c) 2009-2016 Stuart Knightley \nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,e=0;e>2,s=(3&t)<<4|r>>4,a=1>6:64,o=2>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),a=e(\"./stream/DataLengthProbe\");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),o=n?\"uint8array\":\"array\";function h(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h(\"Deflate\",e)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){\"use strict\";function A(e,t){var r,n=\"\";for(r=0;r>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),c=I.transformTo(\"string\",O.utf8encode(h.name)),d=h.comment,p=I.transformTo(\"string\",s(d)),m=I.transformTo(\"string\",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(n,4)+f+b+p}}var I=e(\"../utils\"),i=e(\"../stream/GenericWorker\"),O=e(\"../utf8\"),B=e(\"../crc32\"),R=e(\"../signature\");function s(e,t,r,n){i.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{\"../utils\":32}],19:[function(e,t,r){\"use strict\";var n=e(\"./Uint8ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){\"use strict\";var n=e(\"./ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../support\"),s=e(\"./ArrayReader\"),a=e(\"./StringReader\"),o=e(\"./NodeBufferReader\"),h=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||i.uint8array?\"nodebuffer\"===t?new o(e):i.uint8array?new h(n.transformTo(\"uint8array\",e)):new s(n.transformTo(\"array\",e)):new a(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../utils\");function s(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../crc32\");function s(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){\"use strict\";function n(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r \"+e:e}},t.exports=n},{}],29:[function(e,t,r){\"use strict\";var h=e(\"../utils\"),i=e(\"./ConvertWorker\"),s=e(\"./GenericWorker\"),u=e(\"../base64\"),n=e(\"../support\"),a=e(\"../external\"),o=null;if(n.nodestream)try{o=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on(\"data\",function(e,t){n.push(e),o&&o(t)}).on(\"error\",function(e){n=[],r(e)}).on(\"end\",function(){try{var e=function(e,t,r){switch(e){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",t),r);case\"base64\":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?\"uint8array\":\"array\",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,a){\"use strict\";var o=e(\"./support\"),h=e(\"./base64\"),r=e(\"./nodejsUtils\"),u=e(\"./external\");function n(e){return e}function l(e,t){for(var r=0;r>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){\"use strict\";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){\"use strict\";var h,c=e(\"../utils/common\"),u=e(\"./trees\"),d=e(\"./adler32\"),p=e(\"./crc32\"),n=e(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&sh&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<>>=y,p-=y),p<15&&(d+=z[n++]<>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<>>=y,p-=y,(y=s-a)>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){e.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l>>=_,l-=_,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l>>=_)),u>>>=3,l-=3}else{for(z=_+7;l>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(hd?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u>=7;n>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":41}],53:[function(e,t,r){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(r,n){\"use strict\";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e}}()?(a=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",d,!1):r.attachEvent(\"onmessage\",d),function(e){r.postMessage(a+e,\"*\")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&\"onreadystatechange\"in l.createElement(\"script\")?(s=l.documentElement,function(e){var t=l.createElement(\"script\");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r((resolve, reject) => {\n if (!window.indexedDB) {\n console.log(\"이 브라우저는 IndexedDB를 지원하지 않습니다.\");\n resolve();\n return;\n }\n\n const request = window.indexedDB.open(this.DB_NAME, this.DB_VERSION);\n\n request.onerror = () => {\n console.error(\"IndexedDB 열기 실패\");\n resolve();\n };\n\n request.onsuccess = (event) => {\n this.db = (event.target as IDBOpenDBRequest).result;\n resolve();\n };\n\n request.onupgradeneeded = (event) => {\n const db = (event.target as IDBOpenDBRequest).result;\n if (!db.objectStoreNames.contains(this.STORE_NAME)) {\n db.createObjectStore(this.STORE_NAME, { keyPath: \"cid\" });\n }\n };\n });\n }\n\n async cacheFile(\n cid: string,\n encryptedData: ArrayBuffer,\n encryptedAesKey: string\n ): Promise {\n if (!this.db) return;\n\n const transaction = this.db.transaction([this.STORE_NAME], \"readwrite\");\n const store = transaction.objectStore(this.STORE_NAME);\n\n const file: CachedFile = {\n cid,\n encryptedData,\n encryptedAesKey,\n timestamp: Date.now(),\n };\n\n return new Promise((resolve, reject) => {\n const request = store.put(file);\n request.onsuccess = () => resolve();\n request.onerror = () => reject(request.error);\n });\n }\n\n async getCachedFile(cid: string): Promise {\n if (!this.db) return null;\n\n const transaction = this.db.transaction([this.STORE_NAME], \"readonly\");\n const store = transaction.objectStore(this.STORE_NAME);\n\n return new Promise((resolve, reject) => {\n const request = store.get(cid);\n request.onsuccess = () => {\n const file = request.result as CachedFile;\n if (!file) {\n resolve(null);\n return;\n }\n\n // 캐시 만료 체크 (7일)\n const now = Date.now();\n const cacheAge = now - file.timestamp;\n const CACHE_DURATION = 7 * 24 * 60 * 60 * 1000; // 7일\n\n if (cacheAge > CACHE_DURATION) {\n // 만료된 캐시 삭제\n store.delete(cid);\n resolve(null);\n return;\n }\n\n resolve(file);\n };\n request.onerror = () => reject(request.error);\n });\n }\n\n async clearCache(): Promise {\n if (!this.db) return;\n\n const transaction = this.db.transaction([this.STORE_NAME], \"readwrite\");\n const store = transaction.objectStore(this.STORE_NAME);\n\n return new Promise((resolve, reject) => {\n const request = store.clear();\n request.onsuccess = () => resolve();\n request.onerror = () => reject(request.error);\n });\n }\n}\n","import { Modal, Descriptions, Avatar, Tag } from \"antd\";\nimport { UserOutlined } from \"@ant-design/icons\";\n\ninterface DoctorInfoModalProps {\n visible: boolean;\n onClose: () => void;\n doctor: {\n name: string;\n email: string;\n phone: string;\n hospital: string;\n department: string;\n } | null;\n}\n\nconst DoctorInfoModal: React.FC = ({\n visible,\n onClose,\n doctor,\n}) => {\n if (!doctor) return null;\n\n return (\n \n }\n style={{\n backgroundColor: \"var(--primary-color)\",\n color: \"#fff\",\n }}\n />\n
\n \n {doctor.name}\n \n 의사\n \n
\n
\n {doctor.hospital} · {doctor.department}\n
\n \n \n }\n open={visible}\n onCancel={onClose}\n footer={null}\n width={500}\n >\n
\n \n {doctor.email}\n {doctor.phone}\n {doctor.hospital}\n \n {doctor.department}\n \n \n
\n \n );\n};\n\nexport default DoctorInfoModal;\n","import {\n Table,\n Select,\n Input,\n Button,\n Space,\n message,\n Modal,\n Timeline,\n Card,\n Tag,\n} from \"antd\";\nimport {\n DownloadOutlined,\n CopyOutlined,\n EyeOutlined,\n SendOutlined,\n HistoryOutlined,\n ArrowRightOutlined,\n} from \"@ant-design/icons\";\nimport type { ColumnsType } from \"antd/es/table\";\nimport { useState, useEffect } from \"react\";\nimport { Actor, HttpAgent } from \"@dfinity/agent\";\nimport { idlFactory } from \"../../../../declarations/mutual-link-backend/mutual-link-backend.did.js\";\nimport { useAuth } from \"@/contexts/AuthContext\";\nimport CryptoJS from \"crypto-js\";\nimport * as eccrypto from \"@toruslabs/eccrypto\";\nimport FileViewerModal from \"@/components/FileViewerModal\";\nimport JSZip from \"jszip\";\nimport { MedicalDataCache } from \"@/utils/indexedDB\";\nimport DoctorInfoModal from \"@/components/DoctorInfoModal\";\nimport { saveReferralMetadata } from \"@/firebase/referral\";\nimport { saveNotificationHistory } from \"@/firebase/notification\";\nimport { createActor } from \"../../utils/actor\";\n\nconst { Search } = Input;\n\ninterface MedicalDataProps {\n type: \"send\" | \"receive\";\n}\n\ninterface BackendMedicalRecord {\n id: bigint;\n date: bigint;\n phone: string;\n patientPhone: string;\n patientName: string;\n title: string;\n description: string;\n fromDoctor: string;\n fromEmail: string;\n fromHospital: string;\n fromDepartment: string;\n fromPhone: string;\n toDoctor: string;\n toEmail: string;\n toHospital: string;\n toDepartment: string;\n toPhone: string;\n cid: string;\n encryptedAesKeyForSender: string;\n encryptedAesKeyForReceiver: string;\n status: string;\n originalRecordId: bigint | null;\n transferredDoctors: string[];\n}\n\ninterface MedicalRecord {\n id: number;\n date: number;\n phone: string;\n patientName: string;\n title: string;\n description: string;\n fromDoctor: string;\n fromEmail: string;\n fromHospital: string;\n fromDepartment: string;\n fromPhone: string;\n toDoctor: string;\n toEmail: string;\n toHospital: string;\n toDepartment: string;\n toPhone: string;\n cid: string;\n status: string;\n encryptedAesKeyForSender: string;\n encryptedAesKeyForReceiver: string;\n originalRecordId: number | null;\n transferredDoctors: string[];\n}\n\ninterface Doctor {\n id: number;\n name: string;\n email: string;\n phone: string;\n hospital: string;\n department: string;\n role: string;\n publicKey: string | null;\n}\n\n// IPFS 게이트웨이 목록\nconst IPFS_GATEWAYS = [\"https://ipfs.infura.io:5001/api/v0/cat?arg=\"];\n\n// IPFS로부터 파일 다운로드\nconst downloadFromIPFS = async (cid: string): Promise => {\n try {\n const response = await fetch(`${IPFS_GATEWAYS[0]}${cid}`, {\n method: \"POST\",\n headers: {\n Authorization:\n \"Basic \" +\n btoa(\n \"52f7d11b90ec45f1ac9912d0fb864695:248a2ce514834460a25058bf8068e740\"\n ),\n },\n });\n\n if (!response.ok) {\n throw new Error(`Network response was not ok: ${response.statusText}`);\n }\n\n // 직접 blob으로 변환\n const blob = await response.blob();\n return blob;\n } catch (error) {\n throw error;\n }\n};\n\n// AES 키 복호화\nconst decryptAesKey = async (encryptedAesKey: string, privateKey: string) => {\n try {\n if (!encryptedAesKey) {\n throw new Error(\"암호화된 AES 키가 없습니다.\");\n }\n\n const encryptedData = JSON.parse(encryptedAesKey);\n const encryptedBuffer = {\n iv: Buffer.from(encryptedData.iv, \"hex\"),\n ephemPublicKey: Buffer.from(encryptedData.ephemPublicKey, \"hex\"),\n ciphertext: Buffer.from(encryptedData.ciphertext, \"hex\"),\n mac: Buffer.from(encryptedData.mac, \"hex\"),\n };\n\n const privateKeyBuffer = Buffer.from(privateKey.replace(\"0x\", \"\"), \"hex\");\n const decryptedBuffer = await eccrypto.decrypt(\n privateKeyBuffer,\n encryptedBuffer\n );\n return decryptedBuffer.toString(\"hex\");\n } catch (error) {\n throw error;\n }\n};\n\nconst MedicalData: React.FC = ({ type }) => {\n const { userInfo } = useAuth();\n const [medicalRecords, setMedicalRecords] = useState([]);\n const [loading, setLoading] = useState(false);\n const [backendActor, setBackendActor] = useState(null);\n const [searchType, setSearchType] = useState<\"patient\" | \"doctor\">(\"patient\");\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [tempSearchQuery, setTempSearchQuery] = useState(\"\");\n const [viewerModalVisible, setViewerModalVisible] = useState(false);\n const [viewerFiles, setViewerFiles] = useState<{\n dicom: ArrayBuffer[];\n images: ArrayBuffer[];\n pdf: ArrayBuffer[];\n }>({\n dicom: [],\n images: [],\n pdf: [],\n });\n const [pagination, setPagination] = useState({\n current: 1,\n pageSize: 10,\n total: 0,\n });\n const [medicalDataCache] = useState(() => new MedicalDataCache());\n const [transferModalVisible, setTransferModalVisible] = useState(false);\n const [selectedRecord, setSelectedRecord] = useState(\n null\n );\n const [doctors, setDoctors] = useState([]);\n const [selectedDoctor, setSelectedDoctor] = useState(null);\n const [doctorPagination, setDoctorPagination] = useState({\n current: 1,\n pageSize: 10,\n total: 0,\n });\n const [doctorSearchType, setDoctorSearchType] = useState<\n \"name\" | \"hospital\" | \"department\"\n >(\"name\");\n const [doctorSearchKeyword, setDoctorSearchKeyword] = useState(\"\");\n const [historyModalVisible, setHistoryModalVisible] = useState(false);\n const [selectedHistories, setSelectedHistories] = useState(\n []\n );\n const [relatedRecords, setRelatedRecords] = useState([]);\n const [selectedDoctorInfo, setSelectedDoctorInfo] = useState<{\n name: string;\n email: string;\n phone: string;\n hospital: string;\n department: string;\n } | null>(null);\n const [doctorInfoModalVisible, setDoctorInfoModalVisible] = useState(false);\n const [noResults, setNoResults] = useState(false);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n // 검색어 입력 핸들러 (디바운스 적용)\n useEffect(() => {\n const timer = setTimeout(() => {\n if (tempSearchQuery !== searchQuery) {\n handleSearch(tempSearchQuery);\n }\n }, 500);\n\n return () => clearTimeout(timer);\n }, [tempSearchQuery]);\n\n const handleSearch = (value: string) => {\n const trimmedValue = value.trim();\n setSearchQuery(trimmedValue);\n setPagination((prev) => ({ ...prev, current: 1 }));\n\n if (trimmedValue === \"\") {\n setNoResults(false);\n return;\n }\n\n if (trimmedValue.length < 2) {\n message.warning(\"검색어는 최소 2자 이상 입력해주세요.\");\n return;\n }\n };\n\n // 검색 결과 없음 상태 업데이트\n useEffect(() => {\n setNoResults(medicalRecords.length === 0 && searchQuery !== \"\");\n }, [medicalRecords, searchQuery]);\n\n // Actor 초기화를 위한 useEffect\n useEffect(() => {\n const initActor = async () => {\n try {\n const actor = await createActor();\n setBackendActor(actor);\n } catch (error) {\n throw error;\n }\n };\n\n initActor();\n }, []);\n\n // 데이터 로딩을 위한 useEffect\n useEffect(() => {\n const fetchMedicalRecords = async () => {\n if (!backendActor || !userInfo?.name) return;\n\n setLoading(true);\n try {\n const offset = BigInt((pagination.current - 1) * pagination.pageSize);\n const limit = BigInt(pagination.pageSize);\n let result;\n\n console.log(\"=== 진료기록 조회 시작 ===\");\n console.log(\"조회 조건:\", {\n 의사이름: userInfo.name,\n 역할: type === \"send\" ? \"sender\" : \"receiver\",\n offset: offset.toString(),\n limit: limit.toString(),\n });\n\n if (type === \"send\") {\n result = await backendActor.getMedicalRecordsByDoctor(\n userInfo.name,\n \"sender\",\n offset,\n limit\n );\n } else {\n result = await backendActor.getMedicalRecordsByDoctor(\n userInfo.name,\n \"receiver\",\n offset,\n limit\n );\n }\n\n console.log(\"백엔드 응답:\", result);\n\n const formattedRecords = (result.items as any[]).map(\n (record: BackendMedicalRecord) => {\n console.log(\"백엔드 레코드 데이터:\", {\n id: record.id.toString(),\n 환자명: record.patientName,\n 환자전화번호: record.patientPhone,\n phone필드: record.phone,\n 송신의사: {\n 이름: record.fromDoctor,\n 전화번호: record.fromPhone,\n },\n 수신의사: {\n 이름: record.toDoctor,\n 전화번호: record.toPhone,\n },\n });\n\n // 상태값 매핑 로직\n let status = record.status;\n // 모든 페이지에서 상태를 한글로 표시\n switch (record.status) {\n case \"PENDING_APPROVAL\":\n case \"PENDING\":\n case \"pending\":\n status = \"승인 대기\";\n break;\n case \"APPROVED\":\n status = \"승인됨\";\n break;\n case \"REJECTED\":\n status = \"거부됨\";\n break;\n case \"TRANSFERRED\":\n case \"transferred\":\n status = \"이관됨\";\n break;\n case \"EXPIRED\":\n status = \"만료됨\";\n break;\n default:\n status = \"승인 대기\"; // 기본값도 승인 대기로 변경\n break;\n }\n\n const formatted = {\n id: Number(record.id.toString()),\n date: (() => {\n const originalDate = record.date.toString();\n const milliseconds = Math.floor(Number(originalDate) / 1000000);\n return milliseconds;\n })(),\n phone: record.patientPhone, // patientPhone 사용\n patientName: record.patientName,\n title: record.title,\n description: record.description,\n fromDoctor: record.fromDoctor,\n fromEmail: record.fromEmail,\n fromHospital: record.fromHospital,\n fromDepartment: record.fromDepartment,\n fromPhone: record.fromPhone,\n toDoctor: record.toDoctor,\n toEmail: record.toEmail,\n toHospital: record.toHospital,\n toDepartment: record.toDepartment,\n toPhone: record.toPhone,\n cid: record.cid,\n status: status,\n encryptedAesKeyForSender: record.encryptedAesKeyForSender,\n encryptedAesKeyForReceiver: record.encryptedAesKeyForReceiver,\n originalRecordId: record.originalRecordId\n ? Number(record.originalRecordId.toString())\n : null,\n transferredDoctors: record.transferredDoctors,\n };\n\n console.log(\"변환된 레코드 데이터:\", {\n id: formatted.id,\n 환자명: formatted.patientName,\n 환자전화번호: formatted.phone,\n 송신의사: {\n 이름: formatted.fromDoctor,\n 전화번호: formatted.fromPhone,\n },\n 수신의사: {\n 이름: formatted.toDoctor,\n 전화번호: formatted.toPhone,\n },\n });\n\n return formatted;\n }\n );\n\n setMedicalRecords(formattedRecords);\n setPagination((prev) => ({\n ...prev,\n total: Number(result.total.toString()),\n }));\n } catch (error) {\n console.error(\"진료기록 조회 중 에러:\", error);\n message.error(\n \"의료기록을 불러올 수 없습니다. 네트워크 연결을 확인해주세요.\"\n );\n } finally {\n setLoading(false);\n }\n };\n\n fetchMedicalRecords();\n }, [\n backendActor,\n userInfo?.name,\n pagination.current,\n pagination.pageSize,\n type,\n ]);\n\n useEffect(() => {\n medicalDataCache.init();\n }, []);\n\n const handleFileView = async (record: MedicalRecord) => {\n // 전체 화면 로딩 표시\n const loadingModal = Modal.info({\n title: \"파일 처리 중...\",\n content: \"진료 데이터를 불러오는 중입니다.\",\n icon: <>,\n okButtonProps: { style: { display: \"none\" } },\n centered: true,\n maskClosable: false,\n });\n\n try {\n if (!userInfo?.privateKey) {\n message.error(\"로그인 정보가 유효하지 않습니다. 다시 로그인해주세요.\");\n return;\n }\n\n // 송신자 또는 수신자의 암호화된 AES 키 선택\n const isSender = userInfo.name === record.fromDoctor;\n const encryptedAesKey = isSender\n ? record.encryptedAesKeyForSender\n : record.encryptedAesKeyForReceiver;\n\n if (!encryptedAesKey) {\n message.error(\n \"의료 데이터를 복호화할 수 없습니다. 관리자에게 문의해주세요.\"\n );\n return;\n }\n\n // 1. 캐시된 파일이 있는지 확인\n const cachedData = await medicalDataCache.getCachedFile(record.cid);\n let encryptedData: ArrayBuffer;\n\n if (cachedData) {\n encryptedData = cachedData.encryptedData;\n } else {\n // 2. IPFS에서 암호화된 파일 다운로드\n const encryptedBlob = await downloadFromIPFS(record.cid);\n encryptedData = await encryptedBlob.arrayBuffer();\n\n // 캐시에 암호화된 상태로 저장\n await medicalDataCache.cacheFile(\n record.cid,\n encryptedData,\n encryptedAesKey\n );\n }\n\n // 3. AES 키 복호화\n const aesKey = await decryptAesKey(encryptedAesKey, userInfo.privateKey);\n\n // 4. 파일 복호화\n const decryptedChunks: Uint8Array[] = [];\n const encryptedDataArray = new Uint8Array(encryptedData);\n let offset = 0;\n\n while (offset < encryptedDataArray.length) {\n // 청크 크기 읽기 (4바이트)\n const chunkSize =\n (encryptedDataArray[offset] << 24) |\n (encryptedDataArray[offset + 1] << 16) |\n (encryptedDataArray[offset + 2] << 8) |\n encryptedDataArray[offset + 3];\n offset += 4;\n\n // 청크 데이터 읽기\n const encryptedChunk = encryptedDataArray.slice(\n offset,\n offset + chunkSize\n );\n offset += chunkSize;\n\n // 바이너리 데이터를 Base64로 변환\n let binary = \"\";\n for (let i = 0; i < encryptedChunk.length; i++) {\n binary += String.fromCharCode(encryptedChunk[i]);\n }\n const encryptedBase64 = btoa(binary);\n\n // 복호화\n const decryptedWordArray = CryptoJS.AES.decrypt(\n encryptedBase64,\n aesKey\n );\n\n // WordArray를 Uint8Array로 변환\n const words = decryptedWordArray.words;\n const sigBytes = decryptedWordArray.sigBytes;\n const u8 = new Uint8Array(sigBytes);\n let b = 0;\n for (let i = 0; i < sigBytes; i++) {\n const byte = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n u8[b++] = byte;\n }\n\n decryptedChunks.push(u8);\n }\n\n // 모든 청크를 하나의 Uint8Array로 합치기\n const totalLength = decryptedChunks.reduce(\n (acc, chunk) => acc + chunk.length,\n 0\n );\n const decryptedArrayBuffer = new Uint8Array(totalLength);\n let writeOffset = 0;\n for (const chunk of decryptedChunks) {\n decryptedArrayBuffer.set(chunk, writeOffset);\n writeOffset += chunk.length;\n }\n\n // 5. ZIP 파일 처리\n const zip = await JSZip.loadAsync(decryptedArrayBuffer);\n const files = {\n dicom: [] as ArrayBuffer[],\n images: [] as ArrayBuffer[],\n pdf: [] as ArrayBuffer[],\n };\n\n // 각 파일 처리\n for (const [filename, zipEntry] of Object.entries(zip.files)) {\n if (\n zipEntry.dir ||\n filename.startsWith(\"__MACOSX/\") ||\n filename.includes(\"/._\")\n ) {\n continue;\n }\n\n const fileData = await zipEntry.async(\"arraybuffer\");\n const extension = filename.split(\".\").pop()?.toLowerCase();\n\n if (extension === \"dcm\") {\n files.dicom.push(fileData);\n } else if ([\"jpg\", \"jpeg\", \"png\", \"gif\"].includes(extension || \"\")) {\n files.images.push(fileData);\n } else if (extension === \"pdf\") {\n files.pdf.push(fileData);\n }\n }\n\n setViewerFiles(files);\n setViewerModalVisible(true);\n } catch (error) {\n throw error;\n } finally {\n loadingModal.destroy();\n }\n };\n\n // 의사 목록 조회\n const fetchDoctors = async (page: number = 1, pageSize: number = 10) => {\n try {\n if (!backendActor) {\n message.error(\n \"시스템에 연결할 수 없습니다. 잠시 후 다시 시도해주세요.\"\n );\n return;\n }\n const offset = (page - 1) * pageSize;\n const result = await backendActor.getPagedDoctors(offset, pageSize);\n let formattedDoctors = result.items\n .map((doctor: any) => {\n // publicKey가 배열이면 첫 번째 요소를 사용, 아니면 그대로 사용\n const publicKey = Array.isArray(doctor.publicKey)\n ? doctor.publicKey[0]\n : doctor.publicKey;\n\n return {\n id: Number(doctor.id),\n name: doctor.name,\n email: doctor.email,\n phone: doctor.phone,\n hospital: doctor.hospital,\n department: doctor.department,\n role: doctor.role,\n publicKey: publicKey || null,\n };\n })\n // 현재 사용자 제외\n .filter((doctor: Doctor) => doctor.email !== userInfo?.email);\n\n // 검색어가 있는 경우 필터링\n if (doctorSearchKeyword) {\n const keyword = doctorSearchKeyword.toLowerCase();\n formattedDoctors = formattedDoctors.filter((doctor: Doctor) => {\n switch (doctorSearchType) {\n case \"name\":\n return doctor.name.toLowerCase().includes(keyword);\n case \"hospital\":\n return doctor.hospital.toLowerCase().includes(keyword);\n case \"department\":\n return doctor.department.toLowerCase().includes(keyword);\n default:\n return true;\n }\n });\n }\n\n setDoctors(formattedDoctors);\n setDoctorPagination((prev) => ({\n ...prev,\n current: page,\n total: formattedDoctors.length,\n }));\n } catch (error) {\n message.error(\"의사 목록을 불러오는데 실패했습니다.\");\n }\n };\n\n // 이관 모달 열기\n const handleTransferClick = (record: MedicalRecord) => {\n setSelectedRecord(record);\n setTransferModalVisible(true);\n fetchDoctors(1, doctorPagination.pageSize);\n };\n\n // 이관 히스토리 조회\n const handleHistoryClick = async (recordId: number) => {\n try {\n const relatedRecords = await backendActor.getTransferHistory(recordId);\n\n const formattedRecords = relatedRecords.map((record: any) => ({\n id: Number(record.id.toString()),\n fromDoctor: record.fromDoctor,\n fromEmail: record.fromEmail,\n fromHospital: record.fromHospital || \"\",\n fromDepartment: record.fromDepartment || \"\",\n fromPhone: record.fromPhone || \"\",\n toDoctor: record.toDoctor,\n toEmail: record.toEmail,\n toHospital: record.toHospital || \"\",\n toDepartment: record.toDepartment || \"\",\n toPhone: record.toPhone || \"\",\n date:\n typeof record.date === \"bigint\"\n ? Number(record.date.toString()) / 1000000\n : Number(record.date) / 1000000,\n title: record.title || \"\",\n description: record.description || \"\",\n patientName: record.patientName || \"\",\n status: record.status || \"\",\n }));\n\n setSelectedHistories(formattedRecords);\n setHistoryModalVisible(true);\n } catch (error) {\n message.error(\"이관 히스토리를 불러오는데 실패했습니다.\");\n }\n };\n\n // 이관 실행\n const handleTransfer = async () => {\n if (!backendActor) {\n message.error(\"시스템에 연결할 수 없습니다. 잠시 후 다시 시도해주세요.\");\n return;\n }\n if (!userInfo) {\n message.error(\"로그인이 필요합니다.\");\n return;\n }\n if (!selectedRecord) {\n message.error(\"이관할 진료 기록을 선택해주세요.\");\n return;\n }\n if (selectedRecord.status === \"transferred\") {\n message.error(\"이미 이관된 진료 기록입니다.\");\n return;\n }\n if (!selectedDoctor) {\n message.error(\"이관 받을 의사를 선택해주세요.\");\n return;\n }\n if (!selectedDoctor.publicKey) {\n message.error(\"의사 인증 정보가 없습니다. 관리자에게 문의해주세요.\");\n return;\n }\n\n try {\n setLoading(true);\n setIsSubmitting(true);\n\n console.log(\"=== 진료의뢰 시작 ===\");\n console.log(\"선택된 진료기록:\", {\n id: selectedRecord.id,\n 환자명: selectedRecord.patientName,\n 환자전화번호: selectedRecord.phone,\n 송신의사: {\n 이름: userInfo.name,\n 이메일: userInfo.email,\n 전화번호: selectedRecord.fromPhone,\n },\n 수신의사: {\n 이름: selectedDoctor.name,\n 이메일: selectedDoctor.email,\n 전화번호: selectedDoctor.phone,\n },\n });\n\n // 1. 현재 사용자의 AES 키 복호화\n const decryptedAesKey = await decryptAesKey(\n type === \"send\"\n ? selectedRecord.encryptedAesKeyForSender\n : selectedRecord.encryptedAesKeyForReceiver,\n userInfo?.privateKey || \"\"\n );\n\n // 2. 새로운 의사들의 공개키로 AES 키 암호화\n if (!userInfo.publicKey) {\n message.error(\"현재 사용자의 공개키가 없습니다.\");\n return;\n }\n\n let senderPublicKeyHex = userInfo.publicKey;\n if (senderPublicKeyHex.startsWith(\"0x\")) {\n senderPublicKeyHex = senderPublicKeyHex.slice(2);\n }\n\n let receiverPublicKeyHex = selectedDoctor.publicKey;\n if (receiverPublicKeyHex.startsWith(\"0x\")) {\n receiverPublicKeyHex = receiverPublicKeyHex.slice(2);\n }\n\n if (!receiverPublicKeyHex || !senderPublicKeyHex) {\n message.error(\"공개키가 올바르지 않습니다.\");\n return;\n }\n\n // Receiver용 AES 키 암호화\n const encryptedAesKeyForReceiver = await eccrypto.encrypt(\n Buffer.from(receiverPublicKeyHex, \"hex\"),\n Buffer.from(decryptedAesKey, \"hex\")\n );\n const encryptedAesKeyForReceiverString = JSON.stringify({\n iv: encryptedAesKeyForReceiver.iv.toString(\"hex\"),\n ephemPublicKey:\n encryptedAesKeyForReceiver.ephemPublicKey.toString(\"hex\"),\n ciphertext: encryptedAesKeyForReceiver.ciphertext.toString(\"hex\"),\n mac: encryptedAesKeyForReceiver.mac.toString(\"hex\"),\n });\n\n // Sender용 AES 키 암호화\n const encryptedAesKeyForSender = await eccrypto.encrypt(\n Buffer.from(senderPublicKeyHex, \"hex\"),\n Buffer.from(decryptedAesKey, \"hex\")\n );\n const encryptedAesKeyForSenderString = JSON.stringify({\n iv: encryptedAesKeyForSender.iv.toString(\"hex\"),\n ephemPublicKey: encryptedAesKeyForSender.ephemPublicKey.toString(\"hex\"),\n ciphertext: encryptedAesKeyForSender.ciphertext.toString(\"hex\"),\n mac: encryptedAesKeyForSender.mac.toString(\"hex\"),\n });\n\n // 3. 이관 실행\n const result = await backendActor.transferMedicalRecord(\n selectedRecord.id,\n userInfo.email,\n selectedDoctor.email,\n encryptedAesKeyForSenderString,\n encryptedAesKeyForReceiverString\n );\n\n if (\"ok\" in result) {\n // Firebase에 메타데이터 저장\n try {\n await saveReferralMetadata({\n referralId: result.ok.id\n ? result.ok.id.toString()\n : result.ok.toString(),\n fromEmail: userInfo?.email || \"\", // 송신자 이메일\n toEmail: selectedDoctor.email, // 수신자 이메일\n doctorName: selectedDoctor.name,\n hospitalName: selectedDoctor.hospital,\n department: selectedDoctor.department,\n patientName: selectedRecord.patientName,\n patientPhone: selectedRecord.phone,\n status: \"PENDING\",\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n });\n\n // SMS 전송 로직 추가\n console.log(\"=== 진료의뢰 SMS 발송 디버깅 ===\");\n console.log(\"선택된 진료기록:\", {\n 환자명: selectedRecord.patientName,\n 환자전화번호: selectedRecord.phone,\n 송신의사: {\n 이름: userInfo?.name,\n 전화번호: selectedRecord.fromPhone,\n },\n 수신의사: {\n 이름: selectedDoctor.name,\n 전화번호: selectedDoctor.phone,\n },\n });\n\n const smsMessage = `${userInfo?.name}님이 전송한 [${\n selectedRecord.patientName\n }]의료정보 도착\\nhttps://mutual-link-d70e6.web.app/?referralId=${\n result.ok.id ? result.ok.id.toString() : result.ok.toString()\n }`;\n\n // 환자의 전화번호에서 하이픈 제거\n const phoneNumber = selectedRecord.phone.replace(/-/g, \"\");\n console.log(\"SMS 발송 정보:\", {\n 수신번호: phoneNumber,\n 메시지: smsMessage,\n });\n\n const response = await fetch(\n \"https://8oxqti6xl1.execute-api.ap-northeast-2.amazonaws.com/default/sms\",\n {\n method: \"POST\",\n mode: \"no-cors\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n message: smsMessage,\n phoneNumber: phoneNumber,\n }),\n }\n );\n console.log(\"SMS 전송 응답:\", response);\n\n message.success(\n \"진료의뢰가 요청되었습니다. 환자의 승인을 기다립니다.\"\n );\n setTransferModalVisible(false);\n setSelectedDoctor(null);\n setSelectedRecord(null);\n\n // 목록 새로고침\n const offset = (pagination.current - 1) * pagination.pageSize;\n const recordResult = await backendActor.getMedicalRecordsByDoctor(\n userInfo.name,\n type === \"send\" ? \"sender\" : \"receiver\",\n offset,\n pagination.pageSize\n );\n\n const formattedRecords = recordResult.items.map((record: any) => {\n // 상태값 매핑 로직\n let status = record.status;\n switch (record.status) {\n case \"PENDING_APPROVAL\":\n case \"PENDING\":\n case \"pending\":\n status = \"승인 대기\";\n break;\n case \"APPROVED\":\n status = \"승인됨\";\n break;\n case \"REJECTED\":\n status = \"거부됨\";\n break;\n case \"TRANSFERRED\":\n case \"transferred\":\n status = \"이관됨\";\n break;\n case \"EXPIRED\":\n status = \"만료됨\";\n break;\n default:\n status = \"승인 대기\";\n break;\n }\n\n return {\n id: Number(record.id.toString()),\n date: Number(record.date.toString()) / 1000000,\n phone: record.phone,\n patientName: record.patientName,\n title: record.title,\n description: record.description,\n fromDoctor: record.fromDoctor,\n fromEmail: record.fromEmail,\n fromHospital: record.fromHospital,\n fromDepartment: record.fromDepartment,\n fromPhone: record.fromPhone,\n toDoctor: record.toDoctor,\n toEmail: record.toEmail,\n toHospital: record.toHospital,\n toDepartment: record.toDepartment,\n toPhone: record.toPhone,\n cid: record.cid,\n status: status,\n encryptedAesKeyForSender: record.encryptedAesKeyForSender,\n encryptedAesKeyForReceiver: record.encryptedAesKeyForReceiver,\n originalRecordId: record.originalRecordId\n ? Number(record.originalRecordId.toString())\n : null,\n transferredDoctors: record.transferredDoctors,\n };\n });\n\n setMedicalRecords(formattedRecords);\n } catch (error) {\n throw error;\n }\n } else {\n message.error(result.err);\n }\n } catch (error) {\n message.error(\n \"진료 기록 이관 중 문제가 발생했습니다. 잠시 후 다시 시도해주세요.\"\n );\n } finally {\n setLoading(false);\n setIsSubmitting(false);\n }\n };\n\n const handleDoctorClick = (record: MedicalRecord, isFromDoctor: boolean) => {\n setSelectedDoctorInfo({\n name: isFromDoctor ? record.fromDoctor : record.toDoctor,\n email: isFromDoctor ? record.fromEmail : record.toEmail,\n phone: isFromDoctor ? record.fromPhone : record.toPhone,\n hospital: isFromDoctor ? record.fromHospital : record.toHospital,\n department: isFromDoctor ? record.fromDepartment : record.toDepartment,\n });\n setDoctorInfoModalVisible(true);\n };\n\n // 진료 의뢰 버튼 표시 여부 결정 함수\n const showTransferButton = (record: MedicalRecord) => {\n // 1. 수신 페이지에서만 표시\n if (type !== \"receive\") return false;\n // 2. 승인됨 상태인 경우만 표시\n if (record.status !== \"승인됨\") return false;\n // 3. 현재 사용자가 수신자인 경우만 표시\n if (record.toDoctor !== userInfo?.name) return false;\n // 4. 현재 사용자가 송신자가 아닌 경우만 표시\n if (record.fromDoctor === userInfo?.name) return false;\n return true;\n };\n\n // 휴대폰 번호 포맷팅 함수\n const formatPhoneNumber = (phone: string) => {\n const cleaned = phone.replace(/\\D/g, \"\");\n if (cleaned.length === 11) {\n return `${cleaned.slice(0, 3)}-${cleaned.slice(3, 7)}-${cleaned.slice(\n 7\n )}`;\n }\n if (cleaned.length === 10) {\n return `${cleaned.slice(0, 3)}-${cleaned.slice(3, 6)}-${cleaned.slice(\n 6\n )}`;\n }\n return phone;\n };\n\n const columns: ColumnsType = [\n {\n title: \"No\",\n dataIndex: \"id\",\n key: \"id\",\n width: 70,\n },\n {\n title: \"생성일\",\n dataIndex: \"date\",\n key: \"date\",\n render: (_: unknown, record: MedicalRecord) => {\n const date = new Date(Number(record.date));\n return date.toLocaleString(\"ko-KR\", {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n hour12: false,\n });\n },\n },\n {\n title: \"휴대폰\",\n dataIndex: \"phone\",\n key: \"phone\",\n width: 130,\n render: (phone: string) => formatPhoneNumber(phone),\n },\n {\n title: \"환자명\",\n dataIndex: \"patientName\",\n key: \"patientName\",\n width: 100,\n },\n { title: \"제목\", dataIndex: \"title\", key: \"title\" },\n {\n title: \"송신자\",\n key: \"sender\",\n width: 200,\n render: (_: unknown, record: MedicalRecord) => (\n handleDoctorClick(record, true)}\n >\n {record.fromDoctor}\n \n ),\n hidden: type === \"send\",\n },\n {\n title: \"수신자\",\n key: \"receiver\",\n width: 200,\n render: (_: unknown, record: MedicalRecord) => (\n handleDoctorClick(record, false)}\n >\n {record.toDoctor}\n \n ),\n hidden: type === \"receive\",\n },\n {\n title: \"CID\",\n dataIndex: \"cid\",\n key: \"cid\",\n width: 150,\n render: (cid: string) => (\n {\n navigator.clipboard.writeText(cid);\n message.success(\"CID가 클립보드에 복사되었습니다.\");\n }}\n title={cid}\n >\n {cid.substring(0, 15)}...\n \n \n ),\n },\n {\n title: \"상태\",\n dataIndex: \"status\",\n key: \"status\",\n width: 100,\n render: (status: string) => {\n const statusConfig: Record = {\n \"승인 대기\": {\n color: \"orange\",\n text: \"승인 대기\",\n },\n 거부됨: {\n color: \"red\",\n text: \"거부됨\",\n },\n 승인됨: {\n color: \"green\",\n text: \"승인됨\",\n },\n 이관됨: {\n color: \"blue\",\n text: \"이관됨\",\n },\n 만료됨: {\n color: \"default\",\n text: \"만료됨\",\n },\n };\n\n const config = statusConfig[status] || {\n color: \"default\",\n text: status,\n };\n return (\n \n {config.text}\n \n );\n },\n },\n {\n title: \"작업\",\n key: \"action\",\n render: (_: unknown, record: MedicalRecord) => (\n \n }\n onClick={() => handleFileView(record)}\n >\n 보기\n \n }\n onClick={() => handleHistoryClick(record.id)}\n >\n 진료이력\n \n {showTransferButton(record) && (\n }\n onClick={() => handleTransferClick(record)}\n >\n 진료의뢰\n \n )}\n \n ),\n },\n ].filter((column) => !column.hidden);\n\n return (\n <>\n
\n
\n \n setTempSearchQuery(e.target.value)}\n style={{ width: 400, marginLeft: 8 }}\n allowClear\n />\n
\n\n {noResults ? (\n \n
\n 검색 결과가 없습니다\n
\n
\n 다른 검색어로 다시 시도해보세요\n
\n
\n ) : (\n ({\n ...column,\n align:\n column.key === \"action\" || column.key === \"status\"\n ? \"center\"\n : \"left\",\n ellipsis: column.key !== \"action\",\n render:\n column.key === \"cid\"\n ? (cid: string) => (\n {\n navigator.clipboard.writeText(cid);\n message.success(\"CID가 클립보드에 복사되었습니다.\");\n }}\n title={cid}\n >\n {cid.substring(0, 15)}...\n \n \n )\n : column.render,\n }))}\n dataSource={medicalRecords}\n rowKey=\"id\"\n loading={loading}\n pagination={{\n ...pagination,\n showSizeChanger: true,\n showTotal: (total, range) =>\n `전체 ${total}개 중 ${range[0]}-${range[1]}`,\n onChange: (page, pageSize) => {\n setPagination((prev) => ({\n ...prev,\n current: page,\n pageSize: pageSize,\n }));\n },\n }}\n scroll={{ x: \"max-content\" }}\n />\n )}\n \n {\n setViewerModalVisible(false);\n // 메모리 정리\n setViewerFiles({ dicom: [], images: [], pdf: [] });\n }}\n files={viewerFiles}\n />\n {\n if (loading || isSubmitting) return; // 로딩 중이거나 제출 중일 때는 취소 불가능\n setTransferModalVisible(false);\n setSelectedDoctor(null);\n setSelectedRecord(null);\n setDoctorPagination((prev) => ({ ...prev, current: 1 }));\n setDoctorSearchKeyword(\"\"); // 검색어 초기화\n }}\n confirmLoading={loading}\n maskClosable={!loading && !isSubmitting} // 로딩 중이거나 제출 중일 때는 마스크 클릭으로 닫기 불가능\n closable={!loading && !isSubmitting} // 로딩 중이거나 제출 중일 때는 X 버튼으로 닫기 불가능\n keyboard={!loading && !isSubmitting} // 로딩 중이거나 제출 중일 때는 ESC로 닫기 불가능\n footer={\n
\n {\n if (loading || isSubmitting) return;\n setTransferModalVisible(false);\n setSelectedDoctor(null);\n setSelectedRecord(null);\n setDoctorPagination((prev) => ({ ...prev, current: 1 }));\n setDoctorSearchKeyword(\"\");\n }}\n style={{ marginRight: 8 }}\n disabled={loading || isSubmitting}\n >\n 취소\n \n \n {loading || isSubmitting ? \"등록 중...\" : \"등록\"}\n \n
\n }\n >\n
\n

의뢰할 의사 선택

\n
\n \n setDoctorSearchKeyword(e.target.value)}\n onSearch={() => fetchDoctors(1, doctorPagination.pageSize)}\n style={{ flex: 1 }}\n allowClear\n />\n
\n {\n const doctor = doctors.find((d) => d.id === value);\n if (doctor && !doctor.publicKey) {\n message.warning(\n \"선택한 의사의 공개키가 등록되어 있지 않습니다.\"\n );\n return;\n }\n setSelectedDoctor(doctor || null);\n }}\n value={selectedDoctor?.id}\n options={doctors\n .filter((doctor) => doctor.publicKey) // 공개키가 있는 의사만 표시\n .map((doctor) => ({\n value: doctor.id,\n label: `${doctor.name} (${doctor.hospital} ${doctor.department})`,\n }))}\n notFoundContent={\n doctors.length === 0\n ? \"검색 결과가 없습니다\"\n : \"공개키가 등록된 의사가 없습니다\"\n }\n />\n
\n {\n setDoctorPagination((prev) => ({\n ...prev,\n pageSize: value,\n current: 1,\n }));\n fetchDoctors(1, value);\n }}\n options={[\n { value: 10, label: \"10개씩 보기\" },\n { value: 20, label: \"20개씩 보기\" },\n { value: 50, label: \"50개씩 보기\" },\n ]}\n style={{ width: 120, marginRight: 8 }}\n />\n \n \n fetchDoctors(\n doctorPagination.current - 1,\n doctorPagination.pageSize\n )\n }\n >\n 이전\n \n =\n doctorPagination.total\n }\n onClick={() =>\n fetchDoctors(\n doctorPagination.current + 1,\n doctorPagination.pageSize\n )\n }\n >\n 다음\n \n \n
\n \n {`전체 ${doctorPagination.total}명 중 ${\n (doctorPagination.current - 1) * doctorPagination.pageSize + 1\n }-${Math.min(\n doctorPagination.current * doctorPagination.pageSize,\n doctorPagination.total\n )}명`}\n
\n \n \n \n \n 진료 이력 조회\n \n \n }\n open={historyModalVisible}\n onCancel={() => {\n setHistoryModalVisible(false);\n setSelectedHistories([]);\n setDoctors([]);\n }}\n footer={null}\n width={900}\n style={{ top: 20 }}\n >\n ({\n label: (\n \n {new Date(Number(history.date)).toLocaleString(\"ko-KR\", {\n year: \"2-digit\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n hour12: false,\n })}\n \n ),\n children: (\n \n
\n \n \n {index === 0 ? \"최초 전송\" : \"이관됨\"}\n \n
\n \n \n \n 송신자\n \n \n {history.fromDoctor}\n \n
\n {history.fromHospital} {history.fromDepartment}\n
\n \n
{history.fromEmail}
\n
{history.fromPhone}
\n \n \n \n \n \n \n \n 수신자\n \n \n {history.toDoctor}\n \n
\n {history.toHospital} {history.toDepartment}\n
\n \n
{history.toEmail}
\n
{history.toPhone}
\n \n \n \n \n \n ),\n color: index === 0 ? \"var(--primary-color)\" : \"#666\",\n }))}\n />\n \n {\n setDoctorInfoModalVisible(false);\n setSelectedDoctorInfo(null);\n }}\n doctor={selectedDoctorInfo}\n />\n \n );\n};\n\nexport default MedicalData;\n","import { useNavigate } from \"react-router-dom\";\nimport {\n Layout,\n Typography,\n Button,\n Card,\n Space,\n message,\n Spin,\n App,\n} from \"antd\";\nimport { GoogleOutlined, LockOutlined } from \"@ant-design/icons\";\nimport { useAuth } from \"@/contexts/AuthContext\";\nimport { useWeb3Auth } from \"@/contexts/Web3AuthContext\";\nimport { useEffect, useState } from \"react\";\nimport { createActor } from \"../../utils/actor\";\nimport type { _SERVICE } from \"../../../../declarations/mutual-link-backend/mutual-link-backend.did\";\nimport styles from \"./Login.module.css\";\n\nconst { Content } = Layout;\nconst { Title, Text } = Typography;\n\nconst CANISTER_ID =\n process.env.VITE_CANISTER_ID_MUTUAL_LINK_BACKEND ||\n \"bkyz2-fmaaa-aaaaa-qaaaq-cai\";\n\nconst Login = () => {\n const { login, isLoggedIn } = useAuth();\n const { loginWithGoogle, logout } = useWeb3Auth();\n const navigate = useNavigate();\n const [isLoading, setIsLoading] = useState(false);\n const { message: antMessage } = App.useApp();\n\n useEffect(() => {\n if (isLoggedIn) {\n navigate(\"/home/doctor-list\");\n }\n }, [isLoggedIn]);\n\n const handleGoogleLogin = async () => {\n if (isLoading) return;\n\n setIsLoading(true);\n try {\n const result = await loginWithGoogle();\n\n if (result.connected && result.publicKey && result.email) {\n try {\n const actor = await createActor();\n\n // 먼저 사용자 존재 여부 확인\n const doctorResult = await actor.getDoctorByEmail(result.email);\n\n if (!doctorResult.length) {\n antMessage.error(\n \"등록되지 않은 의사 계정입니다. 병원 관리자에게 계정 등록을 요청해주세요.\"\n );\n await logout();\n return;\n }\n\n const doctor = doctorResult[0];\n const userData = {\n hospital: doctor.hospital,\n department: doctor.department,\n name: doctor.name,\n role: doctor.role,\n email: doctor.email,\n phone: doctor.phone,\n publicKey: result.publicKey || undefined,\n privateKey: result.privateKey || undefined,\n id: doctor.id.toString(),\n };\n\n // public key가 이미 등록되어 있는지 확인\n if (doctor.publicKey.length > 0) {\n // 이미 등록된 public key가 현재 key와 같은지 확인\n if (doctor.publicKey[0] === result.publicKey) {\n login(userData);\n navigate(\"/home/doctor-list\");\n return;\n } else {\n antMessage.error(\n \"이미 다른 기기에서 로그인된 계정입니다. 기존 기기에서 로그아웃 후 다시 시도하시거나 병원 관리자에게 문의해주세요.\"\n );\n await logout();\n return;\n }\n }\n\n // public key가 없는 경우에만 업데이트 진행\n const updateResult = await actor.updateDoctorPublicKey(\n userData.email,\n result.publicKey\n );\n\n if (\"ok\" in updateResult) {\n login(userData);\n navigate(\"/home/doctor-list\");\n } else {\n antMessage.error(updateResult.err);\n await logout();\n }\n } catch (error) {\n antMessage.error(\"로그인에 실패했습니다. 잠시 후 다시 시도해주세요.\");\n await logout();\n }\n } else {\n antMessage.error(\n \"구글 계정 정보를 가져올 수 없습니다. 다시 시도해주세요.\"\n );\n await logout();\n }\n } finally {\n setIsLoading(false);\n }\n };\n\n return (\n \n \n \n \n
\n \n \n Mutual-Link\n \n \n 의료 데이터 공유를 위한 안전한 플랫폼\n \n
\n\n }\n onClick={handleGoogleLogin}\n size=\"large\"\n loading={isLoading}\n disabled={isLoading}\n style={{\n width: \"100%\",\n height: \"48px\",\n borderRadius: \"8px\",\n fontSize: \"16px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"8px\",\n }}\n >\n {isLoading ? \"로그인 중...\" : \"Google 계정으로 로그인\"}\n \n \n \n \n
\n );\n};\n\nexport default Login;\n","import { Navigate, Outlet } from \"react-router-dom\";\nimport { useAuth } from \"@/contexts/AuthContext\";\nimport { useWeb3Auth } from \"@/contexts/Web3AuthContext\";\n\nconst PrivateRoute = () => {\n const { isLoggedIn } = useAuth();\n const { web3auth } = useWeb3Auth();\n\n if (!web3auth) {\n return
초기화 중...
; // 또는 로딩 스피너 컴포넌트\n }\n\n return isLoggedIn ? : ;\n};\n\nexport default PrivateRoute;\n","import {\n Table,\n Button,\n Modal,\n Form,\n Input,\n Select,\n Space,\n message,\n Tooltip,\n} from \"antd\";\nimport { useState, useEffect } from \"react\";\nimport type { ColumnsType } from \"antd/es/table\";\nimport { Actor, HttpAgent } from \"@dfinity/agent\";\nimport { Principal } from \"@dfinity/principal\";\nimport { idlFactory } from \"../../../../declarations/mutual-link-backend/mutual-link-backend.did.js\";\nimport {\n CopyOutlined,\n UserAddOutlined,\n EditOutlined,\n DeleteOutlined,\n} from \"@ant-design/icons\";\nimport { createActor } from \"../../utils/actor\";\n\ninterface Doctor {\n id: bigint;\n name: string;\n email: string;\n phone: string;\n hospital: string;\n department: string;\n role: string;\n publicKey: string[];\n}\n\ninterface FormattedDoctor {\n key: string;\n id: number;\n name: string;\n email: string;\n phone: string;\n hospital: string;\n department: string;\n role: string;\n publicKey: string | undefined;\n}\n\ntype GetAllDoctorsResponse =\n | {\n ok: Doctor[];\n }\n | {\n err: string;\n };\n\nconst UserManagement = () => {\n const [users, setUsers] = useState([]);\n const [isModalVisible, setIsModalVisible] = useState(false);\n const [form] = Form.useForm();\n const [backendActor, setBackendActor] = useState(null);\n const [loading, setLoading] = useState(false);\n const [editingUser, setEditingUser] = useState(null);\n const [pagination, setPagination] = useState({ current: 1, pageSize: 10 });\n\n useEffect(() => {\n const initActor = async () => {\n try {\n const actor = await createActor();\n setBackendActor(actor);\n return actor;\n } catch (error) {\n throw error;\n }\n };\n\n const fetchDoctors = async () => {\n setLoading(true);\n try {\n const actor = await initActor();\n if (!actor) return;\n\n const offset = BigInt((pagination.current - 1) * pagination.pageSize);\n const limit = BigInt(pagination.pageSize);\n const result = await actor.getPagedDoctors(offset, limit);\n\n const formattedUsers = result.items.map((doctor: Doctor) => ({\n key: doctor.id.toString(),\n id: Number(doctor.id.toString()),\n name: doctor.name,\n email: doctor.email,\n phone: doctor.phone,\n hospital: doctor.hospital,\n department: doctor.department,\n role: doctor.role,\n publicKey: doctor.publicKey[0],\n }));\n\n setUsers(formattedUsers);\n setPagination((prev) => ({\n ...prev,\n total: Number(result.total.toString()),\n }));\n } catch (error) {\n message.error(\n \"의사 목록을 불러올 수 없습니다. 네트워크 연결을 확인해주세요.\"\n );\n } finally {\n setLoading(false);\n }\n };\n\n fetchDoctors();\n }, [pagination.current, pagination.pageSize]);\n\n // 휴대폰 번호 포맷팅 함수\n const formatPhoneNumber = (phone: string) => {\n const cleaned = phone.replace(/\\D/g, \"\");\n if (cleaned.length === 11) {\n return `${cleaned.slice(0, 3)}-${cleaned.slice(3, 7)}-${cleaned.slice(\n 7\n )}`;\n }\n if (cleaned.length === 10) {\n return `${cleaned.slice(0, 3)}-${cleaned.slice(3, 6)}-${cleaned.slice(\n 6\n )}`;\n }\n return phone;\n };\n\n const columns: ColumnsType = [\n { title: \"ID\", dataIndex: \"id\", key: \"id\" },\n { title: \"이름\", dataIndex: \"name\", key: \"name\" },\n { title: \"이메일\", dataIndex: \"email\", key: \"email\" },\n {\n title: \"전화번호\",\n dataIndex: \"phone\",\n key: \"phone\",\n width: 130,\n render: (phone: string) => formatPhoneNumber(phone),\n },\n { title: \"병원\", dataIndex: \"hospital\", key: \"hospital\" },\n { title: \"부서\", dataIndex: \"department\", key: \"department\" },\n { title: \"권한\", dataIndex: \"role\", key: \"role\" },\n {\n title: \"Public Key\",\n dataIndex: \"publicKey\",\n key: \"publicKey\",\n width: 300,\n render: (publicKey: string) =>\n publicKey ? (\n {\n navigator.clipboard.writeText(publicKey);\n message.success(\"Public Key가 클립보드에 복사되었습니다.\");\n }}\n title={publicKey}\n >\n \n {publicKey.substring(0, 15)}...\n \n \n \n ) : (\n 최초 로그인 대기\n ),\n },\n {\n title: \"작업\",\n key: \"action\",\n render: (_, record) => (\n \n }\n onClick={() => handleEdit(record)}\n >\n 수정\n \n }\n onClick={() => handleDelete(record.id)}\n >\n 삭제\n \n \n ),\n },\n ];\n\n const handleAdd = () => {\n setEditingUser(null);\n form.resetFields();\n setIsModalVisible(true);\n };\n\n const handleEdit = (user: FormattedDoctor) => {\n setEditingUser(user);\n form.setFieldsValue(user);\n setIsModalVisible(true);\n };\n\n const handleDelete = async (id: number) => {\n if (!backendActor) {\n message.error(\"시스템에 연결할 수 없습니다. 잠시 후 다시 시도해주세요.\");\n return;\n }\n\n Modal.confirm({\n title: \"사용자를 삭제하시겠습니까?\",\n content: \"이 작업은 되돌릴 수 없습니다.\",\n async onOk() {\n try {\n const result = await backendActor.deleteDoctor(id);\n if (\"ok\" in result) {\n setUsers(users.filter((user) => user.id !== id));\n message.success(\"사용자가 삭제되었습니다.\");\n } else {\n message.error(\n \"사용자 삭제 중 문제가 발생했습니다. 잠시 후 다시 시도해주세요.\"\n );\n }\n } catch (error) {\n message.error(\n \"사용자 삭제 중 문제가 발생했습니다. 잠시 후 다시 시도해주세요.\"\n );\n }\n },\n });\n };\n\n const handleModalOk = async () => {\n if (!backendActor) {\n message.error(\"시스템에 연결할 수 없습니다. 잠시 후 다시 시도해주세요.\");\n return;\n }\n\n try {\n const values = await form.validateFields();\n const doctor = {\n id: editingUser ? BigInt(editingUser.id) : BigInt(0),\n name: values.name,\n email: values.email,\n phone: values.phone,\n hospital: values.hospital,\n department: values.department,\n role: values.role,\n publicKey: editingUser?.publicKey ? [editingUser.publicKey] : [],\n };\n\n const result = editingUser\n ? await backendActor.updateDoctor(doctor)\n : await backendActor.createDoctor(doctor);\n\n if (\"ok\" in result) {\n const newUser = {\n id: Number(result.ok.id),\n name: result.ok.name,\n email: result.ok.email,\n phone: result.ok.phone,\n hospital: result.ok.hospital,\n department: result.ok.department,\n role: result.ok.role,\n key: result.ok.id.toString(),\n publicKey: result.ok.publicKey[0] || undefined,\n };\n\n setUsers((prev) => {\n if (editingUser) {\n const index = prev.findIndex((user) => user.id === editingUser.id);\n if (index > -1) {\n const newUsers = [...prev];\n newUsers[index] = newUser;\n return newUsers;\n }\n }\n return [...prev, newUser];\n });\n\n setIsModalVisible(false);\n message.success(`사용자가 ${editingUser ? \"수정\" : \"추가\"}되었습니다.`);\n } else {\n message.error(\n `사용자 ${editingUser ? \"수정\" : \"추가\"}에 실패했습니다: ` +\n result.err\n );\n }\n } catch (error) {\n message.error(\n \"사용자 정보 저장 중 문제가 발생했습니다. 입력하신 정보를 다시 확인해주세요.\"\n );\n }\n };\n\n return (\n
\n
\n \n
\n\n ({\n ...column,\n align: column.key === \"action\" ? \"center\" : \"left\",\n ellipsis: column.key !== \"action\",\n render:\n column.key === \"publicKey\"\n ? (publicKey: string) =>\n publicKey ? (\n {\n navigator.clipboard.writeText(publicKey);\n message.success(\n \"Public Key가 클립보드에 복사되었습니다.\"\n );\n }}\n title={publicKey}\n >\n {publicKey.substring(0, 15)}...\n \n
\n ) : (\n 최초 로그인 대기\n )\n : column.key === \"role\"\n ? (role: string) => (\n \n {role === \"admin\" ? \"관리자\" : \"일반 사용자\"}\n \n )\n : column.render,\n }))}\n dataSource={users}\n rowKey=\"id\"\n loading={loading}\n pagination={{\n ...pagination,\n showSizeChanger: true,\n showTotal: (total, range) =>\n `전체 ${total}개 중 ${range[0]}-${range[1]}`,\n onChange: (page, pageSize) => {\n setPagination((prev) => ({\n ...prev,\n current: page,\n pageSize: pageSize,\n }));\n },\n }}\n scroll={{ x: \"max-content\" }}\n />\n\n setIsModalVisible(false)}\n width={520}\n style={{ top: 20 }}\n styles={{\n body: {\n padding: \"24px\",\n maxHeight: \"calc(100vh - 200px)\",\n overflow: \"auto\",\n background: \"white\",\n borderRadius: \"8px\",\n },\n }}\n >\n \n {editingUser && (\n \n \n \n )}\n \n \n \n
\n \n \n \n \n {\n // 자동으로 하이픈 추가\n const value = e.target.value.replace(/[^0-9]/g, \"\");\n if (value.length <= 11) {\n let formattedValue = value;\n if (value.length > 3) {\n formattedValue = value.slice(0, 3) + \"-\" + value.slice(3);\n }\n if (value.length > 7) {\n formattedValue =\n formattedValue.slice(0, 8) +\n \"-\" +\n formattedValue.slice(8);\n }\n form.setFieldsValue({ phone: formattedValue });\n }\n }}\n placeholder=\"010-0000-0000\"\n />\n \n
\n
\n \n \n \n \n \n \n
\n \n \n \n \n \n \n );\n};\n\nexport default UserManagement;\n","import { Result } from \"antd\";\n\nconst HospitalManagement = () => {\n return (\n \n );\n};\n\nexport default HospitalManagement;\n","import { BrowserRouter, Routes, Route, Navigate } from \"react-router-dom\";\nimport Home from \"./pages/Home/Home\";\nimport DoctorList from \"./pages/DoctorList/DoctorList\";\nimport MedicalData from \"./pages/MedicalData/MedicalData\";\nimport Login from \"./pages/Login/Login\";\nimport { AuthProvider, useAuth } from \"./contexts/AuthContext\";\nimport { Web3AuthProvider } from \"./contexts/Web3AuthContext\";\nimport PrivateRoute from \"./components/PrivateRoute\";\nimport UserManagement from \"./pages/UserManagement/UserManagement\";\nimport HospitalManagement from \"./pages/HospitalManagement/HospitalManagement\";\nimport {\n Layout,\n Badge,\n Button,\n Modal,\n List,\n Typography,\n App as AntApp,\n} from \"antd\";\nimport { BellOutlined } from \"@ant-design/icons\";\nimport { useState } from \"react\";\n\n// 내부 컴포넌트: AuthProvider 내부에서 useAuth 사용\nfunction AppContent() {\n const { notifications, unreadCount, markNotificationAsRead } = useAuth();\n const [isNotificationModalVisible, setIsNotificationModalVisible] =\n useState(false);\n\n const handleNotificationClick = (notificationId: string) => {\n markNotificationAsRead(notificationId);\n };\n\n return (\n \n 0 ? `(${unreadCount})` : \"\"}`}\n open={isNotificationModalVisible}\n onCancel={() => setIsNotificationModalVisible(false)}\n footer={null}\n width={400}\n >\n (\n handleNotificationClick(notification.id)}\n style={{\n cursor: \"pointer\",\n backgroundColor: notification.read ? \"white\" : \"#f0f7ff\",\n padding: \"12px\",\n borderRadius: \"4px\",\n marginBottom: \"8px\",\n transition: \"background-color 0.3s ease\",\n }}\n className=\"notification-item\"\n >\n \n {notification.message}\n
\n \n {new Date(notification.timestamp).toLocaleString()}\n \n \n }\n />\n \n )}\n locale={{ emptyText: \"새로운 알림이 없습니다\" }}\n style={{ maxHeight: \"400px\", overflowY: \"auto\" }}\n />\n \n\n \n } />\n } />\n }>\n setIsNotificationModalVisible(true)}\n />\n }\n >\n }\n />\n } />\n }\n />\n }\n />\n } />\n }\n />\n \n \n \n
\n );\n}\n\n// 외부 컴포넌트: Provider 설정\nfunction App() {\n return (\n \n \n \n \n \n \n \n );\n}\n\nexport default App;\n","import React from \"react\";\nimport ReactDOM from \"react-dom/client\";\nimport App from \"./App\";\nimport \"antd/dist/reset.css\";\nimport \"./index.scss\";\n\nconst rootElement = document.getElementById(\"root\");\nif (!rootElement) throw new Error(\"Failed to find the root element\");\n\nReactDOM.createRoot(rootElement).render(\n // \n \n // \n);\n"],"file":"assets/index-2369ca75.js"}